[cfe-dev] RFC: What does this matcher mean to you?

Gábor Kozár kozargabor at gmail.com
Tue May 21 10:35:20 PDT 2013


I would expect it the equalsBoundNode("declType") to either:
 - raise an error (assertion failure or exception) or
 - check all nodes bound to "declType", and return true if any of them is
equal

Perhaps different variants could be introduced with both behaviors? For
example, equalsBoundNode(string) would only work if there is exactly one
node bound to the specified name, while equalsAnyBoundNode(string) would
look for equality in any node bound to the specified name.


2013/5/21 Vane, Edwin <edwin.vane at intel.com>

> We're trying to determine the semantics of the proposed new
> 'equalsBoundNode()' matcher. Before I present the aforementioned matcher
> expression let me illustrate what this new matcher does. Given that you've
> bound a node earlier in a matcher expression with a name "X",
> equalsBoundNode("X") allows you to refer back to that bound node and test
> for identity. For example, here's a matcher finding VarDecl's where the
> type matches the initializer type:
>
> varDecl(hasType(qualType().bind("type")),
>
>  hasInitializer(ignoringParenImpCasts(hasType(qualType(equalsBoundNode("type"))))))));
>
> Semantics get more interesting where forEach*() matchers are concerned. So
> this is where I ask: What would you expect the following matcher to do? How
> would you expect it to behave?
>
>     functionDecl(
>       forEachDescendant(
>         ifStmt(
>           forEachDescendant(
>             varDecl(hasType(qualType().bind("declType")))
>           )
>         )
>       ),
>       has(compoundStmt(has(
>         callExpr(
>           callee(
>             functionDecl(
>               returns(qualType(equalsBoundNode("declType")))
>             )
>           )
>         )
>       )))
>     );
>
>
> --
> Edwin Vane
>   Software Developer
>   Intel of Canada, Inc.
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130521/83ff28b2/attachment.html>


More information about the cfe-dev mailing list