Coverage Report

Created: 2021-09-21 08:58

/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 "llvm/ADT/Optional.h"
24
#include <memory>
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
1.09k
  ArgKind(Kind K) : K(K) { assert(K != AK_Matcher); }
46
47
  /// Constructor for matcher types.
48
62.8k
  static ArgKind MakeMatcherArg(ASTNodeKind MatcherKind) {
49
62.8k
    return ArgKind{AK_Matcher, MatcherKind};
50
62.8k
  }
51
52
41
  static ArgKind MakeNodeArg(ASTNodeKind MatcherKind) {
53
41
    return ArgKind{AK_Node, MatcherKind};
54
41
  }
55
56
38.0k
  Kind getArgKind() const { return K; }
57
15.6k
  ASTNodeKind getMatcherKind() const {
58
15.6k
    assert(K == AK_Matcher);
59
0
    return NodeKind;
60
15.6k
  }
61
3.45k
  ASTNodeKind getNodeKind() const {
62
3.45k
    assert(K == AK_Node);
63
0
    return NodeKind;
64
3.45k
  }
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
62.9k
  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
368
    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 llvm::None if it fails to do so.
121
    llvm::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 llvm::Optional<DynTypedMatcher> getSingleMatcher() const = 0;
136
    virtual std::string getTypeAsString() const = 0;
137
    virtual llvm::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
114
  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
  llvm::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
244
  bool hasTypedMatcher() const {
186
244
    return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>());
187
244
  }
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::Stmt>() const
Line
Count
Source
185
28
  bool hasTypedMatcher() const {
186
28
    return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>());
187
28
  }
bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::Decl>() const
Line
Count
Source
185
45
  bool hasTypedMatcher() const {
186
45
    return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>());
187
45
  }
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::CXXThisExpr>() const
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::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::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::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::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
  }
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ValueDecl>() const
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::SwitchCase>() const
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
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
  }
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::UsingShadowDecl>() const
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
2
  bool hasTypedMatcher() const {
186
2
    return hasTypedMatcher(ASTNodeKind::getFromNodeKind<T>());
187
2
  }
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::ObjCMethodDecl>() const
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::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::PredefinedExpr>() 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::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::TemplateArgumentLoc>() const
Unexecuted instantiation: bool clang::ast_matchers::dynamic::VariantMatcher::hasTypedMatcher<clang::TemplateSpecializationType>() 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
244
  bool hasTypedMatcher(ASTNodeKind NK) const {
190
244
    if (!Value) 
return false0
;
191
244
    return Value->getTypedMatcher(MatcherOps(NK)).hasValue();
192
244
  }
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
124
  ast_matchers::internal::Matcher<T> getTypedMatcher() const {
212
124
    assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false");
213
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
124
        ->template convertTo<T>();
215
124
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::Stmt>() const
Line
Count
Source
211
19
  ast_matchers::internal::Matcher<T> getTypedMatcher() const {
212
19
    assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false");
213
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
19
        ->template convertTo<T>();
215
19
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::Decl>() const
Line
Count
Source
211
30
  ast_matchers::internal::Matcher<T> getTypedMatcher() const {
212
30
    assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false");
213
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
30
        ->template convertTo<T>();
215
30
  }
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
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
7
        ->template convertTo<T>();
215
7
  }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXThisExpr> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::CXXThisExpr>() const
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
0
    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
0
    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
0
    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
0
    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
0
    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
0
    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
0
    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
0
    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
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
2
        ->template convertTo<T>();
215
2
  }
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
0
    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
0
    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
0
    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::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
0
    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
0
    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
0
    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
0
    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
0
    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
0
    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
0
    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::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::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
0
    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
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
1
        ->template convertTo<T>();
215
1
  }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ValueDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ValueDecl>() const
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
0
    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
0
    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
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
3
        ->template convertTo<T>();
215
3
  }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SwitchCase> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::SwitchCase>() const
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
0
    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
0
    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
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
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
1
        ->template convertTo<T>();
215
1
  }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UsingShadowDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::UsingShadowDecl>() const
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
0
    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
0
    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
0
    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
1
  ast_matchers::internal::Matcher<T> getTypedMatcher() const {
212
1
    assert(hasTypedMatcher<T>() && "hasTypedMatcher<T>() == false");
213
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
1
        ->template convertTo<T>();
215
1
  }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::ObjCMethodDecl>() const
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::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
0
    return Value->getTypedMatcher(MatcherOps(ASTNodeKind::getFromNodeKind<T>()))
214
1
        ->template convertTo<T>();
215
1
  }
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::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
0
    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::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::TemplateArgumentLoc> clang::ast_matchers::dynamic::VariantMatcher::getTypedMatcher<clang::TemplateArgumentLoc>() 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::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
169
      : 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
890
  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_AST_MATCHERS_DYNAMIC_VARIANT_VALUE_H