[cfe-dev] ignoring*() and hasParent() matchers

Manuel Klimek via cfe-dev cfe-dev at lists.llvm.org
Sat Jul 7 08:04:35 PDT 2018


Thanks! You can pay that back by giving a talk about clang tooling from a
user's point of view at some point, as you seem to have mastered the
subject :)

On Sat, 7 Jul 2018, 17:23 Michael Jabbour, <micjabbour at gmail.com> wrote:

> Thanks for the confirmation. I have learned a lot from your great
> talks/presentations :-)
>
> Thanks,
>
> Mike
>
> On 06/07/2018 11:03 AM, Manuel Klimek wrote:
>
> That's what I'd do, too.
>
> On Fri, 6 Jul 2018, 00:50 Michael Jabbour via cfe-dev, <
> cfe-dev at lists.llvm.org> wrote:
>
>> I ended up writing my matcher like this:
>>
>> integerLiteral(
>>   expr().bind("literal"),       //inline bind call using a redundant
>> node matcher
>>   hasAncestor(                  //climb up the AST to the nearest varDecl
>> ancestor
>>
>> varDecl(hasInitializer(ignoringParenCasts(equalsBoundNode("literal"))))
>> //check that this varDecl satisfies the original condition
>>   )
>> )
>>
>> Any feedback is appreciated, as I am completely new to LibTooling...
>>
>> P.S.: The actual matcher I am working on is far more complicated.
>> Inverting it (i.e. using my very first example) would result in much more
>> difficult problems. Although this seems like a roundabout hack, it might be
>> effective when nested inside matchers that have already been tested
>>
>> Thanks,
>>
>> Mike
>>
>> On 05/07/2018 7:31 PM, Michael Jabbour wrote:
>>
>> Hello all,
>>
>> When using has*() it is sometimes desirable to use ignoringParenCasts(),
>> for example (from the docs):
>>
>> varDecl(hasInitializer(ignoringParenCasts(integerLiteral())))
>>
>> Is there any way to get the same effect when hasParent(), e.g.:
>>
>> integerLiteral(hasParent(ignoringParenCasts(varDecl())))
>>
>> Obviously this does not work, but what is the best way to achieve a
>> similar effect?
>>
>> cheers,
>>
>> Mike
>>
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180707/7631acb1/attachment.html>


More information about the cfe-dev mailing list