Index: docs/LibASTMatchersReference.html =================================================================== --- docs/LibASTMatchersReference.html +++ docs/LibASTMatchersReference.html @@ -111,7 +111,7 @@ -Matcher<Decl>accessSpecDeclMatcher<AccessSpecDecl>... +Matcher<Decl>accessSpecDeclMatcher<AccessSpecDecl>...
Matches C++ access specifier declarations.
 
 Given
@@ -124,7 +124,7 @@
 
-Matcher<Decl>classTemplateDeclMatcher<ClassTemplateDecl>... +Matcher<Decl>classTemplateDeclMatcher<ClassTemplateDecl>...
Matches C++ class template declarations.
 
 Example matches Z
@@ -132,7 +132,7 @@
 
-Matcher<Decl>classTemplateSpecializationDeclMatcher<ClassTemplateSpecializationDecl>... +Matcher<Decl>classTemplateSpecializationDeclMatcher<ClassTemplateSpecializationDecl>...
Matches C++ class template specializations.
 
 Given
@@ -144,7 +144,7 @@
 
-Matcher<Decl>cxxConstructorDeclMatcher<CXXConstructorDecl>... +Matcher<Decl>cxxConstructorDeclMatcher<CXXConstructorDecl>...
Matches C++ constructor declarations.
 
 Example matches Foo::Foo() and Foo::Foo(int)
@@ -157,7 +157,7 @@
 
-Matcher<Decl>cxxConversionDeclMatcher<CXXConversionDecl>... +Matcher<Decl>cxxConversionDeclMatcher<CXXConversionDecl>...
Matches conversion operator declarations.
 
 Example matches the operator.
@@ -165,7 +165,7 @@
 
-Matcher<Decl>cxxDestructorDeclMatcher<CXXDestructorDecl>... +Matcher<Decl>cxxDestructorDeclMatcher<CXXDestructorDecl>...
Matches explicit C++ destructor declarations.
 
 Example matches Foo::~Foo()
@@ -176,7 +176,7 @@
 
-Matcher<Decl>cxxMethodDeclMatcher<CXXMethodDecl>... +Matcher<Decl>cxxMethodDeclMatcher<CXXMethodDecl>...
Matches method declarations.
 
 Example matches y
@@ -184,7 +184,7 @@
 
-Matcher<Decl>cxxRecordDeclMatcher<CXXRecordDecl>... +Matcher<Decl>cxxRecordDeclMatcher<CXXRecordDecl>...
Matches C++ class declarations.
 
 Example matches X, Z
@@ -193,7 +193,7 @@
 
-Matcher<Decl>declMatcher<Decl>... +Matcher<Decl>declMatcher<Decl>...
Matches declarations.
 
 Examples matches X, C, and the friend declaration inside C;
@@ -204,7 +204,7 @@
 
-Matcher<Decl>declaratorDeclMatcher<DeclaratorDecl>... +Matcher<Decl>declaratorDeclMatcher<DeclaratorDecl>...
Matches declarator declarations (field, variable, function
 and non-type template parameter declarations).
 
@@ -215,7 +215,7 @@
 
-Matcher<Decl>enumConstantDeclMatcher<EnumConstantDecl>... +Matcher<Decl>enumConstantDeclMatcher<EnumConstantDecl>...
Matches enum constants.
 
 Example matches A, B, C
@@ -225,7 +225,7 @@
 
-Matcher<Decl>enumDeclMatcher<EnumDecl>... +Matcher<Decl>enumDeclMatcher<EnumDecl>...
Matches enum declarations.
 
 Example matches X
@@ -235,7 +235,7 @@
 
-Matcher<Decl>fieldDeclMatcher<FieldDecl>... +Matcher<Decl>fieldDeclMatcher<FieldDecl>...
Matches field declarations.
 
 Given
@@ -245,7 +245,7 @@
 
-Matcher<Decl>friendDeclMatcher<FriendDecl>... +Matcher<Decl>friendDeclMatcher<FriendDecl>...
Matches friend declarations.
 
 Given
@@ -255,7 +255,7 @@
 
-Matcher<Decl>functionDeclMatcher<FunctionDecl>... +Matcher<Decl>functionDeclMatcher<FunctionDecl>...
Matches function declarations.
 
 Example matches f
@@ -263,7 +263,7 @@
 
-Matcher<Decl>functionTemplateDeclMatcher<FunctionTemplateDecl>... +Matcher<Decl>functionTemplateDeclMatcher<FunctionTemplateDecl>...
Matches C++ function template declarations.
 
 Example matches f
@@ -271,7 +271,7 @@
 
-Matcher<Decl>labelDeclMatcher<LabelDecl>... +Matcher<Decl>labelDeclMatcher<LabelDecl>...
Matches a declaration of label.
 
 Given
@@ -282,7 +282,7 @@
 
-Matcher<Decl>linkageSpecDeclMatcher<LinkageSpecDecl>... +Matcher<Decl>linkageSpecDeclMatcher<LinkageSpecDecl>...
Matches a declaration of a linkage specification.
 
 Given
@@ -292,7 +292,7 @@
 
-Matcher<Decl>namedDeclMatcher<NamedDecl>... +Matcher<Decl>namedDeclMatcher<NamedDecl>...
Matches a declaration of anything that could have a name.
 
 Example matches X, S, the anonymous union type, i, and U;
@@ -305,7 +305,7 @@
 
-Matcher<Decl>namespaceAliasDeclMatcher<NamespaceAliasDecl>... +Matcher<Decl>namespaceAliasDeclMatcher<NamespaceAliasDecl>...
Matches a declaration of a namespace alias.
 
 Given
@@ -316,7 +316,7 @@
 
-Matcher<Decl>namespaceDeclMatcher<NamespaceDecl>... +Matcher<Decl>namespaceDeclMatcher<NamespaceDecl>...
Matches a declaration of a namespace.
 
 Given
@@ -327,7 +327,7 @@
 
-Matcher<Decl>nonTypeTemplateParmDeclMatcher<NonTypeTemplateParmDecl>... +Matcher<Decl>nonTypeTemplateParmDeclMatcher<NonTypeTemplateParmDecl>...
Matches non-type template parameter declarations.
 
 Given
@@ -337,7 +337,7 @@
 
-Matcher<Decl>objcInterfaceDeclMatcher<ObjCInterfaceDecl>... +Matcher<Decl>objcInterfaceDeclMatcher<ObjCInterfaceDecl>...
Matches Objective-C interface declarations.
 
 Example matches Foo
@@ -346,7 +346,7 @@
 
-Matcher<Decl>parmVarDeclMatcher<ParmVarDecl>... +Matcher<Decl>parmVarDeclMatcher<ParmVarDecl>...
Matches parameter variable declarations.
 
 Given
@@ -356,7 +356,7 @@
 
-Matcher<Decl>recordDeclMatcher<RecordDecl>... +Matcher<Decl>recordDeclMatcher<RecordDecl>...
Matches class, struct, and union declarations.
 
 Example matches X, Z, U, and S
@@ -367,7 +367,7 @@
 
-Matcher<Decl>staticAssertDeclMatcher<StaticAssertDecl>... +Matcher<Decl>staticAssertDeclMatcher<StaticAssertDecl>...
Matches a C++ static_assert declaration.
 
 Example:
@@ -382,7 +382,7 @@
 
-Matcher<Decl>templateTypeParmDeclMatcher<TemplateTypeParmDecl>... +Matcher<Decl>templateTypeParmDeclMatcher<TemplateTypeParmDecl>...
Matches template type parameter declarations.
 
 Given
@@ -392,7 +392,7 @@
 
-Matcher<Decl>translationUnitDeclMatcher<TranslationUnitDecl>... +Matcher<Decl>translationUnitDeclMatcher<TranslationUnitDecl>...
Matches the top declaration context.
 
 Given
@@ -405,7 +405,7 @@
 
-Matcher<Decl>typeAliasDeclMatcher<TypeAliasDecl>... +Matcher<Decl>typeAliasDeclMatcher<TypeAliasDecl>...
Matches type alias declarations.
 
 Given
@@ -416,7 +416,7 @@
 
-Matcher<Decl>typedefDeclMatcher<TypedefDecl>... +Matcher<Decl>typedefDeclMatcher<TypedefDecl>...
Matches typedef declarations.
 
 Given
@@ -427,7 +427,7 @@
 
-Matcher<Decl>typedefNameDeclMatcher<TypedefNameDecl>... +Matcher<Decl>typedefNameDeclMatcher<TypedefNameDecl>...
Matches typedef name declarations.
 
 Given
@@ -438,7 +438,7 @@
 
-Matcher<Decl>unresolvedUsingTypenameDeclMatcher<UnresolvedUsingTypenameDecl>... +Matcher<Decl>unresolvedUsingTypenameDeclMatcher<UnresolvedUsingTypenameDecl>...
Matches unresolved using value declarations that involve the
 typename.
 
@@ -454,7 +454,7 @@
   matches using Base<T>::Foo 
-Matcher<Decl>unresolvedUsingValueDeclMatcher<UnresolvedUsingValueDecl>... +Matcher<Decl>unresolvedUsingValueDeclMatcher<UnresolvedUsingValueDecl>...
Matches unresolved using value declarations.
 
 Given
@@ -466,7 +466,7 @@
   matches using X::x 
-Matcher<Decl>usingDeclMatcher<UsingDecl>... +Matcher<Decl>usingDeclMatcher<UsingDecl>...
Matches using declarations.
 
 Given
@@ -476,7 +476,7 @@
   matches using X::x 
-Matcher<Decl>usingDirectiveDeclMatcher<UsingDirectiveDecl>... +Matcher<Decl>usingDirectiveDeclMatcher<UsingDirectiveDecl>...
Matches using namespace declarations.
 
 Given
@@ -486,7 +486,7 @@
   matches using namespace X 
-Matcher<Decl>valueDeclMatcher<ValueDecl>... +Matcher<Decl>valueDeclMatcher<ValueDecl>...
Matches any value declaration.
 
 Example matches A, B, C and F
@@ -495,7 +495,7 @@
 
-Matcher<Decl>varDeclMatcher<VarDecl>... +Matcher<Decl>varDeclMatcher<VarDecl>...
Matches variable declarations.
 
 Note: this does not match declarations of member variables, which are
@@ -1654,7 +1654,7 @@
 
-Matcher<Type>templateSpecializationTypeMatcher<TemplateSpecializationType>... +Matcher<Type>templateSpecializationTypeMatcher<TemplateSpecializationType>...
Matches template specialization types.
 
 Given
@@ -2284,7 +2284,7 @@
 
-Matcher<Decl>equalsBoundNodestd::string ID +Matcher<Decl>equalsBoundNodestd::string ID
Matches if a node equals a previously bound node.
 
 Matches a node if it equals the node previously bound to ID.
@@ -2307,14 +2307,14 @@
 
-Matcher<Decl>equalsNodeconst Decl* Other +Matcher<Decl>equalsNodeconst Decl* Other
Matches if a node equals another node.
 
 Decl has pointer identity in the AST.
 
-Matcher<Decl>hasAttrattr::Kind AttrKind +Matcher<Decl>hasAttrattr::Kind AttrKind
Matches declaration that has a given attribute.
 
 Given
@@ -2325,7 +2325,7 @@
 
-Matcher<Decl>isExpansionInFileMatchingstd::string RegExp +Matcher<Decl>isExpansionInFileMatchingstd::string RegExp
Matches AST nodes that were expanded within files whose name is
 partially matching a given regex.
 
@@ -2336,11 +2336,11 @@
 ASTMatcher.h:
   class Y {};
 
-Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
+Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
 
-Matcher<Decl>isExpansionInMainFile +Matcher<Decl>isExpansionInMainFile
Matches AST nodes that were expanded within the main-file.
 
 Example matches X but not Y
@@ -2350,11 +2350,11 @@
 Y.h:
   class Y {};
 
-Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
+Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
 
-Matcher<Decl>isExpansionInSystemHeader +Matcher<Decl>isExpansionInSystemHeader
Matches AST nodes that were expanded within system-header-files.
 
 Example matches Y but not X
@@ -2364,17 +2364,17 @@
 SystemHeader.h:
   class Y {};
 
-Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
+Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
 
-Matcher<Decl>isImplicit +Matcher<Decl>isImplicit
Matches a declaration that has been implicitly added
 by the compiler (eg. implicit defaultcopy constructors).
 
-Matcher<Decl>isPrivate +Matcher<Decl>isPrivate
Matches private C++ declarations.
 
 Given
@@ -2388,7 +2388,7 @@
 
-Matcher<Decl>isProtected +Matcher<Decl>isProtected
Matches protected C++ declarations.
 
 Given
@@ -2402,7 +2402,7 @@
 
-Matcher<Decl>isPublic +Matcher<Decl>isPublic
Matches public C++ declarations.
 
 Given
@@ -3128,7 +3128,7 @@
 ASTMatcher.h:
   class Y {};
 
-Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
+Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
 
@@ -3142,7 +3142,7 @@ Y.h: class Y {}; -Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc> +Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc> @@ -3156,7 +3156,7 @@ SystemHeader.h: class Y {}; -Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc> +Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc> @@ -3221,7 +3221,7 @@ -Matcher<TemplateSpecializationType>templateArgumentCountIsunsigned N +Matcher<TemplateSpecializationType>templateArgumentCountIsunsigned N
Matches if the number of template arguments equals N.
 
 Given
@@ -3243,7 +3243,7 @@
 ASTMatcher.h:
   class Y {};
 
-Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
+Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc>
 
@@ -3257,7 +3257,7 @@ Y.h: class Y {}; -Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc> +Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc> @@ -3271,7 +3271,7 @@ SystemHeader.h: class Y {}; -Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc> +Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc> @@ -3531,7 +3531,7 @@ -Matcher<internal::Matcher<Decl>>isInstantiated +Matcher<internal::Matcher<Decl>>isInstantiated
Matches declarations that are template instantiations or are inside
 template instantiations.
 
@@ -3759,7 +3759,7 @@
 
-Matcher<AddrLabelExpr>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<AddrLabelExpr>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -3777,7 +3777,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -3991,7 +3991,7 @@ -Matcher<CXXConstructExpr>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<CXXConstructExpr>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -4009,7 +4009,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -4121,17 +4121,17 @@ -Matcher<CXXMemberCallExpr>thisPointerTypeMatcher<Decl> InnerMatcher -
Overloaded to match the type's declaration.
-
- - Matcher<CXXMemberCallExpr>thisPointerTypeMatcher<QualType> InnerMatcher
Matches if the expression's type either matches the specified
 matcher, or is a pointer to a type that matches the InnerMatcher.
 
+Matcher<CXXMemberCallExpr>thisPointerTypeMatcher<Decl> InnerMatcher +
Overloaded to match the type's declaration.
+
+ + Matcher<CXXMethodDecl>forEachOverriddenMatcher<CXXMethodDecl> InnerMatcher
Matches each method overriden by the given method. This matcher may
 produce multiple matches.
@@ -4175,7 +4175,7 @@
 
-Matcher<CXXNewExpr>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<CXXNewExpr>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -4193,7 +4193,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -4238,17 +4238,6 @@ -Matcher<CallExpr>calleeMatcher<Decl> InnerMatcher -
Matches if the call expression's callee's declaration matches the
-given matcher.
-
-Example matches y.x() (matcher = callExpr(callee(
-                                   cxxMethodDecl(hasName("x")))))
-  class Y { public: void x(); };
-  void z() { Y y; y.x(); }
-
- - Matcher<CallExpr>calleeMatcher<Stmt> InnerMatcher
Matches if the call expression's callee expression matches.
 
@@ -4262,11 +4251,22 @@
 
 Note: Callee cannot take the more general internal::Matcher<Expr>
 because this introduces ambiguous overloads with calls to Callee taking a
-internal::Matcher<Decl>, as the matcher hierarchy is purely
+internal::Matcher<Decl>, as the matcher hierarchy is purely
 implemented in terms of implicit casts.
 
+Matcher<CallExpr>calleeMatcher<Decl> InnerMatcher +
Matches if the call expression's callee's declaration matches the
+given matcher.
+
+Example matches y.x() (matcher = callExpr(callee(
+                                   cxxMethodDecl(hasName("x")))))
+  class Y { public: void x(); };
+  void z() { Y y; y.x(); }
+
+ + Matcher<CallExpr>forEachArgumentWithParamMatcher<Expr> ArgMatcher, Matcher<ParmVarDecl> ParamMatcher
Matches all arguments and their respective ParmVarDecl.
 
@@ -4310,7 +4310,7 @@
 
-Matcher<CallExpr>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<CallExpr>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -4328,7 +4328,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -4439,7 +4439,7 @@ -Matcher<DeclRefExpr>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<DeclRefExpr>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -4457,7 +4457,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -4479,7 +4479,7 @@ -Matcher<DeclRefExpr>toMatcher<Decl> InnerMatcher +Matcher<DeclRefExpr>toMatcher<Decl> InnerMatcher
Matches a DeclRefExpr that refers to a declaration that matches the
 specified matcher.
 
@@ -4490,7 +4490,7 @@
 
-Matcher<DeclStmt>containsDeclarationunsigned N, Matcher<Decl> InnerMatcher +Matcher<DeclStmt>containsDeclarationunsigned N, Matcher<Decl> InnerMatcher
Matches the n'th declaration of a declaration statement.
 
 Note that this does not work for global declarations because the AST
@@ -4509,7 +4509,7 @@
 
-Matcher<DeclStmt>hasSingleDeclMatcher<Decl> InnerMatcher +Matcher<DeclStmt>hasSingleDeclMatcher<Decl> InnerMatcher
Matches the Decl of a DeclStmt which has a single declaration.
 
 Given
@@ -4531,7 +4531,7 @@
 
-Matcher<Decl>hasDeclContextMatcher<Decl> InnerMatcher +Matcher<Decl>hasDeclContextMatcher<Decl> InnerMatcher
Matches declarations whose declaration context, interpreted as a
 Decl, matches InnerMatcher.
 
@@ -4603,7 +4603,7 @@
 
-Matcher<EnumType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<EnumType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -4621,7 +4621,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -4635,7 +4635,20 @@ -Matcher<Expr>hasTypeMatcher<Decl> InnerMatcher +Matcher<Expr>hasTypeMatcher<QualType> InnerMatcher +
Matches if the expression's or declaration's type matches a type
+matcher.
+
+Example matches x (matcher = expr(hasType(cxxRecordDecl(hasName("X")))))
+            and z (matcher = varDecl(hasType(cxxRecordDecl(hasName("X")))))
+            and U (matcher = typedefDecl(hasType(asString("int")))
+ class X {};
+ void y(X &x) { x; X z; }
+ typedef int U;
+
+ + +Matcher<Expr>hasTypeMatcher<Decl> InnerMatcher
Overloaded to match the declaration of the expression's or value
 declaration's type.
 
@@ -4654,19 +4667,6 @@
 
-Matcher<Expr>hasTypeMatcher<QualType> InnerMatcher -
Matches if the expression's or declaration's type matches a type
-matcher.
-
-Example matches x (matcher = expr(hasType(cxxRecordDecl(hasName("X")))))
-            and z (matcher = varDecl(hasType(cxxRecordDecl(hasName("X")))))
-            and U (matcher = typedefDecl(hasType(asString("int")))
- class X {};
- void y(X &x) { x; X z; }
- typedef int U;
-
- - Matcher<Expr>ignoringImpCastsMatcher<Expr> InnerMatcher
Matches expressions that match InnerMatcher after any implicit casts
 are stripped off.
@@ -4951,7 +4951,7 @@
 
-Matcher<InjectedClassNameType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<InjectedClassNameType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -4969,13 +4969,13 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
-Matcher<LabelStmt>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<LabelStmt>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -4993,13 +4993,13 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
-Matcher<MemberExpr>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<MemberExpr>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -5017,7 +5017,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -5183,7 +5183,7 @@

 
 
-Matcher<OverloadExpr>hasAnyDeclarationMatcher<Decl> InnerMatcher
+Matcher<OverloadExpr>hasAnyDeclarationMatcher<Decl> InnerMatcher
 
Matches an OverloadExpr if any of the declarations in the set of
 overloads matches the given matcher.
 
@@ -5259,7 +5259,7 @@
 
-Matcher<QualType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<QualType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -5277,7 +5277,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -5294,11 +5294,6 @@ -Matcher<QualType>pointsToMatcher<Decl> InnerMatcher -
Overloaded to match the pointee type's declaration.
-
- - Matcher<QualType>pointsToMatcher<QualType> InnerMatcher
Matches if the matched type is a pointer type and the pointee type
 matches the specified matcher.
@@ -5311,8 +5306,8 @@
 
-Matcher<QualType>referencesMatcher<Decl> InnerMatcher -
Overloaded to match the referenced type's declaration.
+Matcher<QualType>pointsToMatcher<Decl> InnerMatcher
+
Overloaded to match the pointee type's declaration.
 
@@ -5331,7 +5326,12 @@
-Matcher<RecordType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<QualType>referencesMatcher<Decl> InnerMatcher +
Overloaded to match the referenced type's declaration.
+
+ + +Matcher<RecordType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -5349,7 +5349,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -5474,7 +5474,7 @@ -Matcher<TagType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<TagType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -5492,7 +5492,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -5512,7 +5512,7 @@ -Matcher<TemplateArgument>refersToDeclarationMatcher<Decl> InnerMatcher +Matcher<TemplateArgument>refersToDeclarationMatcher<Decl> InnerMatcher
Matches a canonical TemplateArgument that refers to a certain
 declaration.
 
@@ -5565,7 +5565,7 @@
 
-Matcher<TemplateSpecializationType>hasAnyTemplateArgumentMatcher<TemplateArgument> InnerMatcher +Matcher<TemplateSpecializationType>hasAnyTemplateArgumentMatcher<TemplateArgument> InnerMatcher
Matches classTemplateSpecializations, templateSpecializationType and
 functionDecl that have at least one TemplateArgument matching the given
 InnerMatcher.
@@ -5587,7 +5587,7 @@
 
-Matcher<TemplateSpecializationType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<TemplateSpecializationType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -5605,13 +5605,13 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
-Matcher<TemplateSpecializationType>hasTemplateArgumentunsigned N, Matcher<TemplateArgument> InnerMatcher +Matcher<TemplateSpecializationType>hasTemplateArgumentunsigned N, Matcher<TemplateArgument> InnerMatcher
Matches classTemplateSpecializations, templateSpecializationType and
 functionDecl where the n'th TemplateArgument matches the given InnerMatcher.
 
@@ -5631,7 +5631,7 @@
 
-Matcher<TemplateTypeParmType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<TemplateTypeParmType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -5649,7 +5649,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -5684,7 +5684,7 @@ -Matcher<TypedefType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<TypedefType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -5702,7 +5702,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -5739,7 +5739,7 @@ -Matcher<UnresolvedUsingType>hasDeclarationMatcher<Decl> InnerMatcher +Matcher<UnresolvedUsingType>hasDeclarationMatcher<Decl> InnerMatcher
Matches a node if the declaration associated with that node
 matches the given matcher.
 
@@ -5757,7 +5757,7 @@
   Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
   Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
   Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
-  Matcher<TagType>, Matcher<TemplateSpecializationType>,
+  Matcher<TagType>, Matcher<TemplateSpecializationType>,
   Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
   Matcher<UnresolvedUsingType>
 
@@ -5785,7 +5785,20 @@ matches using X::b but not using X::a -Matcher<ValueDecl>hasTypeMatcher<Decl> InnerMatcher +Matcher<ValueDecl>hasTypeMatcher<QualType> InnerMatcher +
Matches if the expression's or declaration's type matches a type
+matcher.
+
+Example matches x (matcher = expr(hasType(cxxRecordDecl(hasName("X")))))
+            and z (matcher = varDecl(hasType(cxxRecordDecl(hasName("X")))))
+            and U (matcher = typedefDecl(hasType(asString("int")))
+ class X {};
+ void y(X &x) { x; X z; }
+ typedef int U;
+
+ + +Matcher<ValueDecl>hasTypeMatcher<Decl> InnerMatcher
Overloaded to match the declaration of the expression's or value
 declaration's type.
 
@@ -5804,19 +5817,6 @@
 
-Matcher<ValueDecl>hasTypeMatcher<QualType> InnerMatcher -
Matches if the expression's or declaration's type matches a type
-matcher.
-
-Example matches x (matcher = expr(hasType(cxxRecordDecl(hasName("X")))))
-            and z (matcher = varDecl(hasType(cxxRecordDecl(hasName("X")))))
-            and U (matcher = typedefDecl(hasType(asString("int")))
- class X {};
- void y(X &x) { x; X z; }
- typedef int U;
-
- - Matcher<VarDecl>hasInitializerMatcher<Expr> InnerMatcher
Matches a variable declaration that has an initializer expression
 that matches the given matcher.