[cfe-dev] libclang: traversing initializers in for-range statements

Дмитрий Ермолов epdmitry at yandex.ru
Thu Mar 5 13:55:56 PST 2015


Thanks, for your response.

Will try recent build. As for other problems mentioned on your page, think that I just haven't hit them yet. Hope that your fixes will be accepted.

Thanks,
Dmitry

05.03.2015, 07:08, "jeaye" <contact at jeaye.com>:
>  On Thu, Mar 05, 2015 at 02:15:24AM +0300, Дмитрий Ермолов wrote:
>>   Hi,
>>
>>   I'm trying to use libclang to parse some C++. When I parse source that includes for-range statement like:
>>
>>     int main() {
>>         char a[1000];
>>         for (auto x: a) { // <--- expect to traverse reference to `a` here
>>         ++x;
>>         }
>>     }
>>
>>   I expect to traverse reference to `a` at some point, but it looks like such traversal never happens.
>>
>>   Below is the example my traversal code in Python (actually I write in C++ but situation is similar there) and its output on the sample C++ source.
>>
>>   Am I doing something wrong or such case is not supported by libclang?
>>
>>   Thanks,
>>   Dmitry
>  Dmitry,
>
>  I don't know about your specific case, but I've found multiple
>  incomplete cursor traversal issues in libclang and I've reported them
>  here (along with fixes and test code):
>
>  http://llvm.org/bugs/buglist.cgi?quicksearch=incomplete%20traversal&list_id=68006
>
>  So far, every single one has been ignored (tried IRC, the mailing list several
>  months ago, and now these issues since January).
>
>  In my experimentation, I did find there were issues with range-based for
>  loops, as I've documented here:
>
>  https://github.com/jeaye/color_coded/issues/2
>
>  However, I found that specific issue was fixed some time in January.
>  Still, I'm hoping that this thread can build momentum for the existing
>  issues in libclang which have not been resolved for months.
>
>  Cheers,
>  Jeaye

05.03.2015, 07:08, "jeaye" <contact at jeaye.com>:
> On Thu, Mar 05, 2015 at 02:15:24AM +0300, Дмитрий Ермолов wrote:
>>  Hi,
>>
>>  I'm trying to use libclang to parse some C++. When I parse source that includes for-range statement like:
>>
>>    int main() {
>>        char a[1000];
>>        for (auto x: a) { // <--- expect to traverse reference to `a` here
>>        ++x;
>>        }
>>    }
>>
>>  I expect to traverse reference to `a` at some point, but it looks like such traversal never happens.
>>
>>  Below is the example my traversal code in Python (actually I write in C++ but situation is similar there) and its output on the sample C++ source.
>>
>>  Am I doing something wrong or such case is not supported by libclang?
>>
>>  Thanks,
>>  Dmitry
>
> Dmitry,
>
> I don't know about your specific case, but I've found multiple
> incomplete cursor traversal issues in libclang and I've reported them
> here (along with fixes and test code):
>
> http://llvm.org/bugs/buglist.cgi?quicksearch=incomplete%20traversal&list_id=68006
>
> So far, every single one has been ignored (tried IRC, the mailing list several
> months ago, and now these issues since January).
>
> In my experimentation, I did find there were issues with range-based for
> loops, as I've documented here:
>
> https://github.com/jeaye/color_coded/issues/2
>
> However, I found that specific issue was fixed some time in January.
> Still, I'm hoping that this thread can build momentum for the existing
> issues in libclang which have not been resolved for months.
>
> Cheers,
> Jeaye




More information about the cfe-dev mailing list