/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/ASTMatchers/Dynamic/VariantValue.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===--- VariantValue.h - Polymorphic value type ----------------*- C++ -*-===// |
2 | | // |
3 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | | // See https://llvm.org/LICENSE.txt for license information. |
5 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | | // |
7 | | //===----------------------------------------------------------------------===// |
8 | | /// |
9 | | /// \file |
10 | | /// Polymorphic value type. |
11 | | /// |
12 | | /// Supports all the types required for dynamic Matcher construction. |
13 | | /// Used by the registry to construct matchers in a generic way. |
14 | | /// |
15 | | //===----------------------------------------------------------------------===// |
16 | | |
17 | | #ifndef LLVM_CLANG_ASTMATCHERS_DYNAMIC_VARIANTVALUE_H |
18 | | #define LLVM_CLANG_ASTMATCHERS_DYNAMIC_VARIANTVALUE_H |
19 | | |
20 | | #include "clang/ASTMatchers/ASTMatchers.h" |
21 | | #include "clang/ASTMatchers/ASTMatchersInternal.h" |
22 | | #include "llvm/ADT/IntrusiveRefCntPtr.h" |
23 | | #include <memory> |
24 | | #include <optional> |
25 | | #include <vector> |
26 | | |
27 | | namespace clang { |
28 | | namespace ast_matchers { |
29 | | namespace dynamic { |
30 | | |
31 | | /// Kind identifier. |
32 | | /// |
33 | | /// It supports all types that VariantValue can contain. |
34 | | class ArgKind { |
35 | | public: |
36 | | enum Kind { |
37 | | AK_Matcher, |
38 | | AK_Node, |
39 | | AK_Boolean, |
40 | | AK_Double, |
41 | | AK_Unsigned, |
42 | | AK_String |
43 | | }; |
44 | | /// Constructor for non-matcher types. |
45 | 872 | ArgKind(Kind K) : K(K) { assert(K != AK_Matcher); } |
46 | | |
47 | | /// Constructor for matcher types. |
48 | 63.2k | static ArgKind MakeMatcherArg(ASTNodeKind MatcherKind) { |
49 | 63.2k | return ArgKind{AK_Matcher, MatcherKind}; |
50 | 63.2k | } |
51 | | |
52 | 41 | static ArgKind MakeNodeArg(ASTNodeKind MatcherKind) { |
53 | 41 | return ArgKind{AK_Node, MatcherKind}; |
54 | 41 | } |
55 | | |
56 | 40.0k | Kind getArgKind() const { return K; } |
57 | 16.3k | ASTNodeKind getMatcherKind() const { |
58 | 16.3k | assert(K == AK_Matcher); |
59 | 16.3k | return NodeKind; |
60 | 16.3k | } |
61 | 3.63k | ASTNodeKind getNodeKind() const { |
62 | 3.63k | assert(K == AK_Node); |
63 | 3.63k | return NodeKind; |
64 | 3.63k | } |
65 | | |
66 | | /// Determines if this type can be converted to \p To. |
67 | | /// |
68 | | /// \param To the requested destination type. |
69 | | /// |
70 | | /// \param Specificity value corresponding to the "specificity" of the |
71 | | /// conversion. |
72 | | bool isConvertibleTo(ArgKind To, unsigned *Specificity) const; |
73 | | |
74 | 192 | bool operator<(const ArgKind &Other) const { |
75 | 192 | if ((K == AK_Matcher && Other.K == AK_Matcher186 ) || |
76 | 192 | (6 K == AK_Node6 && Other.K == AK_Node6 )) |
77 | 192 | return NodeKind < Other.NodeKind; |
78 | 0 | return K < Other.K; |
79 | 192 | } |
80 | | |
81 | | /// String representation of the type. |
82 | | std::string asString() const; |
83 | | |
84 | | private: |
85 | 63.2k | ArgKind(Kind K, ASTNodeKind NK) : K(K), NodeKind(NK) {} |
86 | | Kind K; |
87 | | ASTNodeKind NodeKind; |
88 | | }; |
89 | | |
90 | | using ast_matchers::internal::DynTypedMatcher; |
91 | | |
92 | | /// A variant matcher object. |
93 | | /// |
94 | | /// The purpose of this object is to abstract simple and polymorphic matchers |
95 | | /// into a single object type. |
96 | | /// Polymorphic matchers might be implemented as a list of all the possible |
97 | | /// overloads of the matcher. \c VariantMatcher knows how to select the |
98 | | /// appropriate overload when needed. |
99 | | /// To get a real matcher object out of a \c VariantMatcher you can do: |
100 | | /// - getSingleMatcher() which returns a matcher, only if it is not ambiguous |
101 | | /// to decide which matcher to return. Eg. it contains only a single |
102 | | /// matcher, or a polymorphic one with only one overload. |
103 | | /// - hasTypedMatcher<T>()/getTypedMatcher<T>(): These calls will determine if |
104 | | /// the underlying matcher(s) can unambiguously return a Matcher<T>. |
105 | | class VariantMatcher { |
106 | | /// Methods that depend on T from hasTypedMatcher/getTypedMatcher. |
107 | | class MatcherOps { |
108 | | public: |
109 | 380 | MatcherOps(ASTNodeKind NodeKind) : NodeKind(NodeKind) {} |
110 | | |
111 | | bool canConstructFrom(const DynTypedMatcher &Matcher, |
112 | | bool &IsExactMatch) const; |
113 | | |
114 | | /// Convert \p Matcher the destination type and return it as a new |
115 | | /// DynTypedMatcher. |
116 | | DynTypedMatcher convertMatcher(const DynTypedMatcher &Matcher) const; |
117 | | |
118 | | /// Constructs a variadic typed matcher from \p InnerMatchers. |
119 | | /// Will try to convert each inner matcher to the destination type and |
120 | | /// return std::nullopt if it fails to do so. |
121 | | std::optional<DynTypedMatcher> |
122 | | constructVariadicOperator(DynTypedMatcher::VariadicOperator Op, |
123 | | ArrayRef<VariantMatcher> InnerMatchers) const; |
124 | | |
125 | | private: |
126 | | ASTNodeKind NodeKind; |
127 | | }; |
128 | | |
129 | | /// Payload interface to be specialized by each matcher type. |
130 | | /// |
131 | | /// It follows a similar interface as VariantMatcher itself. |
132 | | class Payload { |
133 | | public: |
134 | | virtual ~Payload(); |
135 | | virtual std::optional<DynTypedMatcher> getSingleMatcher() const = 0; |
136 | | virtual std::string getTypeAsString() const = 0; |
137 | | virtual std::optional<DynTypedMatcher> |
138 | | getTypedMatcher(const MatcherOps &Ops) const = 0; |
139 | | virtual bool isConvertibleTo(ASTNodeKind Kind, |
140 | | unsigned *Specificity) const = 0; |
141 | | }; |
142 | | |
143 | | public: |
144 | | /// A null matcher. |
145 | | VariantMatcher(); |
146 | | |
147 | | /// Clones the provided matcher. |
148 | | static VariantMatcher SingleMatcher(const DynTypedMatcher &Matcher); |
149 | | |
150 | | /// Clones the provided matchers. |
151 | | /// |
152 | | /// They should be the result of a polymorphic matcher. |
153 | | static VariantMatcher |
154 | | PolymorphicMatcher(std::vector<DynTypedMatcher> Matchers); |
155 | | |
156 | | /// Creates a 'variadic' operator matcher. |
157 | | /// |
158 | | /// It will bind to the appropriate type on getTypedMatcher<T>(). |
159 | | static VariantMatcher |
160 | | VariadicOperatorMatcher(DynTypedMatcher::VariadicOperator Op, |
161 | | std::vector<VariantMatcher> Args); |
162 | | |
163 | | /// Makes the matcher the "null" matcher. |
164 | | void reset(); |
165 | | |
166 | | /// Whether the matcher is null. |
167 | 116 | bool isNull() const { return !Value; } |
168 | | |
169 | | /// Return a single matcher, if there is no ambiguity. |
170 | | /// |
171 | | /// \returns the matcher, if there is only one matcher. An empty Optional, if |
172 | | /// the underlying matcher is a polymorphic matcher with more than one |
173 | | /// representation. |
174 | | std::optional<DynTypedMatcher> getSingleMatcher() const; |
175 | | |
176 | | /// Determines if the contained matcher can be converted to |
177 | | /// \c Matcher<T>. |
178 | | /// |
179 | | /// For the Single case, it returns true if it can be converted to |
180 | | /// \c Matcher<T>. |
181 | | /// For the Polymorphic case, it returns true if one, and only one, of the |
182 | | /// overloads can be converted to \c Matcher<T>. If there are more than one |
183 | | /// that can, the result would be ambiguous and false is returned. |
184 | | template <class T> |
185 | 252 | bool hasTypedMatcher() const { |
186 | 252 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); |
187 | 252 | } bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::Stmt>() const Line | Count | Source | 185 | 30 | bool hasTypedMatcher() const { | 186 | 30 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 30 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::Decl>() const Line | Count | Source | 185 | 47 | bool hasTypedMatcher() const { | 186 | 47 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 47 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::NestedNameSpecifier>() const Line | Count | Source | 185 | 5 | bool hasTypedMatcher() const { | 186 | 5 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 5 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::NestedNameSpecifierLoc>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::QualType>() const Line | Count | Source | 185 | 13 | bool hasTypedMatcher() const { | 186 | 13 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 13 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::Expr>() const Line | Count | Source | 185 | 9 | bool hasTypedMatcher() const { | 186 | 9 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 9 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::NamedDecl>() const Line | Count | Source | 185 | 14 | bool hasTypedMatcher() const { | 186 | 14 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 14 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::AccessSpecDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::AddrLabelExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UnaryExprOrTypeTraitExpr>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ArraySubscriptExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ArrayType>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::AsmStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::AtomicExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::AtomicType>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::Attr>() const Line | Count | Source | 185 | 3 | bool hasTypedMatcher() const { | 186 | 3 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 3 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::AutoType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCAutoreleasePoolStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::BinaryConditionalOperator>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::BinaryOperator>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::BindingDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::BlockDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::BlockExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::BlockPointerType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::BreakStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::BuiltinType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CStyleCastExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CallExpr>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ValueDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CaseStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CastExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CharacterLiteral>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ChooseExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ClassTemplateDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ClassTemplatePartialSpecializationDecl>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ClassTemplateSpecializationDecl>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ComplexType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CompoundLiteralExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CompoundStmt>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CoawaitExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ConditionalOperator>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ConstantArrayType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ConstantExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ContinueStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CoreturnStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CoroutineBodyStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CoyieldExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CUDAKernelCallExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXBaseSpecifier>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXBindTemporaryExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXBoolLiteralExpr>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXCatchStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXConstCastExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXConstructExpr>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXConstructorDecl>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXConversionDecl>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXCtorInitializer>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXDeductionGuideDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXDefaultArgExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXDeleteExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXDependentScopeMemberExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXDestructorDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXDynamicCastExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXForRangeStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXFunctionalCastExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXMemberCallExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXMethodDecl>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXNewExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXNoexceptExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXNullPtrLiteralExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXOperatorCallExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXRecordDecl>() const Line | Count | Source | 185 | 8 | bool hasTypedMatcher() const { | 186 | 8 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 8 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXReinterpretCastExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXRewrittenBinaryOperator>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXStaticCastExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXStdInitializerListExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXTemporaryObjectExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXThisExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXThrowExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXTryStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::CXXUnresolvedConstructExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DecayedType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DecompositionDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DeclRefExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DeclStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DeclaratorDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DecltypeType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DeducedTemplateSpecializationType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DefaultStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DependentCoawaitExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DependentSizedArrayType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DesignatedInitExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::DoStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ElaboratedType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ElaboratedTypeLoc>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UsingType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::EnumConstantDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::EnumDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::EnumType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ExplicitCastExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ExprWithCleanups>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::FieldDecl>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::FixedPointLiteral>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::FloatingLiteral>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::Type>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TypeLoc>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ParmVarDecl>() const Line | Count | Source | 185 | 6 | bool hasTypedMatcher() const { | 186 | 6 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 6 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::LambdaCapture>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::SwitchCase>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateArgument>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::FunctionDecl>() const Line | Count | Source | 185 | 14 | bool hasTypedMatcher() const { | 186 | 14 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 14 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ForStmt>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::FriendDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::FunctionProtoType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::FunctionTemplateDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::FunctionType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::GenericSelectionExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::GNUNullExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::GotoStmt>() const Line | Count | Source | 185 | 1 | bool hasTypedMatcher() const { | 186 | 1 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 1 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::OMPClause>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateArgumentLoc>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UsingShadowDecl>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::VarDecl>() const Line | Count | Source | 185 | 14 | bool hasTypedMatcher() const { | 186 | 14 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 14 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::IfStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ImaginaryLiteral>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ImplicitCastExpr>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ImplicitValueInitExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::IncompleteArrayType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::IndirectFieldDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::InitListExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::InjectedClassNameType>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::IntegerLiteral>() const Line | Count | Source | 185 | 3 | bool hasTypedMatcher() const { | 186 | 3 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 3 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::LValueReferenceType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::LabelDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::LabelStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::LambdaExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::LinkageSpecDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::MaterializeTemporaryExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::MemberExpr>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::MemberPointerType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::NamespaceAliasDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::NamespaceDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::NonTypeTemplateParmDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::NullStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCAtCatchStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCCategoryDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCCategoryImplDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCAtFinallyStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCImplementationDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCInterfaceDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCIvarDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCIvarRefExpr>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCMessageExpr>() const Line | Count | Source | 185 | 4 | bool hasTypedMatcher() const { | 186 | 4 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 4 | } |
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCMethodDecl>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCObjectPointerType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCPropertyDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCProtocolDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCStringLiteral>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCAtThrowStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCAtTryStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::OMPDefaultClause>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::OMPExecutableDirective>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::OpaqueValueExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ParenExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ParenListExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ParenType>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::PointerType>() const Line | Count | Source | 185 | 2 | bool hasTypedMatcher() const { | 186 | 2 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 2 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::PointerTypeLoc>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::PredefinedExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::QualifiedTypeLoc>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::RValueReferenceType>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::RecordDecl>() const Line | Count | Source | 185 | 12 | bool hasTypedMatcher() const { | 186 | 12 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 12 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::RecordType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ReferenceType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ReferenceTypeLoc>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateName>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ReturnStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::StaticAssertDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::StmtExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::StringLiteral>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::SubstNonTypeTemplateParmExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::SubstTemplateTypeParmType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::SwitchStmt>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TagDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TagType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateSpecializationType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateSpecializationTypeLoc>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateTemplateParmDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateTypeParmDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateTypeParmType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TranslationUnitDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TypeAliasDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TypeAliasTemplateDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TypedefDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TypedefNameDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TypedefType>() const bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UnaryOperator>() const Line | Count | Source | 185 | 3 | bool hasTypedMatcher() const { | 186 | 3 | return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>()); | 187 | 3 | } |
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UnaryTransformType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UnresolvedLookupExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UnresolvedMemberExpr>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UnresolvedUsingTypenameDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UnresolvedUsingValueDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UserDefinedLiteral>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UsingDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UsingEnumDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UsingDirectiveDecl>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::VariableArrayType>() const Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::WhileStmt>() const |
188 | | |
189 | 252 | bool hasTypedMatcher(ASTNodeKind NK) const { |
190 | 252 | if (!Value) return false0 ; |
191 | 252 | return Value->getTypedMatcher(MatcherOps(NK)).has_value(); |
192 | 252 | } |
193 | | |
194 | | /// Determines if the contained matcher can be converted to \p Kind. |
195 | | /// |
196 | | /// \param Kind the requested destination type. |
197 | | /// |
198 | | /// \param Specificity value corresponding to the "specificity" of the |
199 | | /// conversion. |
200 | 2 | bool isConvertibleTo(ASTNodeKind Kind, unsigned *Specificity) const { |
201 | 2 | if (Value) |
202 | 2 | return Value->isConvertibleTo(Kind, Specificity); |
203 | 0 | return false; |
204 | 2 | } |
205 | | |
206 | | /// Return this matcher as a \c Matcher<T>. |
207 | | /// |
208 | | /// Handles the different types (Single, Polymorphic) accordingly. |
209 | | /// Asserts that \c hasTypedMatcher<T>() is true. |
210 | | template <class T> |
211 | 128 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { |
212 | 128 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); |
213 | 128 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) |
214 | 128 | ->template convertTo<T>(); |
215 | 128 | } clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::Stmt>() const Line | Count | Source | 211 | 20 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 20 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 20 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 20 | ->template convertTo<T>(); | 215 | 20 | } |
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::Decl>() const Line | Count | Source | 211 | 31 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 31 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 31 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 31 | ->template convertTo<T>(); | 215 | 31 | } |
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifier> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::NestedNameSpecifier>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifierLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::NestedNameSpecifierLoc>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
clang::ast_matchers::internal::Matcher<clang::QualType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::QualType>() const Line | Count | Source | 211 | 5 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 5 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 5 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 5 | ->template convertTo<T>(); | 215 | 5 | } |
clang::ast_matchers::internal::Matcher<clang::Expr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::Expr>() const Line | Count | Source | 211 | 4 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 4 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 4 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 4 | ->template convertTo<T>(); | 215 | 4 | } |
clang::ast_matchers::internal::Matcher<clang::NamedDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::NamedDecl>() const Line | Count | Source | 211 | 7 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 7 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 7 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 7 | ->template convertTo<T>(); | 215 | 7 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AccessSpecDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::AccessSpecDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AddrLabelExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::AddrLabelExpr>() const clang::ast_matchers::internal::Matcher<clang::UnaryExprOrTypeTraitExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UnaryExprOrTypeTraitExpr>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ArraySubscriptExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ArraySubscriptExpr>() const clang::ast_matchers::internal::Matcher<clang::ArrayType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ArrayType>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AsmStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::AsmStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AtomicExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::AtomicExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AtomicType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::AtomicType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::Attr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::Attr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AutoType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::AutoType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCAutoreleasePoolStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BinaryConditionalOperator> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::BinaryConditionalOperator>() const clang::ast_matchers::internal::Matcher<clang::BinaryOperator> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::BinaryOperator>() const Line | Count | Source | 211 | 2 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 2 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 2 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 2 | ->template convertTo<T>(); | 215 | 2 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BindingDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::BindingDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BlockDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::BlockDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BlockExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::BlockExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BlockPointerType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::BlockPointerType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BreakStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::BreakStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BuiltinType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::BuiltinType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CStyleCastExpr>() const clang::ast_matchers::internal::Matcher<clang::CallExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CallExpr>() const Line | Count | Source | 211 | 2 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 2 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 2 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 2 | ->template convertTo<T>(); | 215 | 2 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ValueDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ValueDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CaseStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CaseStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CastExpr>() const clang::ast_matchers::internal::Matcher<clang::CharacterLiteral> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CharacterLiteral>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ChooseExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ChooseExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ClassTemplateDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ClassTemplateDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ClassTemplatePartialSpecializationDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ClassTemplatePartialSpecializationDecl>() const clang::ast_matchers::internal::Matcher<clang::ClassTemplateSpecializationDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ClassTemplateSpecializationDecl>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ComplexType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ComplexType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CompoundLiteralExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CompoundLiteralExpr>() const clang::ast_matchers::internal::Matcher<clang::CompoundStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CompoundStmt>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CoawaitExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CoawaitExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ConditionalOperator> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ConditionalOperator>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ConstantArrayType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ConstantArrayType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ConstantExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ConstantExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ContinueStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ContinueStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CoreturnStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CoreturnStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CoroutineBodyStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CoroutineBodyStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CoyieldExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CoyieldExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CUDAKernelCallExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CUDAKernelCallExpr>() const clang::ast_matchers::internal::Matcher<clang::CXXBaseSpecifier> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXBaseSpecifier>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXBindTemporaryExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXBindTemporaryExpr>() const clang::ast_matchers::internal::Matcher<clang::CXXBoolLiteralExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXBoolLiteralExpr>() const Line | Count | Source | 211 | 2 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 2 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 2 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 2 | ->template convertTo<T>(); | 215 | 2 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXCatchStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXCatchStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXConstCastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXConstCastExpr>() const clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXConstructExpr>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXConstructorDecl>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXConversionDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXConversionDecl>() const clang::ast_matchers::internal::Matcher<clang::CXXCtorInitializer> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXCtorInitializer>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDeductionGuideDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXDeductionGuideDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDefaultArgExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXDefaultArgExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDeleteExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXDeleteExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDependentScopeMemberExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXDependentScopeMemberExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDestructorDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXDestructorDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDynamicCastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXDynamicCastExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXForRangeStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXForRangeStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXFunctionalCastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXFunctionalCastExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXMemberCallExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXMemberCallExpr>() const clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXMethodDecl>() const Line | Count | Source | 211 | 2 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 2 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 2 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 2 | ->template convertTo<T>(); | 215 | 2 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXNewExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXNewExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXNoexceptExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXNoexceptExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXNullPtrLiteralExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXNullPtrLiteralExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXOperatorCallExpr>() const clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXRecordDecl>() const Line | Count | Source | 211 | 3 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 3 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 3 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 3 | ->template convertTo<T>(); | 215 | 3 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXReinterpretCastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXReinterpretCastExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXRewrittenBinaryOperator> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXRewrittenBinaryOperator>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXStaticCastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXStaticCastExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXStdInitializerListExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXStdInitializerListExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXTemporaryObjectExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXTemporaryObjectExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXThisExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXThisExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXThrowExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXThrowExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXTryStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXTryStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXUnresolvedConstructExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXUnresolvedConstructExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DecayedType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DecayedType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DecompositionDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DecompositionDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DeclRefExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DeclRefExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DeclStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DeclStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DeclaratorDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DeclaratorDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DecltypeType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DecltypeType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DeducedTemplateSpecializationType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DeducedTemplateSpecializationType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DefaultStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DefaultStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DependentCoawaitExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DependentCoawaitExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DependentSizedArrayType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DependentSizedArrayType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DesignatedInitExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DesignatedInitExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DoStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::DoStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ElaboratedType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ElaboratedType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ElaboratedTypeLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ElaboratedTypeLoc>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UsingType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UsingType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::EnumConstantDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::EnumConstantDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::EnumDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::EnumDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::EnumType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::EnumType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ExplicitCastExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ExprWithCleanups> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ExprWithCleanups>() const clang::ast_matchers::internal::Matcher<clang::FieldDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::FieldDecl>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::FixedPointLiteral> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::FixedPointLiteral>() const clang::ast_matchers::internal::Matcher<clang::FloatingLiteral> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::FloatingLiteral>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::Type>() const Line | Count | Source | 211 | 2 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 2 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 2 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 2 | ->template convertTo<T>(); | 215 | 2 | } |
clang::ast_matchers::internal::Matcher<clang::TypeLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TypeLoc>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ParmVarDecl>() const Line | Count | Source | 211 | 3 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 3 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 3 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 3 | ->template convertTo<T>(); | 215 | 3 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LambdaCapture> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::LambdaCapture>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SwitchCase> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::SwitchCase>() const clang::ast_matchers::internal::Matcher<clang::TemplateArgument> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateArgument>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
clang::ast_matchers::internal::Matcher<clang::FunctionDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::FunctionDecl>() const Line | Count | Source | 211 | 8 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 8 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 8 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 8 | ->template convertTo<T>(); | 215 | 8 | } |
clang::ast_matchers::internal::Matcher<clang::ForStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ForStmt>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::FriendDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::FriendDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::FunctionProtoType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::FunctionProtoType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::FunctionTemplateDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::FunctionTemplateDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::FunctionType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::FunctionType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::GenericSelectionExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::GenericSelectionExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::GNUNullExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::GNUNullExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::GotoStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::GotoStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::OMPClause> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::OMPClause>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateArgumentLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateArgumentLoc>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UsingShadowDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UsingShadowDecl>() const clang::ast_matchers::internal::Matcher<clang::VarDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::VarDecl>() const Line | Count | Source | 211 | 7 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 7 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 7 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 7 | ->template convertTo<T>(); | 215 | 7 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::IfStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::IfStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ImaginaryLiteral> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ImaginaryLiteral>() const clang::ast_matchers::internal::Matcher<clang::ImplicitCastExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ImplicitCastExpr>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ImplicitValueInitExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ImplicitValueInitExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::IncompleteArrayType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::IncompleteArrayType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::IndirectFieldDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::IndirectFieldDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::InitListExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::InitListExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::InjectedClassNameType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::InjectedClassNameType>() const clang::ast_matchers::internal::Matcher<clang::IntegerLiteral> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::IntegerLiteral>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LValueReferenceType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::LValueReferenceType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LabelDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::LabelDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LabelStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::LabelStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LambdaExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::LambdaExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LinkageSpecDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::LinkageSpecDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::MaterializeTemporaryExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::MaterializeTemporaryExpr>() const clang::ast_matchers::internal::Matcher<clang::MemberExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::MemberExpr>() const Line | Count | Source | 211 | 2 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 2 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 2 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 2 | ->template convertTo<T>(); | 215 | 2 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::MemberPointerType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::MemberPointerType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::NamespaceAliasDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::NamespaceAliasDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::NamespaceDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::NamespaceDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::NonTypeTemplateParmDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::NonTypeTemplateParmDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::NullStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::NullStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAtCatchStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCAtCatchStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCCategoryDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCCategoryDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCCategoryImplDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCCategoryImplDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAtFinallyStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCAtFinallyStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCImplementationDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCImplementationDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCInterfaceDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCIvarDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCIvarDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCIvarRefExpr>() const clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCMessageExpr>() const Line | Count | Source | 211 | 2 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 2 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 2 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 2 | ->template convertTo<T>(); | 215 | 2 | } |
clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCMethodDecl>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCObjectPointerType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCPropertyDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCPropertyDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCProtocolDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCProtocolDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCStringLiteral> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCStringLiteral>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAtThrowStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCAtThrowStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAtTryStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCAtTryStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::OMPDefaultClause> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::OMPDefaultClause>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::OMPExecutableDirective> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::OMPExecutableDirective>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::OpaqueValueExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::OpaqueValueExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ParenExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ParenExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ParenListExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ParenListExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ParenType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ParenType>() const clang::ast_matchers::internal::Matcher<clang::PointerType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::PointerType>() const Line | Count | Source | 211 | 1 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 1 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 1 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 1 | ->template convertTo<T>(); | 215 | 1 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::PointerTypeLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::PointerTypeLoc>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::PredefinedExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::PredefinedExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::QualifiedTypeLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::QualifiedTypeLoc>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::RValueReferenceType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::RValueReferenceType>() const clang::ast_matchers::internal::Matcher<clang::RecordDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::RecordDecl>() const Line | Count | Source | 211 | 6 | ast_matchers::internal::Matcher<T> getTypedMatcher() const { | 212 | 6 | assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false"); | 213 | 6 | return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>())) | 214 | 6 | ->template convertTo<T>(); | 215 | 6 | } |
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::RecordType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::RecordType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ReferenceType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ReferenceType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ReferenceTypeLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ReferenceTypeLoc>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateName> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateName>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ReturnStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ReturnStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::StaticAssertDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::StaticAssertDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::StmtExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::StmtExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::StringLiteral> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::StringLiteral>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SubstNonTypeTemplateParmExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::SubstNonTypeTemplateParmExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SubstTemplateTypeParmType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::SubstTemplateTypeParmType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SwitchStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::SwitchStmt>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TagDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TagDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TagType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TagType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateSpecializationType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateSpecializationType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateSpecializationTypeLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateSpecializationTypeLoc>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateTemplateParmDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateTemplateParmDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateTypeParmDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateTypeParmDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateTypeParmType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateTypeParmType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TranslationUnitDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TranslationUnitDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TypeAliasDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TypeAliasDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TypeAliasTemplateDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TypeAliasTemplateDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TypedefDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TypedefDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TypedefNameDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TypedefNameDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TypedefType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TypedefType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnaryOperator> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UnaryOperator>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnaryTransformType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UnaryTransformType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnresolvedLookupExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UnresolvedLookupExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnresolvedMemberExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UnresolvedMemberExpr>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnresolvedUsingTypenameDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UnresolvedUsingTypenameDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnresolvedUsingValueDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UnresolvedUsingValueDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UserDefinedLiteral> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UserDefinedLiteral>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UsingDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UsingDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UsingEnumDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UsingEnumDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UsingDirectiveDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UsingDirectiveDecl>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::VariableArrayType> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::VariableArrayType>() const Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::WhileStmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::WhileStmt>() const |
216 | | |
217 | 0 | DynTypedMatcher getTypedMatcher(ASTNodeKind NK) const { |
218 | 0 | assert(hasTypedMatcher(NK) && "hasTypedMatcher(NK) == false"); |
219 | 0 | return *Value->getTypedMatcher(MatcherOps(NK)); |
220 | 0 | } |
221 | | |
222 | | /// String representation of the type of the value. |
223 | | /// |
224 | | /// If the underlying matcher is a polymorphic one, the string will show all |
225 | | /// the types. |
226 | | std::string getTypeAsString() const; |
227 | | |
228 | | private: |
229 | | explicit VariantMatcher(std::shared_ptr<Payload> Value) |
230 | 173 | : Value(std::move(Value)) {} |
231 | | |
232 | | |
233 | | class SinglePayload; |
234 | | class PolymorphicPayload; |
235 | | class VariadicOpPayload; |
236 | | |
237 | | std::shared_ptr<const Payload> Value; |
238 | | }; |
239 | | |
240 | | /// Variant value class. |
241 | | /// |
242 | | /// Basically, a tagged union with value type semantics. |
243 | | /// It is used by the registry as the return value and argument type for the |
244 | | /// matcher factory methods. |
245 | | /// It can be constructed from any of the supported types. It supports |
246 | | /// copy/assignment. |
247 | | /// |
248 | | /// Supported types: |
249 | | /// - \c bool |
250 | | // - \c double |
251 | | /// - \c unsigned |
252 | | /// - \c llvm::StringRef |
253 | | /// - \c VariantMatcher (\c DynTypedMatcher / \c Matcher<T>) |
254 | | class VariantValue { |
255 | | public: |
256 | 894 | VariantValue() : Type(VT_Nothing) {} |
257 | | |
258 | | VariantValue(const VariantValue &Other); |
259 | | ~VariantValue(); |
260 | | VariantValue &operator=(const VariantValue &Other); |
261 | | |
262 | | /// Specific constructors for each supported type. |
263 | | VariantValue(bool Boolean); |
264 | | VariantValue(double Double); |
265 | | VariantValue(unsigned Unsigned); |
266 | | VariantValue(StringRef String); |
267 | | VariantValue(ASTNodeKind NodeKind); |
268 | | VariantValue(const VariantMatcher &Matchers); |
269 | | |
270 | | /// Constructs an \c unsigned value (disambiguation from bool). |
271 | 0 | VariantValue(int Signed) : VariantValue(static_cast<unsigned>(Signed)) {} |
272 | | |
273 | | /// Returns true iff this is not an empty value. |
274 | 14 | explicit operator bool() const { return hasValue(); } |
275 | 23 | bool hasValue() const { return Type != VT_Nothing; } |
276 | | |
277 | | /// Boolean value functions. |
278 | | bool isBoolean() const; |
279 | | bool getBoolean() const; |
280 | | void setBoolean(bool Boolean); |
281 | | |
282 | | /// Double value functions. |
283 | | bool isDouble() const; |
284 | | double getDouble() const; |
285 | | void setDouble(double Double); |
286 | | |
287 | | /// Unsigned value functions. |
288 | | bool isUnsigned() const; |
289 | | unsigned getUnsigned() const; |
290 | | void setUnsigned(unsigned Unsigned); |
291 | | |
292 | | /// String value functions. |
293 | | bool isString() const; |
294 | | const std::string &getString() const; |
295 | | void setString(StringRef String); |
296 | | |
297 | | bool isNodeKind() const; |
298 | | const ASTNodeKind &getNodeKind() const; |
299 | | void setNodeKind(ASTNodeKind NodeKind); |
300 | | |
301 | | /// Matcher value functions. |
302 | | bool isMatcher() const; |
303 | | const VariantMatcher &getMatcher() const; |
304 | | void setMatcher(const VariantMatcher &Matcher); |
305 | | |
306 | | /// Determines if the contained value can be converted to \p Kind. |
307 | | /// |
308 | | /// \param Kind the requested destination type. |
309 | | /// |
310 | | /// \param Specificity value corresponding to the "specificity" of the |
311 | | /// conversion. |
312 | | bool isConvertibleTo(ArgKind Kind, unsigned* Specificity) const; |
313 | | |
314 | | /// Determines if the contained value can be converted to any kind |
315 | | /// in \p Kinds. |
316 | | /// |
317 | | /// \param Kinds the requested destination types. |
318 | | /// |
319 | | /// \param Specificity value corresponding to the "specificity" of the |
320 | | /// conversion. It is the maximum specificity of all the possible |
321 | | /// conversions. |
322 | | bool isConvertibleTo(ArrayRef<ArgKind> Kinds, unsigned *Specificity) const; |
323 | | |
324 | | /// String representation of the type of the value. |
325 | | std::string getTypeAsString() const; |
326 | | |
327 | | private: |
328 | | void reset(); |
329 | | |
330 | | /// All supported value types. |
331 | | enum ValueType { |
332 | | VT_Nothing, |
333 | | VT_Boolean, |
334 | | VT_Double, |
335 | | VT_Unsigned, |
336 | | VT_String, |
337 | | VT_Matcher, |
338 | | VT_NodeKind |
339 | | }; |
340 | | |
341 | | /// All supported value types. |
342 | | union AllValues { |
343 | | unsigned Unsigned; |
344 | | double Double; |
345 | | bool Boolean; |
346 | | std::string *String; |
347 | | VariantMatcher *Matcher; |
348 | | ASTNodeKind *NodeKind; |
349 | | }; |
350 | | |
351 | | ValueType Type; |
352 | | AllValues Value; |
353 | | }; |
354 | | |
355 | | } // end namespace dynamic |
356 | | } // end namespace ast_matchers |
357 | | } // end namespace clang |
358 | | |
359 | | #endif // LLVM_CLANG_ASTMATCHERS_DYNAMIC_VARIANTVALUE_H |