[cfe-users] AST matcher behavior question
Rémi Cohen-Scali via cfe-users
cfe-users at lists.llvm.org
Tue Oct 10 23:26:02 PDT 2017
Ok got it! I found my error.
However the findAll matcher is not recognized then is it possible to use
it, Is there some restrictions (that are not in AST Matchers ref) ?
For the little story, the correct matcher for getting all results is
something as:
binaryOperator(hasAncestor(functionDecl(hasName("f"))),hasOperatorName("=")).bind("binop")
With it I got all binary ops, actually what the matcher is looking for :)
Thanks
*-=-=-=-=-*
Rémi COHEN-SCALI* - Direction Technique *Jayacode <http://jayacode.fr/>
+33 665 964 182 <http://tel+33%20665%20964%20182> | Skype: remi.cohen-scali
<https://www.linkedin.com/in/remicohenscali/>
<https://twitter.com/CohenScaliRemi> <https://beta.doodle.com/rcohenscali>
2017-10-10 22:41 GMT+02:00 Rémi Cohen-Scali <remi at jayacode.fr>:
> Hi
>
> I encounter a weird behavior on AST matchers and I'd like to ear what U
> think of it.
> Let get a test file
>
> void f()
> {
> int a, b, c, d;
> a = 1;
> b = 2;
> c = 3;
> d = 4;
> }
>
> Then query the decl matcher:
> functionDecl(hasName("f"),hasBody(hasDescendant(binaryOperator(
> hasOperatorName("=")).bind("binop"))))
>
> I got only the first assignmen
> t (was expecting to get all of them).
>
>
>
>
>
> I tried to add the findAll matcher but got an error.
>
> functionDecl(hasName("f"),hasBody(hasDescendant(findAll(binaryOperator(
> hasOperatorName("=")).bind("binop")))))
>
> Here is the clang-query output:
>
> clang-query> match functionDecl(hasName("f"),hasBody(hasDescendant(
> binaryOperator(hasOperatorName("=")).bind("binop"))))
>
> Match #1:
>
> /tmp/test.c:5:3: note: "binop" binds here
> a = 1;
> ^~~~~
> /tmp/test.c:1:1: note: "root" binds here
> void f()
> ^~~~~~~~
> 1 match.
> clang-query> match functionDecl(hasName("f"),
> hasBody(hasDescendant(findAll(binaryOperator(hasOperatorName("=")).bind("
> binop")))))
> 1:2: Error parsing argument 2 for matcher functionDecl.
> 1:28: Error parsing argument 1 for matcher hasBody.
> 1:36: Error parsing argument 1 for matcher hasDescendant.
> 1:50: Matcher not found: findAll
> clang-query>
>
> Thanks for any help
>
> Rémi
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20171011/3b8105f7/attachment.html>
More information about the cfe-users
mailing list