Author: klimek
Date: Thu Dec  1 09:45:06 2016
New Revision: 288366

URL: http://llvm.org/viewvc/llvm-project?rev=288366&view=rev
Log:
Adds hasUnqualifiedDesugaredType to allow matching through type sugar.

Differential Revision: https://reviews.llvm.org/D27207

Modified:
    cfe/trunk/docs/LibASTMatchersReference.html
    cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h
    cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp
    cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp

Modified: cfe/trunk/docs/LibASTMatchersReference.html
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LibASTMatchersReference.html?rev=288366&r1=288365&r2=288366&view=diff
==============================================================================
--- cfe/trunk/docs/LibASTMatchersReference.html (original)
+++ cfe/trunk/docs/LibASTMatchersReference.html Thu Dec  1 09:45:06 2016
@@ -3758,8 +3758,8 @@ Example 2 (conditional binary operator):
 </pre></td></tr>
 
 
-<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration8')"><a 
name="hasDeclaration8Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration8"><pre>Matches a node if 
the declaration associated with that node
+<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration15')"><a 
name="hasDeclaration15Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasDeclaration15"><pre>Matches a node if 
the declaration associated with that node
 matches the given matcher.
 
 The associated declaration is:
@@ -3772,13 +3772,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -4004,13 +4004,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -4174,8 +4174,8 @@ Example matches A() in the last line
 </pre></td></tr>
 
 
-<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration15')"><a 
name="hasDeclaration15Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration15"><pre>Matches a node if 
the declaration associated with that node
+<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration12')"><a 
name="hasDeclaration12Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasDeclaration12"><pre>Matches a node if 
the declaration associated with that node
 matches the given matcher.
 
 The associated declaration is:
@@ -4188,13 +4188,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -4323,13 +4323,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -4438,8 +4438,8 @@ with compoundStmt()
 </pre></td></tr>
 
 
-<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration12')"><a 
name="hasDeclaration12Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration12"><pre>Matches a node if 
the declaration associated with that node
+<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration11')"><a 
name="hasDeclaration11Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasDeclaration11"><pre>Matches a node if 
the declaration associated with that node
 matches the given matcher.
 
 The associated declaration is:
@@ -4452,13 +4452,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -4602,8 +4602,8 @@ declaration of d.
 </pre></td></tr>
 
 
-<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration11')"><a 
name="hasDeclaration11Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration11"><pre>Matches a node if 
the declaration associated with that node
+<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration10')"><a 
name="hasDeclaration10Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasDeclaration10"><pre>Matches a node if 
the declaration associated with that node
 matches the given matcher.
 
 The associated declaration is:
@@ -4616,13 +4616,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -4934,8 +4934,8 @@ FIXME: Unit test this matcher
 </pre></td></tr>
 
 
-<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration10')"><a 
name="hasDeclaration10Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration10"><pre>Matches a node if 
the declaration associated with that node
+<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration9')"><a 
name="hasDeclaration9Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasDeclaration9"><pre>Matches a node if 
the declaration associated with that node
 matches the given matcher.
 
 The associated declaration is:
@@ -4948,18 +4948,18 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
-<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration9')"><a 
name="hasDeclaration9Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
-<tr><td colspan="4" class="doc" id="hasDeclaration9"><pre>Matches a node if 
the declaration associated with that node
+<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;</td><td
 class="name" onclick="toggle('hasDeclaration8')"><a 
name="hasDeclaration8Anchor">hasDeclaration</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html";>Decl</a>&gt;  
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasDeclaration8"><pre>Matches a node if 
the declaration associated with that node
 matches the given matcher.
 
 The associated declaration is:
@@ -4972,13 +4972,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -4996,13 +4996,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -5256,13 +5256,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -5328,13 +5328,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -5457,13 +5457,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -5570,13 +5570,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -5614,13 +5614,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 
@@ -5667,13 +5667,25 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+</pre></td></tr>
+
+
+<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt;</td><td
 class="name" onclick="toggle('hasUnqualifiedDesugaredType0')"><a 
name="hasUnqualifiedDesugaredType0Anchor">hasUnqualifiedDesugaredType</a></td><td>Matcher&lt;<a
 href="http://clang.llvm.org/doxygen/classclang_1_1Type.html";>Type</a>&gt; 
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasUnqualifiedDesugaredType0"><pre>Matches 
if the matched type matches the unqualified desugared
+type of the matched node.
+
+For example, in:
+  class A {};
+  using B = A;
+The matcher type(hasUniqualifeidDesugaredType(recordType())) matches
+both B and A.
 </pre></td></tr>
 
 
@@ -5710,13 +5722,13 @@ The associated declaration is:
 Also usable as Matcher&lt;T&gt; for any T supporting the getDecl() member
 function. e.g. various subtypes of clang::Type and various expressions.
 
-Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
-  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
+Usable as: Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html";>AddrLabelExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html";>CallExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html";>CXXConstructExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html";>CXXNewExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html";>DeclRefExpr</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html";>EnumType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html";>InjectedClassNameType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html";>LabelStmt</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html";>MemberExpr</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html";>QualType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html";>RecordType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html";>TagType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html";>TemplateSpecializationType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html";>TemplateTypeParmType</a>&gt;,
 Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html";>TypedefType</a>&gt;,
+  Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html";>UnresolvedUsingType</a>&gt;
 </pre></td></tr>
 
 

Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=288366&r1=288365&r2=288366&view=diff
==============================================================================
--- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h (original)
+++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Thu Dec  1 09:45:06 2016
@@ -2738,6 +2738,22 @@ AST_MATCHER_P_OVERLOAD(QualType, pointsT
       .matches(Node, Finder, Builder);
 }
 
+/// \brief Matches if the matched type matches the unqualified desugared
+/// type of the matched node.
+///
+/// For example, in:
+/// \code
+///   class A {};
+///   using B = A;
+/// \endcode
+/// The matcher type(hasUniqualifeidDesugaredType(recordType())) matches
+/// both B and A.
+AST_MATCHER_P(Type, hasUnqualifiedDesugaredType, internal::Matcher<Type>,
+              InnerMatcher) {
+  return InnerMatcher.matches(*Node.getUnqualifiedDesugaredType(), Finder,
+                              Builder);
+}
+
 /// \brief Matches if the matched type is a reference type and the referenced
 /// type matches the specified matcher.
 ///

Modified: cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp?rev=288366&r1=288365&r2=288366&view=diff
==============================================================================
--- cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp (original)
+++ cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp Thu Dec  1 09:45:06 2016
@@ -270,6 +270,7 @@ RegistryMaps::RegistryMaps() {
   REGISTER_MATCHER(hasUnaryOperand);
   REGISTER_MATCHER(hasUnarySelector);
   REGISTER_MATCHER(hasUnderlyingDecl);
+  REGISTER_MATCHER(hasUnqualifiedDesugaredType);
   REGISTER_MATCHER(hasValueType);
   REGISTER_MATCHER(ifStmt);
   REGISTER_MATCHER(ignoringImplicit);

Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp?rev=288366&r1=288365&r2=288366&view=diff
==============================================================================
--- cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp (original)
+++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTraversalTest.cpp Thu Dec  1 
09:45:06 2016
@@ -247,6 +247,15 @@ TEST(HasDeclaration, HasDeclarationOfCXX
               cxxNewExpr(hasDeclaration(functionDecl(parameterCountIs(1))))));
 }
 
+TEST(HasUnqualifiedDesugaredType, DesugarsUsing) {
+  EXPECT_TRUE(
+      matches("struct A {}; using B = A; B b;",
+              varDecl(hasType(hasUnqualifiedDesugaredType(recordType())))));
+  EXPECT_TRUE(
+      matches("struct A {}; using B = A; using C = B; C b;",
+              varDecl(hasType(hasUnqualifiedDesugaredType(recordType())))));
+}
+
 TEST(HasUnderlyingDecl, Matches) {
   EXPECT_TRUE(matches("namespace N { template <class T> void f(T t); }"
                       "template <class T> void g() { using N::f; f(T()); }",


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to