forked from OSchip/llvm-project
[ASTMatcher] Add CXXNewExpr support to hasDeclaration
Reviewers: sbenza, lukasza, aaron.ballman, klimek Subscribers: lukasza, sbenza, cfe-commits Differential Revision: https://reviews.llvm.org/D26032 llvm-svn: 285644
This commit is contained in:
parent
9648288c38
commit
7d96c334d2
|
@ -3767,11 +3767,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -3997,11 +3999,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -4170,6 +4174,30 @@ Example matches A() in the last line
|
|||
</pre></td></tr>
|
||||
|
||||
|
||||
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>></td><td class="name" onclick="toggle('hasDeclaration15')"><a name="hasDeclaration15Anchor">hasDeclaration</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>> 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:
|
||||
- for type nodes, the declaration of the underlying type
|
||||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateSpecializationType.html">TemplateSpecializationType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TemplateTypeParmType.html">TemplateTypeParmType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefType.html">TypedefType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingType.html">UnresolvedUsingType</a>>
|
||||
</pre></td></tr>
|
||||
|
||||
|
||||
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXRecordDecl.html">CXXRecordDecl</a>></td><td class="name" onclick="toggle('hasMethod0')"><a name="hasMethod0Anchor">hasMethod</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>> InnerMatcher</td></tr>
|
||||
<tr><td colspan="4" class="doc" id="hasMethod0"><pre>Matches the first method of a class or struct that satisfies InnerMatcher.
|
||||
|
||||
|
@ -4290,11 +4318,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -4417,11 +4447,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -4579,11 +4611,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -4909,11 +4943,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -4931,11 +4967,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -4953,11 +4991,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -5211,11 +5251,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -5281,11 +5323,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -5408,11 +5452,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -5519,11 +5565,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -5561,11 +5609,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -5612,11 +5662,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
@ -5653,11 +5705,13 @@ The associated declaration is:
|
|||
- for CallExpr, the declaration of the callee
|
||||
- for MemberExpr, the declaration of the referenced member
|
||||
- for CXXConstructExpr, the declaration of the constructor
|
||||
- for CXXNewExpr, the declaration of the operator new
|
||||
|
||||
Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
function. e.g. various subtypes of clang::Type and various expressions.
|
||||
|
||||
Usable as: Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CallExpr.html">CallExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXConstructExpr.html">CXXConstructExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXNewExpr.html">CXXNewExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1DeclRefExpr.html">DeclRefExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1EnumType.html">EnumType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1InjectedClassNameType.html">InjectedClassNameType</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1LabelStmt.html">LabelStmt</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1AddrLabelExpr.html">AddrLabelExpr</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1MemberExpr.html">MemberExpr</a>>,
|
||||
Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1QualType.html">QualType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1RecordType.html">RecordType</a>>, Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1TagType.html">TagType</a>>,
|
||||
|
|
|
@ -2450,16 +2450,18 @@ const internal::VariadicOperatorMatcherFunc<1, 1> unless = {
|
|||
/// - for CallExpr, the declaration of the callee
|
||||
/// - for MemberExpr, the declaration of the referenced member
|
||||
/// - for CXXConstructExpr, the declaration of the constructor
|
||||
/// - for CXXNewExpr, the declaration of the operator new
|
||||
///
|
||||
/// Also usable as Matcher<T> for any T supporting the getDecl() member
|
||||
/// function. e.g. various subtypes of clang::Type and various expressions.
|
||||
///
|
||||
/// Usable as: Matcher<CallExpr>, Matcher<CXXConstructExpr>,
|
||||
/// Matcher<DeclRefExpr>, Matcher<EnumType>, Matcher<InjectedClassNameType>,
|
||||
/// Matcher<LabelStmt>, Matcher<AddrLabelExpr>, Matcher<MemberExpr>,
|
||||
/// Matcher<QualType>, Matcher<RecordType>, Matcher<TagType>,
|
||||
/// Matcher<TemplateSpecializationType>, Matcher<TemplateTypeParmType>,
|
||||
/// Matcher<TypedefType>, Matcher<UnresolvedUsingType>
|
||||
/// Usable as: Matcher<AddrLabelExpr>, Matcher<CallExpr>,
|
||||
/// Matcher<CXXConstructExpr>, Matcher<CXXNewExpr>, Matcher<DeclRefExpr>,
|
||||
/// Matcher<EnumType>, Matcher<InjectedClassNameType>, Matcher<LabelStmt>,
|
||||
/// Matcher<MemberExpr>, Matcher<QualType>, Matcher<RecordType>,
|
||||
/// Matcher<TagType>, Matcher<TemplateSpecializationType>,
|
||||
/// Matcher<TemplateTypeParmType>, Matcher<TypedefType>,
|
||||
/// Matcher<UnresolvedUsingType>
|
||||
inline internal::PolymorphicMatcherWithParam1<
|
||||
internal::HasDeclarationMatcher, internal::Matcher<Decl>,
|
||||
void(internal::HasDeclarationSupportedTypes)>
|
||||
|
|
|
@ -787,6 +787,14 @@ private:
|
|||
return matchesDecl(Node.getConstructor(), Finder, Builder);
|
||||
}
|
||||
|
||||
/// \brief Extracts the operator new of the new call and returns whether the
|
||||
/// inner matcher matches on it.
|
||||
bool matchesSpecialized(const CXXNewExpr &Node,
|
||||
ASTMatchFinder *Finder,
|
||||
BoundNodesTreeBuilder *Builder) const {
|
||||
return matchesDecl(Node.getOperatorNew(), Finder, Builder);
|
||||
}
|
||||
|
||||
/// \brief Extracts the \c ValueDecl a \c MemberExpr refers to and returns
|
||||
/// whether the inner matcher matches on it.
|
||||
bool matchesSpecialized(const MemberExpr &Node,
|
||||
|
@ -1007,11 +1015,11 @@ typedef TypeList<Decl, Stmt, NestedNameSpecifier, NestedNameSpecifierLoc,
|
|||
TypeLoc, QualType> AdaptativeDefaultToTypes;
|
||||
|
||||
/// \brief All types that are supported by HasDeclarationMatcher above.
|
||||
typedef TypeList<CallExpr, CXXConstructExpr, DeclRefExpr, EnumType,
|
||||
typedef TypeList<CallExpr, CXXConstructExpr, CXXNewExpr, DeclRefExpr, EnumType,
|
||||
InjectedClassNameType, LabelStmt, AddrLabelExpr, MemberExpr,
|
||||
QualType, RecordType, TagType, TemplateSpecializationType,
|
||||
TemplateTypeParmType, TypedefType,
|
||||
UnresolvedUsingType> HasDeclarationSupportedTypes;
|
||||
TemplateTypeParmType, TypedefType, UnresolvedUsingType>
|
||||
HasDeclarationSupportedTypes;
|
||||
|
||||
/// \brief Converts a \c Matcher<T> to a matcher of desired type \c To by
|
||||
/// "adapting" a \c To into a \c T.
|
||||
|
|
|
@ -241,6 +241,12 @@ TEST(HasDeclaration, HasDeclarationOfTemplateSpecializationType) {
|
|||
hasDeclaration(namedDecl(hasName("A"))))))));
|
||||
}
|
||||
|
||||
TEST(HasDeclaration, HasDeclarationOfCXXNewExpr) {
|
||||
EXPECT_TRUE(
|
||||
matches("int *A = new int();",
|
||||
cxxNewExpr(hasDeclaration(functionDecl(parameterCountIs(1))))));
|
||||
}
|
||||
|
||||
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()); }",
|
||||
|
|
Loading…
Reference in New Issue