From 8c5f948beae22f1b65b8c29b4ba2ac1e3b7dacb5 Mon Sep 17 00:00:00 2001
From: Manuel Klimek
The exception to that rule are matchers that can match on any node. Those are marked with a * and are listed in the beginning of each category.
+Note that the categorization of matchers is a great help when you combine +them into matcher expressions. You will usually want to form matcher expressions +that read like english sentences by alternating between node matchers and +narrowing or traversal matchers, like this: +
+recordDecl(hasDescendant( + ifStmt(hasTrueExpression( + expr(hasDescendant( + ifStmt())))))) ++ +
It is important to remember that the arguments to node matchers are +predicates on the same node, just with additional information about the type. +This is often useful to make matcher expression more readable by inlining bind +calls into redundant node matchers inside another node matcher: +
+// This binds the CXXRecordDecl to "id", as the decl() matcher will stay on +// the same node. +recordDecl(decl().bind("id"), hasName("::MyClass")) ++ +
Return type | Name | Parameters |
---|