Author: maskray Date: Mon Jan 22 14:34:15 2018 New Revision: 323157 URL: http://llvm.org/viewvc/llvm-project?rev=323157&view=rev Log: [ASTMatchers] [NFC] Fix code examples
Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D42213 Modified: cfe/trunk/docs/LibASTMatchersReference.html cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Modified: cfe/trunk/docs/LibASTMatchersReference.html URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LibASTMatchersReference.html?rev=323157&r1=323156&r2=323157&view=diff ============================================================================== --- cfe/trunk/docs/LibASTMatchersReference.html (original) +++ cfe/trunk/docs/LibASTMatchersReference.html Mon Jan 22 14:34:15 2018 @@ -700,7 +700,7 @@ Example matches x.y() and y() Given switch(a) { case 42: break; default: break; } caseStmt() - matches 'case 42: break;'. + matches 'case 42:'. </pre></td></tr> @@ -741,7 +741,7 @@ Example match: {1}, (1, 2) <tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html">Stmt</a>></td><td class="name" onclick="toggle('compoundStmt0')"><a name="compoundStmt0Anchor">compoundStmt</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CompoundStmt.html">CompoundStmt</a>>...</td></tr> <tr><td colspan="4" class="doc" id="compoundStmt0"><pre>Matches compound statements. -Example matches '{}' and '{{}}'in 'for (;;) {{}}' +Example matches '{}' and '{{}}' in 'for (;;) {{}}' for (;;) {{}} </pre></td></tr> @@ -1028,7 +1028,7 @@ declStmt() Given switch(a) { case 42: break; default: break; } defaultStmt() - matches 'default: break;'. + matches 'default:'. </pre></td></tr> @@ -1197,9 +1197,9 @@ Example: Given materializeTemporaryExpr() matches 'f()' in these statements T u(f()); g(f()); + f().func(); but does not match f(); - f().func(); </pre></td></tr> @@ -1369,7 +1369,7 @@ substNonTypeTemplateParmExpr() Given switch(a) { case 42: break; default: break; } switchCase() - matches 'case 42: break;' and 'default: break;'. + matches 'case 42:' and 'default:'. </pre></td></tr> @@ -2940,11 +2940,11 @@ Given void j(int i); void k(int x, int y, int z, ...); functionDecl(parameterCountIs(2)) - matches void g(int i, int j) {} + matches g and h functionProtoType(parameterCountIs(2)) - matches void h(int i, int j) + matches g and h functionProtoType(parameterCountIs(3)) - matches void k(int x, int y, int z, ...); + matches k </pre></td></tr> @@ -2990,11 +2990,11 @@ Given void j(int i); void k(int x, int y, int z, ...); functionDecl(parameterCountIs(2)) - matches void g(int i, int j) {} + matches g and h functionProtoType(parameterCountIs(2)) - matches void h(int i, int j) + matches g and h functionProtoType(parameterCountIs(3)) - matches void k(int x, int y, int z, ...); + matches k </pre></td></tr> @@ -3534,7 +3534,7 @@ an arbitrary precision integer. 'Value' representation of that integral value in base 10. Given - template<int T> struct A {}; + template<int T> struct C {}; C<42> c; classTemplateSpecializationDecl( hasAnyTemplateArgument(equalsIntegralValue("42"))) @@ -3546,7 +3546,7 @@ classTemplateSpecializationDecl( <tr><td colspan="4" class="doc" id="isIntegral0"><pre>Matches a TemplateArgument that is an integral value. Given - template<int T> struct A {}; + template<int T> struct C {}; C<42> c; classTemplateSpecializationDecl( hasAnyTemplateArgument(isIntegral())) @@ -3973,10 +3973,11 @@ Usable as: Any Matcher <tr><td colspan="4" class="doc" id="forEachDescendant0"><pre>Matches AST nodes that have descendant AST nodes that match the provided matcher. -Example matches X, A, B, C +Example matches X, A, A::X, B, B::C, B::C::X (matcher = cxxRecordDecl(forEachDescendant(cxxRecordDecl(hasName("X"))))) - class X {}; Matches X, because X::X is a class of name X inside X. - class A { class X {}; }; + class X {}; + class A { class X {}; }; Matches A, because A::X is a class of name + X inside A. class B { class C { class X {}; }; }; DescendantT must be an AST base type. @@ -3999,10 +4000,11 @@ Usable as: Any Matcher <tr><td colspan="4" class="doc" id="forEach0"><pre>Matches AST nodes that have child AST nodes that match the provided matcher. -Example matches X, Y +Example matches X, Y, Y::X, Z::Y, Z::Y::X (matcher = cxxRecordDecl(forEach(cxxRecordDecl(hasName("X"))) - class X {}; Matches X, because X::X is a class of name X inside X. - class Y { class X {}; }; + class X {}; + class Y { class X {}; }; Matches Y, because Y::X is a class of name X + inside Y. class Z { class Y { class X {}; }; }; Does not match Z. ChildT must be an AST base type. @@ -4479,7 +4481,7 @@ matches 'a' in Example matches y.x() (matcher = cxxMemberCallExpr(on(hasType(cxxRecordDecl(hasName("Y")))))) class Y { public: void x(); }; - void z() { Y y; y.x(); }", + void z() { Y y; y.x(); } FIXME: Overload to allow directly matching types? </pre></td></tr> @@ -4795,7 +4797,7 @@ Given A<bool, int> b; A<int, bool> c; - template<typename T> f() {}; + template<typename T> void f() {} void func() { f<int>(); }; classTemplateSpecializationDecl(hasTemplateArgument( 1, refersToType(asString("int")))) @@ -5312,7 +5314,7 @@ Given A<bool, int> b; A<int, bool> c; - template<typename T> f() {}; + template<typename T> void f() {} void func() { f<int>(); }; classTemplateSpecializationDecl(hasTemplateArgument( 1, refersToType(asString("int")))) @@ -6000,8 +6002,8 @@ Usable as: Matcher<<a href="http://cl <tr><td colspan="4" class="doc" id="isExpr0"><pre>Matches a sugar TemplateArgument that refers to a certain expression. Given - template<typename T> struct A {}; - struct B { B* next; }; + struct B { int next; }; + template<int(B::*next_ptr)> struct A {}; A<&B::next> a; templateSpecializationType(hasAnyTemplateArgument( isExpr(hasDescendant(declRefExpr(to(fieldDecl(hasName("next")))))))) @@ -6015,11 +6017,11 @@ templateSpecializationType(hasAnyTemplat declaration. Given - template<typename T> struct A {}; - struct B { B* next; }; + struct B { int next; }; + template<int(B::*next_ptr)> struct A {}; A<&B::next> a; classTemplateSpecializationDecl(hasAnyTemplateArgument( - refersToDeclaration(fieldDecl(hasName("next")))) + refersToDeclaration(fieldDecl(hasName("next"))))) matches the specialization A<&B::next> with fieldDecl(...) matching B::next </pre></td></tr> @@ -6029,7 +6031,7 @@ classTemplateSpecializationDecl(hasAnyTe <tr><td colspan="4" class="doc" id="refersToIntegralType0"><pre>Matches a TemplateArgument that referes to an integral type. Given - template<int T> struct A {}; + template<int T> struct C {}; C<42> c; classTemplateSpecializationDecl( hasAnyTemplateArgument(refersToIntegralType(asString("int")))) @@ -6127,7 +6129,7 @@ Given A<bool, int> b; A<int, bool> c; - template<typename T> f() {}; + template<typename T> void f() {} void func() { f<int>(); }; classTemplateSpecializationDecl(hasTemplateArgument( 1, refersToType(asString("int")))) Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=323157&r1=323156&r2=323157&view=diff ============================================================================== --- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h (original) +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Mon Jan 22 14:34:15 2018 @@ -800,7 +800,7 @@ AST_MATCHER_P(QualType, ignoringParens, /// A<bool, int> b; /// A<int, bool> c; /// -/// template<typename T> f() {}; +/// template<typename T> void f() {} /// void func() { f<int>(); }; /// \endcode /// classTemplateSpecializationDecl(hasTemplateArgument( @@ -880,12 +880,12 @@ AST_MATCHER_P(TemplateArgument, refersTo /// /// Given /// \code -/// template<typename T> struct A {}; -/// struct B { B* next; }; +/// struct B { int next; }; +/// template<int(B::*next_ptr)> struct A {}; /// A<&B::next> a; /// \endcode /// classTemplateSpecializationDecl(hasAnyTemplateArgument( -/// refersToDeclaration(fieldDecl(hasName("next")))) +/// refersToDeclaration(fieldDecl(hasName("next"))))) /// matches the specialization \c A<&B::next> with \c fieldDecl(...) matching /// \c B::next AST_MATCHER_P(TemplateArgument, refersToDeclaration, @@ -899,8 +899,8 @@ AST_MATCHER_P(TemplateArgument, refersTo /// /// Given /// \code -/// template<typename T> struct A {}; -/// struct B { B* next; }; +/// struct B { int next; }; +/// template<int(B::*next_ptr)> struct A {}; /// A<&B::next> a; /// \endcode /// templateSpecializationType(hasAnyTemplateArgument( @@ -917,7 +917,7 @@ AST_MATCHER_P(TemplateArgument, isExpr, /// /// Given /// \code -/// template<int T> struct A {}; +/// template<int T> struct C {}; /// C<42> c; /// \endcode /// classTemplateSpecializationDecl( @@ -932,7 +932,7 @@ AST_MATCHER(TemplateArgument, isIntegral /// /// Given /// \code -/// template<int T> struct A {}; +/// template<int T> struct C {}; /// C<42> c; /// \endcode /// classTemplateSpecializationDecl( @@ -953,7 +953,7 @@ AST_MATCHER_P(TemplateArgument, refersTo /// /// Given /// \code -/// template<int T> struct A {}; +/// template<int T> struct C {}; /// C<42> c; /// \endcode /// classTemplateSpecializationDecl( @@ -1523,11 +1523,11 @@ extern const internal::VariadicDynCastAl /// \code /// T u(f()); /// g(f()); +/// f().func(); /// \endcode /// but does not match /// \code /// f(); -/// f().func(); /// \endcode extern const internal::VariadicDynCastAllOfMatcher<Stmt, MaterializeTemporaryExpr> @@ -1799,7 +1799,7 @@ extern const internal::VariadicDynCastAl /// switch(a) { case 42: break; default: break; } /// \endcode /// switchCase() -/// matches 'case 42: break;' and 'default: break;'. +/// matches 'case 42:' and 'default:'. extern const internal::VariadicDynCastAllOfMatcher<Stmt, SwitchCase> switchCase; /// \brief Matches case statements inside switch statements. @@ -1809,7 +1809,7 @@ extern const internal::VariadicDynCastAl /// switch(a) { case 42: break; default: break; } /// \endcode /// caseStmt() -/// matches 'case 42: break;'. +/// matches 'case 42:'. extern const internal::VariadicDynCastAllOfMatcher<Stmt, CaseStmt> caseStmt; /// \brief Matches default statements inside switch statements. @@ -1819,13 +1819,13 @@ extern const internal::VariadicDynCastAl /// switch(a) { case 42: break; default: break; } /// \endcode /// defaultStmt() -/// matches 'default: break;'. +/// matches 'default:'. extern const internal::VariadicDynCastAllOfMatcher<Stmt, DefaultStmt> defaultStmt; /// \brief Matches compound statements. /// -/// Example matches '{}' and '{{}}'in 'for (;;) {{}}' +/// Example matches '{}' and '{{}}' in 'for (;;) {{}}' /// \code /// for (;;) {{}} /// \endcode @@ -2502,11 +2502,12 @@ extern const internal::ArgumentAdaptingM /// \brief Matches AST nodes that have child AST nodes that match the /// provided matcher. /// -/// Example matches X, Y +/// Example matches X, Y, Y::X, Z::Y, Z::Y::X /// (matcher = cxxRecordDecl(forEach(cxxRecordDecl(hasName("X"))) /// \code -/// class X {}; // Matches X, because X::X is a class of name X inside X. -/// class Y { class X {}; }; +/// class X {}; +/// class Y { class X {}; }; // Matches Y, because Y::X is a class of name X +/// // inside Y. /// class Z { class Y { class X {}; }; }; // Does not match Z. /// \endcode /// @@ -2522,11 +2523,12 @@ extern const internal::ArgumentAdaptingM /// \brief Matches AST nodes that have descendant AST nodes that match the /// provided matcher. /// -/// Example matches X, A, B, C +/// Example matches X, A, A::X, B, B::C, B::C::X /// (matcher = cxxRecordDecl(forEachDescendant(cxxRecordDecl(hasName("X"))))) /// \code -/// class X {}; // Matches X, because X::X is a class of name X inside X. -/// class A { class X {}; }; +/// class X {}; +/// class A { class X {}; }; // Matches A, because A::X is a class of name +/// // X inside A. /// class B { class C { class X {}; }; }; /// \endcode /// @@ -2681,7 +2683,7 @@ AST_MATCHER_P(NamedDecl, hasUnderlyingDe /// (matcher = cxxMemberCallExpr(on(hasType(cxxRecordDecl(hasName("Y")))))) /// \code /// class Y { public: void x(); }; -/// void z() { Y y; y.x(); }", +/// void z() { Y y; y.x(); } /// \endcode /// /// FIXME: Overload to allow directly matching types? @@ -3555,11 +3557,11 @@ AST_MATCHER_P(FunctionDecl, hasAnyParame /// void k(int x, int y, int z, ...); /// \endcode /// functionDecl(parameterCountIs(2)) -/// matches void g(int i, int j) {} +/// matches \c g and \c h /// functionProtoType(parameterCountIs(2)) -/// matches void h(int i, int j) +/// matches \c g and \c h /// functionProtoType(parameterCountIs(3)) -/// matches void k(int x, int y, int z, ...); +/// matches \c k AST_POLYMORPHIC_MATCHER_P(parameterCountIs, AST_POLYMORPHIC_SUPPORTED_TYPES(FunctionDecl, FunctionProtoType), _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits