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

Manuel Klimek via cfe-dev cfe-dev at lists.llvm.org
Fri Jul 6 01:03:08 PDT 2018


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/20180706/1af7ca9d/attachment.html>


More information about the cfe-dev mailing list