Coverage Report

Created: 2019-03-22 08:08

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
Line
Count
Source (jump to first uncovered line)
1
//===- ASTMatchersInternal.h - Structural query framework -------*- 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
//  Implements the base layer of the matcher framework.
10
//
11
//  Matchers are methods that return a Matcher<T> which provides a method
12
//  Matches(...) which is a predicate on an AST node. The Matches method's
13
//  parameters define the context of the match, which allows matchers to recurse
14
//  or store the current node as bound to a specific string, so that it can be
15
//  retrieved later.
16
//
17
//  In general, matchers have two parts:
18
//  1. A function Matcher<T> MatcherName(<arguments>) which returns a Matcher<T>
19
//     based on the arguments and optionally on template type deduction based
20
//     on the arguments. Matcher<T>s form an implicit reverse hierarchy
21
//     to clang's AST class hierarchy, meaning that you can use a Matcher<Base>
22
//     everywhere a Matcher<Derived> is required.
23
//  2. An implementation of a class derived from MatcherInterface<T>.
24
//
25
//  The matcher functions are defined in ASTMatchers.h. To make it possible
26
//  to implement both the matcher function and the implementation of the matcher
27
//  interface in one place, ASTMatcherMacros.h defines macros that allow
28
//  implementing a matcher in a single place.
29
//
30
//  This file contains the base classes needed to construct the actual matchers.
31
//
32
//===----------------------------------------------------------------------===//
33
34
#ifndef LLVM_CLANG_ASTMATCHERS_ASTMATCHERSINTERNAL_H
35
#define LLVM_CLANG_ASTMATCHERS_ASTMATCHERSINTERNAL_H
36
37
#include "clang/AST/ASTTypeTraits.h"
38
#include "clang/AST/Decl.h"
39
#include "clang/AST/DeclCXX.h"
40
#include "clang/AST/DeclFriend.h"
41
#include "clang/AST/DeclTemplate.h"
42
#include "clang/AST/Expr.h"
43
#include "clang/AST/ExprObjC.h"
44
#include "clang/AST/ExprCXX.h"
45
#include "clang/AST/ExprObjC.h"
46
#include "clang/AST/NestedNameSpecifier.h"
47
#include "clang/AST/Stmt.h"
48
#include "clang/AST/TemplateName.h"
49
#include "clang/AST/Type.h"
50
#include "clang/AST/TypeLoc.h"
51
#include "clang/Basic/LLVM.h"
52
#include "clang/Basic/OperatorKinds.h"
53
#include "llvm/ADT/APFloat.h"
54
#include "llvm/ADT/ArrayRef.h"
55
#include "llvm/ADT/IntrusiveRefCntPtr.h"
56
#include "llvm/ADT/None.h"
57
#include "llvm/ADT/Optional.h"
58
#include "llvm/ADT/STLExtras.h"
59
#include "llvm/ADT/SmallVector.h"
60
#include "llvm/ADT/StringRef.h"
61
#include "llvm/ADT/iterator.h"
62
#include "llvm/Support/Casting.h"
63
#include "llvm/Support/ManagedStatic.h"
64
#include <algorithm>
65
#include <cassert>
66
#include <cstddef>
67
#include <cstdint>
68
#include <map>
69
#include <string>
70
#include <tuple>
71
#include <type_traits>
72
#include <utility>
73
#include <vector>
74
75
namespace clang {
76
77
class ASTContext;
78
79
namespace ast_matchers {
80
81
class BoundNodes;
82
83
namespace internal {
84
85
/// Variadic function object.
86
///
87
/// Most of the functions below that use VariadicFunction could be implemented
88
/// using plain C++11 variadic functions, but the function object allows us to
89
/// capture it on the dynamic matcher registry.
90
template <typename ResultT, typename ArgT,
91
          ResultT (*Func)(ArrayRef<const ArgT *>)>
92
struct VariadicFunction {
93
20.3k
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::VarDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::VarDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::VarDecl> const*>))>::operator()() const
Line
Count
Source
93
168
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::BlockPointerType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::BlockPointerType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BlockPointerType> const*>))>::operator()() const
Line
Count
Source
93
364
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::DeclStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::DeclStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::DeclStmt> const*>))>::operator()() const
Line
Count
Source
93
376
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::PointerType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::PointerType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::PointerType> const*>))>::operator()() const
Line
Count
Source
93
20
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::ObjCObjectPointerType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType> const*>))>::operator()() const
Line
Count
Source
93
211
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCAutoreleasePoolStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt> const*>))>::operator()() const
Line
Count
Source
93
368
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::IfStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::IfStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::IfStmt> const*>))>::operator()() const
Line
Count
Source
93
27
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::SwitchStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::SwitchStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::SwitchStmt> const*>))>::operator()() const
Line
Count
Source
93
183
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ConditionalOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ConditionalOperator> const*>))>::operator()() const
Line
Count
Source
93
15
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::IntegerLiteral>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::IntegerLiteral>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::IntegerLiteral> const*>))>::operator()() const
Line
Count
Source
93
518
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::GotoStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::GotoStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::GotoStmt> const*>))>::operator()() const
Line
Count
Source
93
165
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ReturnStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ReturnStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ReturnStmt> const*>))>::operator()() const
Line
Count
Source
93
167
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::CXXMethodDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl> const*>))>::operator()() const
Line
Count
Source
93
1.55k
  ResultT operator()() const { return Func(None); }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::ReferenceType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::ReferenceType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ReferenceType> const*>))>::operator()() const
Line
Count
Source
93
16.1k
  ResultT operator()() const { return Func(None); }
94
95
  template <typename... ArgsT>
96
286k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
286k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
286k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CallExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CallExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CallExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::CallExpr> const&) const
Line
Count
Source
96
19.3k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
19.3k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
19.3k
  }
clang::ast_matchers::internal::BindableMatcher<clang::QualType> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::QualType>, clang::ast_matchers::internal::Matcher<clang::QualType>, &(clang::ast_matchers::internal::BindableMatcher<clang::QualType> clang::ast_matchers::internal::makeAllOfComposite<clang::QualType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::QualType> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::QualType> const&) const
Line
Count
Source
96
17.7k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
17.7k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
17.7k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::FunctionDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::FunctionDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const&) const
Line
Count
Source
96
2.26k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
2.26k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
2.26k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::IntegerLiteral>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::IntegerLiteral>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::IntegerLiteral> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::IntegerLiteral> const&) const
Line
Count
Source
96
1.24k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
1.24k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
1.24k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::VarDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::VarDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::VarDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::VarDecl> const&) const
Line
Count
Source
96
70.0k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
70.0k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
70.0k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::BinaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const*>))>::operator()<clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasRHS0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::ArraySubscriptExpr>)> >(clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&, clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasRHS0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::ArraySubscriptExpr>)> const&) const
Line
Count
Source
96
315
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
315
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
315
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::DeclRefExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::DeclRefExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::DeclRefExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::DeclRefExpr> const&) const
Line
Count
Source
96
68.5k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
68.5k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
68.5k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::Stmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeAllOfComposite<clang::Stmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::Stmt> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&) const
Line
Count
Source
96
18.5k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
18.5k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
18.5k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCMessageExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&) const
Line
Count
Source
96
583
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
583
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
583
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CompoundStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const*>))>::operator()<clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> >(clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> const&, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> const&) const
Line
Count
Source
96
75
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
75
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
75
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CompoundStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const*>))>::operator()<clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> >(clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> const&, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> const&, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> const&) const
Line
Count
Source
96
75
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
75
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
75
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::Expr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::Expr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::Expr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::Expr> const&) const
Line
Count
Source
96
5.34k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
5.34k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
5.34k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::TypedefType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::TypedefType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::TypedefType> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::TypedefType> const&) const
Line
Count
Source
96
673
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
673
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
673
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::TypedefDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::TypedefDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::TypedefDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::TypedefDecl> const&) const
Line
Count
Source
96
913
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
913
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
913
  }
clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::PointerType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::PointerType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::PointerType> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::PointerType> const&) const
Line
Count
Source
96
720
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
720
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
720
  }
clang::ast_matchers::internal::TypeTraversePolymorphicMatcher<clang::QualType, clang::ast_matchers::internal::TypeMatcherpointeeGetter, clang::ast_matchers::internal::TypeTraverseMatcher, void (clang::ast_matchers::internal::TypeList<clang::BlockPointerType, clang::MemberPointerType, clang::PointerType, clang::ReferenceType>)> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::TypeTraversePolymorphicMatcher<clang::QualType, clang::ast_matchers::internal::TypeMatcherpointeeGetter, clang::ast_matchers::internal::TypeTraverseMatcher, void (clang::ast_matchers::internal::TypeList<clang::BlockPointerType, clang::MemberPointerType, clang::PointerType, clang::ReferenceType>)>, clang::ast_matchers::internal::Matcher<clang::QualType>, &(clang::ast_matchers::internal::TypeTraversePolymorphicMatcher<clang::QualType, clang::ast_matchers::internal::TypeMatcherpointeeGetter, clang::ast_matchers::internal::TypeTraverseMatcher, void (clang::ast_matchers::internal::TypeList<clang::BlockPointerType, clang::MemberPointerType, clang::PointerType, clang::ReferenceType>)>::create(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::QualType> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::QualType> const&) const
Line
Count
Source
96
2.07k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
2.07k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
2.07k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::RecordType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::RecordType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::RecordType> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::RecordType> const&) const
Line
Count
Source
96
227
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
227
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
227
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::CXXRecordDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl> const&) const
Line
Count
Source
96
1.57k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
1.57k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
1.57k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::ObjCObjectPointerType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType> const&) const
Line
Count
Source
96
224
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
224
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
224
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::ObjCInterfaceDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl> const&) const
Line
Count
Source
96
225
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
225
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
225
  }
clang::ast_matchers::internal::BindableMatcher<clang::QualType> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::QualType>, clang::ast_matchers::internal::Matcher<clang::QualType>, &(clang::ast_matchers::internal::BindableMatcher<clang::QualType> clang::ast_matchers::internal::makeAllOfComposite<clang::QualType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::QualType> const*>))>::operator()<clang::ast_matchers::internal::VariadicOperatorMatcher<clang::ast_matchers::internal::BindableMatcher<clang::Type> > >(clang::ast_matchers::internal::Matcher<clang::QualType> const&, clang::ast_matchers::internal::VariadicOperatorMatcher<clang::ast_matchers::internal::BindableMatcher<clang::Type> > const&) const
Line
Count
Source
96
224
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
224
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
224
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::BinaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&) const
Line
Count
Source
96
720
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
720
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
720
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::IfStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::IfStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::IfStmt> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::IfStmt> const&) const
Line
Count
Source
96
239
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
239
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
239
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ConditionalOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ConditionalOperator> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::ConditionalOperator> const&) const
Line
Count
Source
96
367
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
367
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
367
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::UnaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::UnaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const&) const
Line
Count
Source
96
242
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
242
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
242
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ExplicitCastExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr> const&) const
Line
Count
Source
96
606
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
606
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
606
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::DeclStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::DeclStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::DeclStmt> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::DeclStmt> const&) const
Line
Count
Source
96
16.6k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
16.6k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
16.6k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::VarDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::VarDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::VarDecl> const*>))>::operator()<clang::ast_matchers::internal::Matcher<clang::VarDecl> >(clang::ast_matchers::internal::Matcher<clang::VarDecl> const&, clang::ast_matchers::internal::Matcher<clang::VarDecl> const&) const
Line
Count
Source
96
255
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
255
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
255
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::ParmVarDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> const&) const
Line
Count
Source
96
16.9k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
16.9k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
16.9k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::BinaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const*>))>::operator()<clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasOperatorName0Matcher, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::UnaryOperator>)> >(clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&, clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasOperatorName0Matcher, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::UnaryOperator>)> const&) const
Line
Count
Source
96
210
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
210
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
210
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::UnaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::UnaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const*>))>::operator()<clang::ast_matchers::internal::Matcher<clang::UnaryOperator> >(clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const&, clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const&) const
Line
Count
Source
96
16.9k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
16.9k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
16.9k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::Decl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeAllOfComposite<clang::Decl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::Decl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::Decl> const&) const
Line
Count
Source
96
606
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
606
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
606
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::ObjCMethodDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl> const&) const
Line
Count
Source
96
215
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
215
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
215
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::BlockDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::BlockDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BlockDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::BlockDecl> const&) const
Line
Count
Source
96
212
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
212
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
212
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CStyleCastExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr> const&) const
Line
Count
Source
96
25
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
25
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
25
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::FieldDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::FieldDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::FieldDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::FieldDecl> const&) const
Line
Count
Source
96
103
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
103
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
103
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCMessageExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const*>))>::operator()<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, clang::ast_matchers::internal::Matcher<clang::Stmt> >(clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&, clang::ast_matchers::internal::Matcher<clang::Stmt> const&) const
Line
Count
Source
96
732
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
732
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
732
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCMessageExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const*>))>::operator()<clang::ast_matchers::internal::Matcher<clang::Stmt> >(clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&, clang::ast_matchers::internal::Matcher<clang::Stmt> const&) const
Line
Count
Source
96
366
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
366
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
366
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCAutoreleasePoolStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt> const*>))>::operator()<clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> >(clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt> const&, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> const&) const
Line
Count
Source
96
183
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
183
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
183
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::FunctionDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::FunctionDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const*>))>::operator()<clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> >(clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const&, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> const&, clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> const&) const
Line
Count
Source
96
183
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
183
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
183
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::MemberExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::MemberExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::MemberExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::MemberExpr> const&) const
Line
Count
Source
96
206
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
206
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
206
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::BinaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const*>))>::operator()<clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasLHS0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::ArraySubscriptExpr>)> >(clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&, clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasLHS0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::ArraySubscriptExpr>)> const&) const
Line
Count
Source
96
428
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
428
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
428
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCIvarRefExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr> const&) const
Line
Count
Source
96
11
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
11
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
11
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ForStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ForStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ForStmt> const*>))>::operator()<clang::ast_matchers::internal::Matcher<clang::ForStmt>, clang::ast_matchers::internal::Matcher<clang::ForStmt>, clang::ast_matchers::internal::VariadicOperatorMatcher<clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasBody0Matcher, clang::ast_matchers::internal::Matcher<clang::Stmt>, void (clang::ast_matchers::internal::TypeList<clang::DoStmt, clang::ForStmt, clang::WhileStmt, clang::CXXForRangeStmt, clang::FunctionDecl>)> > >(clang::ast_matchers::internal::Matcher<clang::ForStmt> const&, clang::ast_matchers::internal::Matcher<clang::ForStmt> const&, clang::ast_matchers::internal::Matcher<clang::ForStmt> const&, clang::ast_matchers::internal::VariadicOperatorMatcher<clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasBody0Matcher, clang::ast_matchers::internal::Matcher<clang::Stmt>, void (clang::ast_matchers::internal::TypeList<clang::DoStmt, clang::ForStmt, clang::WhileStmt, clang::CXXForRangeStmt, clang::FunctionDecl>)> > const&) const
Line
Count
Source
96
164
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
164
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
164
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::BinaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const*>))>::operator()<clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator> >(clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&, clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&, clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&) const
Line
Count
Source
96
164
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
164
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
164
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CXXOperatorCallExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr> const&) const
Line
Count
Source
96
1.55k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
1.55k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
1.55k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CXXConstructExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr> const&) const
Line
Count
Source
96
224
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
224
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
224
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::CXXConstructorDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl> const&) const
Line
Count
Source
96
283
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
283
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
283
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::InitListExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::InitListExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::InitListExpr> const*>))>::operator()<>(clang::ast_matchers::internal::Matcher<clang::InitListExpr> const&) const
Line
Count
Source
96
16.1k
  ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const {
97
16.1k
    return Execute(Arg1, static_cast<const ArgT &>(Args)...);
98
16.1k
  }
99
100
  // We also allow calls with an already created array, in case the caller
101
  // already had it.
102
422
  ResultT operator()(ArrayRef<ArgT> Args) const {
103
422
    SmallVector<const ArgT*, 8> InnerArgs;
104
422
    for (const ArgT &Arg : Args)
105
6.51k
      InnerArgs.push_back(&Arg);
106
422
    return Func(InnerArgs);
107
422
  }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::Matcher<clang::NamedDecl>, llvm::StringRef, &(clang::ast_matchers::internal::hasAnyNameFunc(llvm::ArrayRef<llvm::StringRef const*>))>::operator()(llvm::ArrayRef<llvm::StringRef>) const
Line
Count
Source
102
211
  ResultT operator()(ArrayRef<ArgT> Args) const {
103
211
    SmallVector<const ArgT*, 8> InnerArgs;
104
211
    for (const ArgT &Arg : Args)
105
633
      InnerArgs.push_back(&Arg);
106
211
    return Func(InnerArgs);
107
211
  }
clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, llvm::StringRef, &(clang::ast_matchers::internal::hasAnySelectorFunc(llvm::ArrayRef<llvm::StringRef const*>))>::operator()(llvm::ArrayRef<llvm::StringRef>) const
Line
Count
Source
102
211
  ResultT operator()(ArrayRef<ArgT> Args) const {
103
211
    SmallVector<const ArgT*, 8> InnerArgs;
104
211
    for (const ArgT &Arg : Args)
105
5.88k
      InnerArgs.push_back(&Arg);
106
211
    return Func(InnerArgs);
107
211
  }
108
109
private:
110
  // Trampoline function to allow for implicit conversions to take place
111
  // before we make the array.
112
286k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
286k
    const ArgT *const ArgsArray[] = {&Args...};
114
286k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
286k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CallExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CallExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CallExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::CallExpr> >(clang::ast_matchers::internal::Matcher<clang::CallExpr> const&) const
Line
Count
Source
112
19.3k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
19.3k
    const ArgT *const ArgsArray[] = {&Args...};
114
19.3k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
19.3k
  }
clang::ast_matchers::internal::BindableMatcher<clang::QualType> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::QualType>, clang::ast_matchers::internal::Matcher<clang::QualType>, &(clang::ast_matchers::internal::BindableMatcher<clang::QualType> clang::ast_matchers::internal::makeAllOfComposite<clang::QualType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::QualType> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::QualType> >(clang::ast_matchers::internal::Matcher<clang::QualType> const&) const
Line
Count
Source
112
17.7k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
17.7k
    const ArgT *const ArgsArray[] = {&Args...};
114
17.7k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
17.7k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::FunctionDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::FunctionDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::FunctionDecl> >(clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const&) const
Line
Count
Source
112
2.26k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
2.26k
    const ArgT *const ArgsArray[] = {&Args...};
114
2.26k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
2.26k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::IntegerLiteral>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::IntegerLiteral>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::IntegerLiteral> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::IntegerLiteral> >(clang::ast_matchers::internal::Matcher<clang::IntegerLiteral> const&) const
Line
Count
Source
112
1.24k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
1.24k
    const ArgT *const ArgsArray[] = {&Args...};
114
1.24k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
1.24k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::VarDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::VarDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::VarDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::VarDecl> >(clang::ast_matchers::internal::Matcher<clang::VarDecl> const&) const
Line
Count
Source
112
70.0k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
70.0k
    const ArgT *const ArgsArray[] = {&Args...};
114
70.0k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
70.0k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::BinaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator> >(clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&, clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&) const
Line
Count
Source
112
953
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
953
    const ArgT *const ArgsArray[] = {&Args...};
114
953
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
953
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::DeclRefExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::DeclRefExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::DeclRefExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::DeclRefExpr> >(clang::ast_matchers::internal::Matcher<clang::DeclRefExpr> const&) const
Line
Count
Source
112
68.5k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
68.5k
    const ArgT *const ArgsArray[] = {&Args...};
114
68.5k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
68.5k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::Stmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeAllOfComposite<clang::Stmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::Stmt> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::Stmt> >(clang::ast_matchers::internal::Matcher<clang::Stmt> const&) const
Line
Count
Source
112
18.5k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
18.5k
    const ArgT *const ArgsArray[] = {&Args...};
114
18.5k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
18.5k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCMessageExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> >(clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&) const
Line
Count
Source
112
583
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
583
    const ArgT *const ArgsArray[] = {&Args...};
114
583
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
583
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CompoundStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt> >(clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&, clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&, clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&) const
Line
Count
Source
112
75
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
75
    const ArgT *const ArgsArray[] = {&Args...};
114
75
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
75
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CompoundStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt>, clang::ast_matchers::internal::Matcher<clang::CompoundStmt> >(clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&, clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&, clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&, clang::ast_matchers::internal::Matcher<clang::CompoundStmt> const&) const
Line
Count
Source
112
75
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
75
    const ArgT *const ArgsArray[] = {&Args...};
114
75
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
75
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::Expr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::Expr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::Expr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::Expr> >(clang::ast_matchers::internal::Matcher<clang::Expr> const&) const
Line
Count
Source
112
5.34k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
5.34k
    const ArgT *const ArgsArray[] = {&Args...};
114
5.34k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
5.34k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::TypedefType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::TypedefType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::TypedefType> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::TypedefType> >(clang::ast_matchers::internal::Matcher<clang::TypedefType> const&) const
Line
Count
Source
112
673
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
673
    const ArgT *const ArgsArray[] = {&Args...};
114
673
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
673
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::TypedefDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::TypedefDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::TypedefDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::TypedefDecl> >(clang::ast_matchers::internal::Matcher<clang::TypedefDecl> const&) const
Line
Count
Source
112
913
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
913
    const ArgT *const ArgsArray[] = {&Args...};
114
913
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
913
  }
clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::PointerType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::PointerType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::PointerType> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::PointerType> >(clang::ast_matchers::internal::Matcher<clang::PointerType> const&) const
Line
Count
Source
112
720
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
720
    const ArgT *const ArgsArray[] = {&Args...};
114
720
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
720
  }
clang::ast_matchers::internal::TypeTraversePolymorphicMatcher<clang::QualType, clang::ast_matchers::internal::TypeMatcherpointeeGetter, clang::ast_matchers::internal::TypeTraverseMatcher, void (clang::ast_matchers::internal::TypeList<clang::BlockPointerType, clang::MemberPointerType, clang::PointerType, clang::ReferenceType>)> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::TypeTraversePolymorphicMatcher<clang::QualType, clang::ast_matchers::internal::TypeMatcherpointeeGetter, clang::ast_matchers::internal::TypeTraverseMatcher, void (clang::ast_matchers::internal::TypeList<clang::BlockPointerType, clang::MemberPointerType, clang::PointerType, clang::ReferenceType>)>, clang::ast_matchers::internal::Matcher<clang::QualType>, &(clang::ast_matchers::internal::TypeTraversePolymorphicMatcher<clang::QualType, clang::ast_matchers::internal::TypeMatcherpointeeGetter, clang::ast_matchers::internal::TypeTraverseMatcher, void (clang::ast_matchers::internal::TypeList<clang::BlockPointerType, clang::MemberPointerType, clang::PointerType, clang::ReferenceType>)>::create(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::QualType> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::QualType> >(clang::ast_matchers::internal::Matcher<clang::QualType> const&) const
Line
Count
Source
112
2.07k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
2.07k
    const ArgT *const ArgsArray[] = {&Args...};
114
2.07k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
2.07k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::RecordType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::RecordType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::RecordType> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::RecordType> >(clang::ast_matchers::internal::Matcher<clang::RecordType> const&) const
Line
Count
Source
112
227
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
227
    const ArgT *const ArgsArray[] = {&Args...};
114
227
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
227
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::CXXRecordDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl> >(clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl> const&) const
Line
Count
Source
112
1.57k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
1.57k
    const ArgT *const ArgsArray[] = {&Args...};
114
1.57k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
1.57k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Type>, clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType>, &(clang::ast_matchers::internal::BindableMatcher<clang::Type> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Type, clang::ObjCObjectPointerType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType> >(clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType> const&) const
Line
Count
Source
112
224
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
224
    const ArgT *const ArgsArray[] = {&Args...};
114
224
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
224
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::ObjCInterfaceDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl> >(clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl> const&) const
Line
Count
Source
112
225
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
225
    const ArgT *const ArgsArray[] = {&Args...};
114
225
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
225
  }
clang::ast_matchers::internal::BindableMatcher<clang::QualType> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::QualType>, clang::ast_matchers::internal::Matcher<clang::QualType>, &(clang::ast_matchers::internal::BindableMatcher<clang::QualType> clang::ast_matchers::internal::makeAllOfComposite<clang::QualType>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::QualType> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::QualType>, clang::ast_matchers::internal::Matcher<clang::QualType> >(clang::ast_matchers::internal::Matcher<clang::QualType> const&, clang::ast_matchers::internal::Matcher<clang::QualType> const&) const
Line
Count
Source
112
231
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
231
    const ArgT *const ArgsArray[] = {&Args...};
114
231
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
231
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::BinaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> >(clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&) const
Line
Count
Source
112
720
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
720
    const ArgT *const ArgsArray[] = {&Args...};
114
720
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
720
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::IfStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::IfStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::IfStmt> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::IfStmt> >(clang::ast_matchers::internal::Matcher<clang::IfStmt> const&) const
Line
Count
Source
112
239
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
239
    const ArgT *const ArgsArray[] = {&Args...};
114
239
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
239
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ConditionalOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ConditionalOperator> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ConditionalOperator> >(clang::ast_matchers::internal::Matcher<clang::ConditionalOperator> const&) const
Line
Count
Source
112
367
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
367
    const ArgT *const ArgsArray[] = {&Args...};
114
367
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
367
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::UnaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::UnaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::UnaryOperator> >(clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const&) const
Line
Count
Source
112
242
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
242
    const ArgT *const ArgsArray[] = {&Args...};
114
242
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
242
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ExplicitCastExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr> >(clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr> const&) const
Line
Count
Source
112
606
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
606
    const ArgT *const ArgsArray[] = {&Args...};
114
606
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
606
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::DeclStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::DeclStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::DeclStmt> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::DeclStmt> >(clang::ast_matchers::internal::Matcher<clang::DeclStmt> const&) const
Line
Count
Source
112
16.6k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
16.6k
    const ArgT *const ArgsArray[] = {&Args...};
114
16.6k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
16.6k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::VarDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::VarDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::VarDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::VarDecl>, clang::ast_matchers::internal::Matcher<clang::VarDecl> >(clang::ast_matchers::internal::Matcher<clang::VarDecl> const&, clang::ast_matchers::internal::Matcher<clang::VarDecl> const&) const
Line
Count
Source
112
314
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
314
    const ArgT *const ArgsArray[] = {&Args...};
114
314
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
314
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::ParmVarDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> >(clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> const&) const
Line
Count
Source
112
16.9k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
16.9k
    const ArgT *const ArgsArray[] = {&Args...};
114
16.9k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
16.9k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::UnaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::UnaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::UnaryOperator>, clang::ast_matchers::internal::Matcher<clang::UnaryOperator> >(clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const&, clang::ast_matchers::internal::Matcher<clang::UnaryOperator> const&) const
Line
Count
Source
112
16.9k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
16.9k
    const ArgT *const ArgsArray[] = {&Args...};
114
16.9k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
16.9k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::Decl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeAllOfComposite<clang::Decl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::Decl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::Decl> >(clang::ast_matchers::internal::Matcher<clang::Decl> const&) const
Line
Count
Source
112
606
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
606
    const ArgT *const ArgsArray[] = {&Args...};
114
606
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
606
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::ObjCMethodDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl> >(clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl> const&) const
Line
Count
Source
112
215
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
215
    const ArgT *const ArgsArray[] = {&Args...};
114
215
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
215
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::BlockDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::BlockDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BlockDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::BlockDecl> >(clang::ast_matchers::internal::Matcher<clang::BlockDecl> const&) const
Line
Count
Source
112
212
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
212
    const ArgT *const ArgsArray[] = {&Args...};
114
212
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
212
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CStyleCastExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr> >(clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr> const&) const
Line
Count
Source
112
25
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
25
    const ArgT *const ArgsArray[] = {&Args...};
114
25
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
25
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::FieldDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::FieldDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::FieldDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::FieldDecl> >(clang::ast_matchers::internal::Matcher<clang::FieldDecl> const&) const
Line
Count
Source
112
103
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
103
    const ArgT *const ArgsArray[] = {&Args...};
114
103
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
103
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCMessageExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> >(clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&) const
Line
Count
Source
112
732
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
732
    const ArgT *const ArgsArray[] = {&Args...};
114
732
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
732
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCMessageExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> >(clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&, clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> const&) const
Line
Count
Source
112
370
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
370
    const ArgT *const ArgsArray[] = {&Args...};
114
370
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
370
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCAutoreleasePoolStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>, clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt> >(clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt> const&, clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt> const&) const
Line
Count
Source
112
183
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
183
    const ArgT *const ArgsArray[] = {&Args...};
114
183
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
183
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::FunctionDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::FunctionDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::FunctionDecl>, clang::ast_matchers::internal::Matcher<clang::FunctionDecl>, clang::ast_matchers::internal::Matcher<clang::FunctionDecl> >(clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const&, clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const&, clang::ast_matchers::internal::Matcher<clang::FunctionDecl> const&) const
Line
Count
Source
112
188
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
188
    const ArgT *const ArgsArray[] = {&Args...};
114
188
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
188
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::MemberExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::MemberExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::MemberExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::MemberExpr> >(clang::ast_matchers::internal::Matcher<clang::MemberExpr> const&) const
Line
Count
Source
112
206
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
206
    const ArgT *const ArgsArray[] = {&Args...};
114
206
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
206
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ObjCIvarRefExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr> >(clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr> const&) const
Line
Count
Source
112
11
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
11
    const ArgT *const ArgsArray[] = {&Args...};
114
11
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
11
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::ForStmt>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::ForStmt>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::ForStmt> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::ForStmt>, clang::ast_matchers::internal::Matcher<clang::ForStmt>, clang::ast_matchers::internal::Matcher<clang::ForStmt>, clang::ast_matchers::internal::Matcher<clang::ForStmt> >(clang::ast_matchers::internal::Matcher<clang::ForStmt> const&, clang::ast_matchers::internal::Matcher<clang::ForStmt> const&, clang::ast_matchers::internal::Matcher<clang::ForStmt> const&, clang::ast_matchers::internal::Matcher<clang::ForStmt> const&) const
Line
Count
Source
112
164
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
164
    const ArgT *const ArgsArray[] = {&Args...};
114
164
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
164
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::BinaryOperator>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator>, clang::ast_matchers::internal::Matcher<clang::BinaryOperator> >(clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&, clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&, clang::ast_matchers::internal::Matcher<clang::BinaryOperator> const&) const
Line
Count
Source
112
166
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
166
    const ArgT *const ArgsArray[] = {&Args...};
114
166
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
166
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CXXOperatorCallExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr> >(clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr> const&) const
Line
Count
Source
112
1.55k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
1.55k
    const ArgT *const ArgsArray[] = {&Args...};
114
1.55k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
1.55k
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::CXXConstructExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr> >(clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr> const&) const
Line
Count
Source
112
224
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
224
    const ArgT *const ArgsArray[] = {&Args...};
114
224
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
224
  }
clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Decl>, clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl>, &(clang::ast_matchers::internal::BindableMatcher<clang::Decl> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Decl, clang::CXXConstructorDecl>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl> >(clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl> const&) const
Line
Count
Source
112
283
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
283
    const ArgT *const ArgsArray[] = {&Args...};
114
283
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
283
  }
clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::VariadicFunction<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>, clang::ast_matchers::internal::Matcher<clang::InitListExpr>, &(clang::ast_matchers::internal::BindableMatcher<clang::Stmt> clang::ast_matchers::internal::makeDynCastAllOfComposite<clang::Stmt, clang::InitListExpr>(llvm::ArrayRef<clang::ast_matchers::internal::Matcher<clang::InitListExpr> const*>))>::Execute<clang::ast_matchers::internal::Matcher<clang::InitListExpr> >(clang::ast_matchers::internal::Matcher<clang::InitListExpr> const&) const
Line
Count
Source
112
16.1k
  template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) const {
113
16.1k
    const ArgT *const ArgsArray[] = {&Args...};
114
16.1k
    return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT)));
115
16.1k
  }
116
};
117
118
/// Unifies obtaining the underlying type of a regular node through
119
/// `getType` and a TypedefNameDecl node through `getUnderlyingType`.
120
2.75k
inline QualType getUnderlyingType(const Expr &Node) { return Node.getType(); }
121
122
1.79k
inline QualType getUnderlyingType(const ValueDecl &Node) {
123
1.79k
  return Node.getType();
124
1.79k
}
125
inline QualType getUnderlyingType(const TypedefNameDecl &Node) {
126
  return Node.getUnderlyingType();
127
}
128
inline QualType getUnderlyingType(const FriendDecl &Node) {
129
  if (const TypeSourceInfo *TSI = Node.getFriendType())
130
    return TSI->getType();
131
  return QualType();
132
}
133
134
/// Unifies obtaining the FunctionProtoType pointer from both
135
/// FunctionProtoType and FunctionDecl nodes..
136
inline const FunctionProtoType *
137
getFunctionProtoType(const FunctionProtoType &Node) {
138
  return &Node;
139
}
140
141
inline const FunctionProtoType *getFunctionProtoType(const FunctionDecl &Node) {
142
  return Node.getType()->getAs<FunctionProtoType>();
143
}
144
145
/// Internal version of BoundNodes. Holds all the bound nodes.
146
0
class BoundNodesMap {
Unexecuted instantiation: clang::ast_matchers::internal::BoundNodesMap::operator=(clang::ast_matchers::internal::BoundNodesMap&&)
Unexecuted instantiation: clang::ast_matchers::internal::BoundNodesMap::operator=(clang::ast_matchers::internal::BoundNodesMap const&)
147
public:
148
  /// Adds \c Node to the map with key \c ID.
149
  ///
150
  /// The node's base type should be in NodeBaseType or it will be unaccessible.
151
8.62k
  void addNode(StringRef ID, const ast_type_traits::DynTypedNode& DynNode) {
152
8.62k
    NodeMap[ID] = DynNode;
153
8.62k
  }
154
155
  /// Returns the AST node bound to \c ID.
156
  ///
157
  /// Returns NULL if there was no node bound to \c ID or if there is a node but
158
  /// it cannot be converted to the specified type.
159
  template <typename T>
160
4.77k
  const T *getNodeAs(StringRef ID) const {
161
4.77k
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
4.77k
    if (It == NodeMap.end()) {
163
1.03k
      return nullptr;
164
1.03k
    }
165
3.74k
    return It->second.get<T>();
166
3.74k
  }
clang::CallExpr const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::CallExpr>(llvm::StringRef) const
Line
Count
Source
160
33
  const T *getNodeAs(StringRef ID) const {
161
33
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
33
    if (It == NodeMap.end()) {
163
0
      return nullptr;
164
0
    }
165
33
    return It->second.get<T>();
166
33
  }
clang::Stmt const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::Stmt>(llvm::StringRef) const
Line
Count
Source
160
962
  const T *getNodeAs(StringRef ID) const {
161
962
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
962
    if (It == NodeMap.end()) {
163
219
      return nullptr;
164
219
    }
165
743
    return It->second.get<T>();
166
743
  }
clang::Expr const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::Expr>(llvm::StringRef) const
Line
Count
Source
160
879
  const T *getNodeAs(StringRef ID) const {
161
879
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
879
    if (It == NodeMap.end()) {
163
368
      return nullptr;
164
368
    }
165
511
    return It->second.get<T>();
166
511
  }
clang::Decl const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::Decl>(llvm::StringRef) const
Line
Count
Source
160
1.26k
  const T *getNodeAs(StringRef ID) const {
161
1.26k
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
1.26k
    if (It == NodeMap.end()) {
163
135
      return nullptr;
164
135
    }
165
1.13k
    return It->second.get<T>();
166
1.13k
  }
clang::QualType const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::QualType>(llvm::StringRef) const
Line
Count
Source
160
413
  const T *getNodeAs(StringRef ID) const {
161
413
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
413
    if (It == NodeMap.end()) {
163
285
      return nullptr;
164
285
    }
165
128
    return It->second.get<T>();
166
128
  }
clang::ParmVarDecl const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::ParmVarDecl>(llvm::StringRef) const
Line
Count
Source
160
70
  const T *getNodeAs(StringRef ID) const {
161
70
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
70
    if (It == NodeMap.end()) {
163
0
      return nullptr;
164
0
    }
165
70
    return It->second.get<T>();
166
70
  }
clang::ObjCMethodDecl const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::ObjCMethodDecl>(llvm::StringRef) const
Line
Count
Source
160
18
  const T *getNodeAs(StringRef ID) const {
161
18
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
18
    if (It == NodeMap.end()) {
163
13
      return nullptr;
164
13
    }
165
5
    return It->second.get<T>();
166
5
  }
clang::CastExpr const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::CastExpr>(llvm::StringRef) const
Line
Count
Source
160
1
  const T *getNodeAs(StringRef ID) const {
161
1
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
1
    if (It == NodeMap.end()) {
163
0
      return nullptr;
164
0
    }
165
1
    return It->second.get<T>();
166
1
  }
clang::ObjCMessageExpr const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::ObjCMessageExpr>(llvm::StringRef) const
Line
Count
Source
160
20
  const T *getNodeAs(StringRef ID) const {
161
20
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
20
    if (It == NodeMap.end()) {
163
2
      return nullptr;
164
2
    }
165
18
    return It->second.get<T>();
166
18
  }
clang::ObjCAutoreleasePoolStmt const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::ObjCAutoreleasePoolStmt>(llvm::StringRef) const
Line
Count
Source
160
20
  const T *getNodeAs(StringRef ID) const {
161
20
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
20
    if (It == NodeMap.end()) {
163
8
      return nullptr;
164
8
    }
165
12
    return It->second.get<T>();
166
12
  }
clang::MemberExpr const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::MemberExpr>(llvm::StringRef) const
Line
Count
Source
160
19
  const T *getNodeAs(StringRef ID) const {
161
19
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
19
    if (It == NodeMap.end()) {
163
0
      return nullptr;
164
0
    }
165
19
    return It->second.get<T>();
166
19
  }
clang::ObjCIvarRefExpr const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::ObjCIvarRefExpr>(llvm::StringRef) const
Line
Count
Source
160
2
  const T *getNodeAs(StringRef ID) const {
161
2
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
2
    if (It == NodeMap.end()) {
163
0
      return nullptr;
164
0
    }
165
2
    return It->second.get<T>();
166
2
  }
clang::VarDecl const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::VarDecl>(llvm::StringRef) const
Line
Count
Source
160
720
  const T *getNodeAs(StringRef ID) const {
161
720
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
720
    if (It == NodeMap.end()) {
163
0
      return nullptr;
164
0
    }
165
720
    return It->second.get<T>();
166
720
  }
clang::IntegerLiteral const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::IntegerLiteral>(llvm::StringRef) const
Line
Count
Source
160
240
  const T *getNodeAs(StringRef ID) const {
161
240
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
240
    if (It == NodeMap.end()) {
163
0
      return nullptr;
164
0
    }
165
240
    return It->second.get<T>();
166
240
  }
clang::BinaryOperator const* clang::ast_matchers::internal::BoundNodesMap::getNodeAs<clang::BinaryOperator>(llvm::StringRef) const
Line
Count
Source
160
112
  const T *getNodeAs(StringRef ID) const {
161
112
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
162
112
    if (It == NodeMap.end()) {
163
0
      return nullptr;
164
0
    }
165
112
    return It->second.get<T>();
166
112
  }
167
168
541
  ast_type_traits::DynTypedNode getNode(StringRef ID) const {
169
541
    IDToNodeMap::const_iterator It = NodeMap.find(ID);
170
541
    if (It == NodeMap.end()) {
171
4
      return ast_type_traits::DynTypedNode();
172
4
    }
173
537
    return It->second;
174
537
  }
175
176
  /// Imposes an order on BoundNodesMaps.
177
125
  bool operator<(const BoundNodesMap &Other) const {
178
125
    return NodeMap < Other.NodeMap;
179
125
  }
180
181
  /// A map from IDs to the bound nodes.
182
  ///
183
  /// Note that we're using std::map here, as for memoization:
184
  /// - we need a comparison operator
185
  /// - we need an assignment operator
186
  using IDToNodeMap = std::map<std::string, ast_type_traits::DynTypedNode>;
187
188
  const IDToNodeMap &getMap() const {
189
    return NodeMap;
190
  }
191
192
  /// Returns \c true if this \c BoundNodesMap can be compared, i.e. all
193
  /// stored nodes have memoization data.
194
650
  bool isComparable() const {
195
1.18k
    for (const auto &IDAndNode : NodeMap) {
196
1.18k
      if (!IDAndNode.second.getMemoizationData())
197
136
        return false;
198
1.18k
    }
199
650
    
return true514
;
200
650
  }
201
202
private:
203
  IDToNodeMap NodeMap;
204
};
205
206
/// Creates BoundNodesTree objects.
207
///
208
/// The tree builder is used during the matching process to insert the bound
209
/// nodes from the Id matcher.
210
0
class BoundNodesTreeBuilder {
211
public:
212
  /// A visitor interface to visit all BoundNodes results for a
213
  /// BoundNodesTree.
214
  class Visitor {
215
  public:
216
9.14k
    virtual ~Visitor() = default;
217
218
    /// Called multiple times during a single call to VisitMatches(...).
219
    ///
220
    /// 'BoundNodesView' contains the bound nodes for a single match.
221
    virtual void visitMatch(const BoundNodes& BoundNodesView) = 0;
222
  };
223
224
  /// Add a binding from an id to a node.
225
8.60k
  void setBinding(StringRef Id, const ast_type_traits::DynTypedNode &DynNode) {
226
8.60k
    if (Bindings.empty())
227
7.18k
      Bindings.emplace_back();
228
8.60k
    for (BoundNodesMap &Binding : Bindings)
229
8.62k
      Binding.addNode(Id, DynNode);
230
8.60k
  }
231
232
  /// Adds a branch in the tree.
233
  void addMatch(const BoundNodesTreeBuilder &Bindings);
234
235
  /// Visits all matches that this BoundNodesTree represents.
236
  ///
237
  /// The ownership of 'ResultVisitor' remains at the caller.
238
  void visitMatches(Visitor* ResultVisitor);
239
240
  template <typename ExcludePredicate>
241
310k
  bool removeBindings(const ExcludePredicate &Predicate) {
242
310k
    Bindings.erase(std::remove_if(Bindings.begin(), Bindings.end(), Predicate),
243
310k
                   Bindings.end());
244
310k
    return !Bindings.empty();
245
310k
  }
bool clang::ast_matchers::internal::BoundNodesTreeBuilder::removeBindings<clang::ast_matchers::internal::NotEqualsBoundNodePredicate>(clang::ast_matchers::internal::NotEqualsBoundNodePredicate const&)
Line
Count
Source
241
489
  bool removeBindings(const ExcludePredicate &Predicate) {
242
489
    Bindings.erase(std::remove_if(Bindings.begin(), Bindings.end(), Predicate),
243
489
                   Bindings.end());
244
489
    return !Bindings.empty();
245
489
  }
ASTMatchersInternal.cpp:bool clang::ast_matchers::internal::BoundNodesTreeBuilder::removeBindings<clang::ast_matchers::internal::DynTypedMatcher::matches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const::$_0>(clang::ast_matchers::internal::DynTypedMatcher::matches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const::$_0 const&)
Line
Count
Source
241
261k
  bool removeBindings(const ExcludePredicate &Predicate) {
242
261k
    Bindings.erase(std::remove_if(Bindings.begin(), Bindings.end(), Predicate),
243
261k
                   Bindings.end());
244
261k
    return !Bindings.empty();
245
261k
  }
ASTMatchersInternal.cpp:bool clang::ast_matchers::internal::BoundNodesTreeBuilder::removeBindings<clang::ast_matchers::internal::DynTypedMatcher::matchesNoKindCheck(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const::$_1>(clang::ast_matchers::internal::DynTypedMatcher::matchesNoKindCheck(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const::$_1 const&)
Line
Count
Source
241
47.8k
  bool removeBindings(const ExcludePredicate &Predicate) {
242
47.8k
    Bindings.erase(std::remove_if(Bindings.begin(), Bindings.end(), Predicate),
243
47.8k
                   Bindings.end());
244
47.8k
    return !Bindings.empty();
245
47.8k
  }
246
247
  /// Imposes an order on BoundNodesTreeBuilders.
248
2.22k
  bool operator<(const BoundNodesTreeBuilder &Other) const {
249
2.22k
    return Bindings < Other.Bindings;
250
2.22k
  }
251
252
  /// Returns \c true if this \c BoundNodesTreeBuilder can be compared,
253
  /// i.e. all stored node maps have memoization data.
254
12.2k
  bool isComparable() const {
255
12.2k
    for (const BoundNodesMap &NodesMap : Bindings) {
256
650
      if (!NodesMap.isComparable())
257
136
        return false;
258
650
    }
259
12.2k
    
return true12.1k
;
260
12.2k
  }
261
262
private:
263
  SmallVector<BoundNodesMap, 1> Bindings;
264
};
265
266
class ASTMatchFinder;
267
268
/// Generic interface for all matchers.
269
///
270
/// Used by the implementation of Matcher<T> and DynTypedMatcher.
271
/// In general, implement MatcherInterface<T> or SingleNodeMatcherInterface<T>
272
/// instead.
273
class DynMatcherInterface
274
    : public llvm::ThreadSafeRefCountedBase<DynMatcherInterface> {
275
public:
276
535k
  virtual ~DynMatcherInterface() = default;
277
278
  /// Returns true if \p DynNode can be matched.
279
  ///
280
  /// May bind \p DynNode to an ID via \p Builder, or recurse into
281
  /// the AST via \p Finder.
282
  virtual bool dynMatches(const ast_type_traits::DynTypedNode &DynNode,
283
                          ASTMatchFinder *Finder,
284
                          BoundNodesTreeBuilder *Builder) const = 0;
285
};
286
287
/// Generic interface for matchers on an AST node of type T.
288
///
289
/// Implement this if your matcher may need to inspect the children or
290
/// descendants of the node or bind matched nodes to names. If you are
291
/// writing a simple matcher that only inspects properties of the
292
/// current node and doesn't care about its children or descendants,
293
/// implement SingleNodeMatcherInterface instead.
294
template <typename T>
295
class MatcherInterface : public DynMatcherInterface {
296
public:
297
  /// Returns true if 'Node' can be matched.
298
  ///
299
  /// May bind 'Node' to an ID via 'Builder', or recurse into
300
  /// the AST via 'Finder'.
301
  virtual bool matches(const T &Node,
302
                       ASTMatchFinder *Finder,
303
                       BoundNodesTreeBuilder *Builder) const = 0;
304
305
  bool dynMatches(const ast_type_traits::DynTypedNode &DynNode,
306
                  ASTMatchFinder *Finder,
307
72.9k
                  BoundNodesTreeBuilder *Builder) const override {
308
72.9k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
72.9k
  }
clang::ast_matchers::internal::MatcherInterface<clang::CallExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
4.38k
                  BoundNodesTreeBuilder *Builder) const override {
308
4.38k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
4.38k
  }
clang::ast_matchers::internal::MatcherInterface<clang::QualType>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
10.6k
                  BoundNodesTreeBuilder *Builder) const override {
308
10.6k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
10.6k
  }
clang::ast_matchers::internal::MatcherInterface<clang::Expr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
6.23k
                  BoundNodesTreeBuilder *Builder) const override {
308
6.23k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
6.23k
  }
clang::ast_matchers::internal::MatcherInterface<clang::CXXRecordDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
3.12k
                  BoundNodesTreeBuilder *Builder) const override {
308
3.12k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
3.12k
  }
clang::ast_matchers::internal::MatcherInterface<clang::CXXMemberCallExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
98
                  BoundNodesTreeBuilder *Builder) const override {
308
98
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
98
  }
clang::ast_matchers::internal::MatcherInterface<clang::IntegerLiteral>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
326
                  BoundNodesTreeBuilder *Builder) const override {
308
326
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
326
  }
clang::ast_matchers::internal::MatcherInterface<clang::VarDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
2.45k
                  BoundNodesTreeBuilder *Builder) const override {
308
2.45k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
2.45k
  }
clang::ast_matchers::internal::MatcherInterface<clang::BinaryOperator>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
2.68k
                  BoundNodesTreeBuilder *Builder) const override {
308
2.68k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
2.68k
  }
clang::ast_matchers::internal::MatcherInterface<clang::DeclRefExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
1.34k
                  BoundNodesTreeBuilder *Builder) const override {
308
1.34k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
1.34k
  }
clang::ast_matchers::internal::MatcherInterface<clang::Stmt>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
11.3k
                  BoundNodesTreeBuilder *Builder) const override {
308
11.3k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
11.3k
  }
clang::ast_matchers::internal::MatcherInterface<clang::ObjCMessageExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
242
                  BoundNodesTreeBuilder *Builder) const override {
308
242
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
242
  }
clang::ast_matchers::internal::MatcherInterface<clang::CompoundStmt>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
467
                  BoundNodesTreeBuilder *Builder) const override {
308
467
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
467
  }
clang::ast_matchers::internal::MatcherInterface<clang::Decl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
2.97k
                  BoundNodesTreeBuilder *Builder) const override {
308
2.97k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
2.97k
  }
clang::ast_matchers::internal::MatcherInterface<clang::FieldDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
116
                  BoundNodesTreeBuilder *Builder) const override {
308
116
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
116
  }
clang::ast_matchers::internal::MatcherInterface<clang::FunctionDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
2.13k
                  BoundNodesTreeBuilder *Builder) const override {
308
2.13k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
2.13k
  }
clang::ast_matchers::internal::MatcherInterface<clang::InitListExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
184
                  BoundNodesTreeBuilder *Builder) const override {
308
184
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
184
  }
clang::ast_matchers::internal::MatcherInterface<clang::ForStmt>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
624
                  BoundNodesTreeBuilder *Builder) const override {
308
624
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
624
  }
clang::ast_matchers::internal::MatcherInterface<clang::NamedDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
16.3k
                  BoundNodesTreeBuilder *Builder) const override {
308
16.3k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
16.3k
  }
clang::ast_matchers::internal::MatcherInterface<clang::Type>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
1.25k
                  BoundNodesTreeBuilder *Builder) const override {
308
1.25k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
1.25k
  }
clang::ast_matchers::internal::MatcherInterface<clang::DeclStmt>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
422
                  BoundNodesTreeBuilder *Builder) const override {
308
422
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
422
  }
clang::ast_matchers::internal::MatcherInterface<clang::CXXConstructorDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
493
                  BoundNodesTreeBuilder *Builder) const override {
308
493
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
493
  }
clang::ast_matchers::internal::MatcherInterface<clang::CXXConstructExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
368
                  BoundNodesTreeBuilder *Builder) const override {
308
368
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
368
  }
clang::ast_matchers::internal::MatcherInterface<clang::IfStmt>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
179
                  BoundNodesTreeBuilder *Builder) const override {
308
179
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
179
  }
clang::ast_matchers::internal::MatcherInterface<clang::UnaryOperator>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
2.72k
                  BoundNodesTreeBuilder *Builder) const override {
308
2.72k
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
2.72k
  }
clang::ast_matchers::internal::MatcherInterface<clang::ExplicitCastExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
341
                  BoundNodesTreeBuilder *Builder) const override {
308
341
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
341
  }
clang::ast_matchers::internal::MatcherInterface<clang::AbstractConditionalOperator>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
65
                  BoundNodesTreeBuilder *Builder) const override {
308
65
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
65
  }
clang::ast_matchers::internal::MatcherInterface<clang::MemberExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
146
                  BoundNodesTreeBuilder *Builder) const override {
308
146
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
146
  }
clang::ast_matchers::internal::MatcherInterface<clang::ParmVarDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
362
                  BoundNodesTreeBuilder *Builder) const override {
308
362
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
362
  }
clang::ast_matchers::internal::MatcherInterface<clang::TypedefType>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
301
                  BoundNodesTreeBuilder *Builder) const override {
308
301
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
301
  }
clang::ast_matchers::internal::MatcherInterface<clang::RecordType>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
63
                  BoundNodesTreeBuilder *Builder) const override {
308
63
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
63
  }
clang::ast_matchers::internal::MatcherInterface<clang::PointerType>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
214
                  BoundNodesTreeBuilder *Builder) const override {
308
214
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
214
  }
clang::ast_matchers::internal::MatcherInterface<clang::ObjCObjectPointerType>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
120
                  BoundNodesTreeBuilder *Builder) const override {
308
120
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
120
  }
clang::ast_matchers::internal::MatcherInterface<clang::ConditionalOperator>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
25
                  BoundNodesTreeBuilder *Builder) const override {
308
25
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
25
  }
clang::ast_matchers::internal::MatcherInterface<clang::ObjCMethodDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
42
                  BoundNodesTreeBuilder *Builder) const override {
308
42
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
42
  }
clang::ast_matchers::internal::MatcherInterface<clang::BlockDecl>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
27
                  BoundNodesTreeBuilder *Builder) const override {
308
27
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
27
  }
clang::ast_matchers::internal::MatcherInterface<clang::CStyleCastExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
40
                  BoundNodesTreeBuilder *Builder) const override {
308
40
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
40
  }
clang::ast_matchers::internal::MatcherInterface<clang::ObjCAutoreleasePoolStmt>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
19
                  BoundNodesTreeBuilder *Builder) const override {
308
19
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
19
  }
clang::ast_matchers::internal::MatcherInterface<clang::ObjCIvarRefExpr>::dynMatches(clang::ast_type_traits::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
307
6
                  BoundNodesTreeBuilder *Builder) const override {
308
6
    return matches(DynNode.getUnchecked<T>(), Finder, Builder);
309
6
  }
310
};
311
312
/// Interface for matchers that only evaluate properties on a single
313
/// node.
314
template <typename T>
315
class SingleNodeMatcherInterface : public MatcherInterface<T> {
316
public:
317
  /// Returns true if the matcher matches the provided node.
318
  ///
319
  /// A subclass must implement this instead of Matches().
320
  virtual bool matchesNode(const T &Node) const = 0;
321
322
private:
323
  /// Implements MatcherInterface::Matches.
324
  bool matches(const T &Node,
325
               ASTMatchFinder * /* Finder */,
326
16.3k
               BoundNodesTreeBuilder * /*  Builder */) const override {
327
16.3k
    return matchesNode(Node);
328
16.3k
  }
clang::ast_matchers::internal::SingleNodeMatcherInterface<clang::IntegerLiteral>::matches(clang::IntegerLiteral const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
326
258
               BoundNodesTreeBuilder * /*  Builder */) const override {
327
258
    return matchesNode(Node);
328
258
  }
clang::ast_matchers::internal::SingleNodeMatcherInterface<clang::NamedDecl>::matches(clang::NamedDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
326
16.0k
               BoundNodesTreeBuilder * /*  Builder */) const override {
327
16.0k
    return matchesNode(Node);
328
16.0k
  }
329
};
330
331
template <typename> class Matcher;
332
333
/// Matcher that works on a \c DynTypedNode.
334
///
335
/// It is constructed from a \c Matcher<T> object and redirects most calls to
336
/// underlying matcher.
337
/// It checks whether the \c DynTypedNode is convertible into the type of the
338
/// underlying matcher and then do the actual match on the actual node, or
339
/// return false if it is not convertible.
340
class DynTypedMatcher {
341
public:
342
  /// Takes ownership of the provided implementation pointer.
343
  template <typename T>
344
  DynTypedMatcher(MatcherInterface<T> *Implementation)
345
      : SupportedKind(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()),
346
388k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::CallExpr>(clang::ast_matchers::internal::MatcherInterface<clang::CallExpr>*)
Line
Count
Source
346
24.5k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::QualType>(clang::ast_matchers::internal::MatcherInterface<clang::QualType>*)
Line
Count
Source
346
60.3k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::Expr>(clang::ast_matchers::internal::MatcherInterface<clang::Expr>*)
Line
Count
Source
346
12.9k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::NamedDecl>(clang::ast_matchers::internal::MatcherInterface<clang::NamedDecl>*)
Line
Count
Source
346
7.92k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::CXXRecordDecl>(clang::ast_matchers::internal::MatcherInterface<clang::CXXRecordDecl>*)
Line
Count
Source
346
4.32k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::CXXMemberCallExpr>(clang::ast_matchers::internal::MatcherInterface<clang::CXXMemberCallExpr>*)
Line
Count
Source
346
287
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::IntegerLiteral>(clang::ast_matchers::internal::MatcherInterface<clang::IntegerLiteral>*)
Line
Count
Source
346
1.29k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::VarDecl>(clang::ast_matchers::internal::MatcherInterface<clang::VarDecl>*)
Line
Count
Source
346
38.4k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::BinaryOperator>(clang::ast_matchers::internal::MatcherInterface<clang::BinaryOperator>*)
Line
Count
Source
346
7.24k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::DeclRefExpr>(clang::ast_matchers::internal::MatcherInterface<clang::DeclRefExpr>*)
Line
Count
Source
346
68.5k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::Stmt>(clang::ast_matchers::internal::MatcherInterface<clang::Stmt>*)
Line
Count
Source
346
8.95k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ObjCMessageExpr>(clang::ast_matchers::internal::MatcherInterface<clang::ObjCMessageExpr>*)
Line
Count
Source
346
3.14k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::CompoundStmt>(clang::ast_matchers::internal::MatcherInterface<clang::CompoundStmt>*)
Line
Count
Source
346
729
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::TypedefType>(clang::ast_matchers::internal::MatcherInterface<clang::TypedefType>*)
Line
Count
Source
346
674
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::RecordType>(clang::ast_matchers::internal::MatcherInterface<clang::RecordType>*)
Line
Count
Source
346
228
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::PointerType>(clang::ast_matchers::internal::MatcherInterface<clang::PointerType>*)
Line
Count
Source
346
721
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ObjCObjectPointerType>(clang::ast_matchers::internal::MatcherInterface<clang::ObjCObjectPointerType>*)
Line
Count
Source
346
224
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::Type>(clang::ast_matchers::internal::MatcherInterface<clang::Type>*)
Line
Count
Source
346
1.63k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::IfStmt>(clang::ast_matchers::internal::MatcherInterface<clang::IfStmt>*)
Line
Count
Source
346
464
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::AbstractConditionalOperator>(clang::ast_matchers::internal::MatcherInterface<clang::AbstractConditionalOperator>*)
Line
Count
Source
346
754
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ConditionalOperator>(clang::ast_matchers::internal::MatcherInterface<clang::ConditionalOperator>*)
Line
Count
Source
346
230
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::UnaryOperator>(clang::ast_matchers::internal::MatcherInterface<clang::UnaryOperator>*)
Line
Count
Source
346
35.6k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ExplicitCastExpr>(clang::ast_matchers::internal::MatcherInterface<clang::ExplicitCastExpr>*)
Line
Count
Source
346
1.05k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::DeclStmt>(clang::ast_matchers::internal::MatcherInterface<clang::DeclStmt>*)
Line
Count
Source
346
16.8k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ParmVarDecl>(clang::ast_matchers::internal::MatcherInterface<clang::ParmVarDecl>*)
Line
Count
Source
346
16.7k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ObjCMethodDecl>(clang::ast_matchers::internal::MatcherInterface<clang::ObjCMethodDecl>*)
Line
Count
Source
346
427
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::FunctionDecl>(clang::ast_matchers::internal::MatcherInterface<clang::FunctionDecl>*)
Line
Count
Source
346
3.83k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::BlockDecl>(clang::ast_matchers::internal::MatcherInterface<clang::BlockDecl>*)
Line
Count
Source
346
425
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::CStyleCastExpr>(clang::ast_matchers::internal::MatcherInterface<clang::CStyleCastExpr>*)
Line
Count
Source
346
34
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::FieldDecl>(clang::ast_matchers::internal::MatcherInterface<clang::FieldDecl>*)
Line
Count
Source
346
60
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::Decl>(clang::ast_matchers::internal::MatcherInterface<clang::Decl>*)
Line
Count
Source
346
49.8k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ObjCAutoreleasePoolStmt>(clang::ast_matchers::internal::MatcherInterface<clang::ObjCAutoreleasePoolStmt>*)
Line
Count
Source
346
366
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::MemberExpr>(clang::ast_matchers::internal::MatcherInterface<clang::MemberExpr>*)
Line
Count
Source
346
209
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ObjCIvarRefExpr>(clang::ast_matchers::internal::MatcherInterface<clang::ObjCIvarRefExpr>*)
Line
Count
Source
346
12
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::ForStmt>(clang::ast_matchers::internal::MatcherInterface<clang::ForStmt>*)
Line
Count
Source
346
664
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::CXXConstructorDecl>(clang::ast_matchers::internal::MatcherInterface<clang::CXXConstructorDecl>*)
Line
Count
Source
346
1.07k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::CXXConstructExpr>(clang::ast_matchers::internal::MatcherInterface<clang::CXXConstructExpr>*)
Line
Count
Source
346
1.14k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
clang::ast_matchers::internal::DynTypedMatcher::DynTypedMatcher<clang::InitListExpr>(clang::ast_matchers::internal::MatcherInterface<clang::InitListExpr>*)
Line
Count
Source
346
16.2k
        RestrictKind(SupportedKind), Implementation(Implementation) {}
347
348
  /// Construct from a variadic function.
349
  enum VariadicOperator {
350
    /// Matches nodes for which all provided matchers match.
351
    VO_AllOf,
352
353
    /// Matches nodes for which at least one of the provided matchers
354
    /// matches.
355
    VO_AnyOf,
356
357
    /// Matches nodes for which at least one of the provided matchers
358
    /// matches, but doesn't stop at the first match.
359
    VO_EachOf,
360
361
    /// Matches nodes that do not match the provided matcher.
362
    ///
363
    /// Uses the variadic matcher interface, but fails if
364
    /// InnerMatchers.size() != 1.
365
    VO_UnaryNot
366
  };
367
368
  static DynTypedMatcher
369
  constructVariadic(VariadicOperator Op,
370
                    ast_type_traits::ASTNodeKind SupportedKind,
371
                    std::vector<DynTypedMatcher> InnerMatchers);
372
373
  /// Get a "true" matcher for \p NodeKind.
374
  ///
375
  /// It only checks that the node is of the right kind.
376
  static DynTypedMatcher trueMatcher(ast_type_traits::ASTNodeKind NodeKind);
377
378
18.8k
  void setAllowBind(bool AB) { AllowBind = AB; }
379
380
  /// Check whether this matcher could ever match a node of kind \p Kind.
381
  /// \return \c false if this matcher will never match such a node. Otherwise,
382
  /// return \c true.
383
  bool canMatchNodesOfKind(ast_type_traits::ASTNodeKind Kind) const;
384
385
  /// Return a matcher that points to the same implementation, but
386
  ///   restricts the node types for \p Kind.
387
  DynTypedMatcher dynCastTo(const ast_type_traits::ASTNodeKind Kind) const;
388
389
  /// Returns true if the matcher matches the given \c DynNode.
390
  bool matches(const ast_type_traits::DynTypedNode &DynNode,
391
               ASTMatchFinder *Finder, BoundNodesTreeBuilder *Builder) const;
392
393
  /// Same as matches(), but skips the kind check.
394
  ///
395
  /// It is faster, but the caller must ensure the node is valid for the
396
  /// kind of this matcher.
397
  bool matchesNoKindCheck(const ast_type_traits::DynTypedNode &DynNode,
398
                          ASTMatchFinder *Finder,
399
                          BoundNodesTreeBuilder *Builder) const;
400
401
  /// Bind the specified \p ID to the matcher.
402
  /// \return A new matcher with the \p ID bound to it if this matcher supports
403
  ///   binding. Otherwise, returns an empty \c Optional<>.
404
  llvm::Optional<DynTypedMatcher> tryBind(StringRef ID) const;
405
406
  /// Returns a unique \p ID for the matcher.
407
  ///
408
  /// Casting a Matcher<T> to Matcher<U> creates a matcher that has the
409
  /// same \c Implementation pointer, but different \c RestrictKind. We need to
410
  /// include both in the ID to make it unique.
411
  ///
412
  /// \c MatcherIDType supports operator< and provides strict weak ordering.
413
  using MatcherIDType = std::pair<ast_type_traits::ASTNodeKind, uint64_t>;
414
12.1k
  MatcherIDType getID() const {
415
12.1k
    /// FIXME: Document the requirements this imposes on matcher
416
12.1k
    /// implementations (no new() implementation_ during a Matches()).
417
12.1k
    return std::make_pair(RestrictKind,
418
12.1k
                          reinterpret_cast<uint64_t>(Implementation.get()));
419
12.1k
  }
420
421
  /// Returns the type this matcher works on.
422
  ///
423
  /// \c matches() will always return false unless the node passed is of this
424
  /// or a derived type.
425
4.06k
  ast_type_traits::ASTNodeKind getSupportedKind() const {
426
4.06k
    return SupportedKind;
427
4.06k
  }
428
429
  /// Returns \c true if the passed \c DynTypedMatcher can be converted
430
  ///   to a \c Matcher<T>.
431
  ///
432
  /// This method verifies that the underlying matcher in \c Other can process
433
  /// nodes of types T.
434
3.18k
  template <typename T> bool canConvertTo() const {
435
3.18k
    return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
436
3.18k
  }
bool clang::ast_matchers::internal::DynTypedMatcher::canConvertTo<clang::Decl>() const
Line
Count
Source
434
1.63k
  template <typename T> bool canConvertTo() const {
435
1.63k
    return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
436
1.63k
  }
bool clang::ast_matchers::internal::DynTypedMatcher::canConvertTo<clang::QualType>() const
Line
Count
Source
434
792
  template <typename T> bool canConvertTo() const {
435
792
    return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
436
792
  }
bool clang::ast_matchers::internal::DynTypedMatcher::canConvertTo<clang::Stmt>() const
Line
Count
Source
434
694
  template <typename T> bool canConvertTo() const {
435
694
    return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
436
694
  }
bool clang::ast_matchers::internal::DynTypedMatcher::canConvertTo<clang::NestedNameSpecifier>() const
Line
Count
Source
434
36
  template <typename T> bool canConvertTo() const {
435
36
    return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
436
36
  }
bool clang::ast_matchers::internal::DynTypedMatcher::canConvertTo<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
434
20
  template <typename T> bool canConvertTo() const {
435
20
    return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
436
20
  }
bool clang::ast_matchers::internal::DynTypedMatcher::canConvertTo<clang::TypeLoc>() const
Line
Count
Source
434
13
  template <typename T> bool canConvertTo() const {
435
13
    return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
436
13
  }
bool clang::ast_matchers::internal::DynTypedMatcher::canConvertTo<clang::CXXCtorInitializer>() const
Line
Count
Source
434
3
  template <typename T> bool canConvertTo() const {
435
3
    return canConvertTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
436
3
  }
437
  bool canConvertTo(ast_type_traits::ASTNodeKind To) const;
438
439
  /// Construct a \c Matcher<T> interface around the dynamic matcher.
440
  ///
441
  /// This method asserts that \c canConvertTo() is \c true. Callers
442
  /// should call \c canConvertTo() first to make sure that \c this is
443
  /// compatible with T.
444
1.57k
  template <typename T> Matcher<T> convertTo() const {
445
1.57k
    assert(canConvertTo<T>());
446
1.57k
    return unconditionalConvertTo<T>();
447
1.57k
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::DynTypedMatcher::convertTo<clang::Decl>() const
Line
Count
Source
444
863
  template <typename T> Matcher<T> convertTo() const {
445
863
    assert(canConvertTo<T>());
446
863
    return unconditionalConvertTo<T>();
447
863
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::DynTypedMatcher::convertTo<clang::Stmt>() const
Line
Count
Source
444
676
  template <typename T> Matcher<T> convertTo() const {
445
676
    assert(canConvertTo<T>());
446
676
    return unconditionalConvertTo<T>();
447
676
  }
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifier> clang::ast_matchers::internal::DynTypedMatcher::convertTo<clang::NestedNameSpecifier>() const
Line
Count
Source
444
17
  template <typename T> Matcher<T> convertTo() const {
445
17
    assert(canConvertTo<T>());
446
17
    return unconditionalConvertTo<T>();
447
17
  }
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifierLoc> clang::ast_matchers::internal::DynTypedMatcher::convertTo<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
444
8
  template <typename T> Matcher<T> convertTo() const {
445
8
    assert(canConvertTo<T>());
446
8
    return unconditionalConvertTo<T>();
447
8
  }
clang::ast_matchers::internal::Matcher<clang::TypeLoc> clang::ast_matchers::internal::DynTypedMatcher::convertTo<clang::TypeLoc>() const
Line
Count
Source
444
11
  template <typename T> Matcher<T> convertTo() const {
445
11
    assert(canConvertTo<T>());
446
11
    return unconditionalConvertTo<T>();
447
11
  }
clang::ast_matchers::internal::Matcher<clang::CXXCtorInitializer> clang::ast_matchers::internal::DynTypedMatcher::convertTo<clang::CXXCtorInitializer>() const
Line
Count
Source
444
2
  template <typename T> Matcher<T> convertTo() const {
445
2
    assert(canConvertTo<T>());
446
2
    return unconditionalConvertTo<T>();
447
2
  }
448
449
  /// Same as \c convertTo(), but does not check that the underlying
450
  ///   matcher can handle a value of T.
451
  ///
452
  /// If it is not compatible, then this matcher will never match anything.
453
  template <typename T> Matcher<T> unconditionalConvertTo() const;
454
455
private:
456
 DynTypedMatcher(ast_type_traits::ASTNodeKind SupportedKind,
457
                 ast_type_traits::ASTNodeKind RestrictKind,
458
                 IntrusiveRefCntPtr<DynMatcherInterface> Implementation)
459
     : SupportedKind(SupportedKind), RestrictKind(RestrictKind),
460
144k
       Implementation(std::move(Implementation)) {}
461
462
  bool AllowBind = false;
463
  ast_type_traits::ASTNodeKind SupportedKind;
464
465
  /// A potentially stricter node kind.
466
  ///
467
  /// It allows to perform implicit and dynamic cast of matchers without
468
  /// needing to change \c Implementation.
469
  ast_type_traits::ASTNodeKind RestrictKind;
470
  IntrusiveRefCntPtr<DynMatcherInterface> Implementation;
471
};
472
473
/// Wrapper base class for a wrapping matcher.
474
///
475
/// This is just a container for a DynTypedMatcher that can be used as a base
476
/// class for another matcher.
477
template <typename T>
478
class WrapperMatcherInterface : public MatcherInterface<T> {
479
protected:
480
  explicit WrapperMatcherInterface(DynTypedMatcher &&InnerMatcher)
481
82.8k
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::CallExpr>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
1.57k
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::QualType>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
21.2k
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::VarDecl>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
445
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::Stmt>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
3.17k
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::CompoundStmt>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
714
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::TypedefType>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
674
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::RecordType>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
228
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::PointerType>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
721
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::ObjCObjectPointerType>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
224
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::Expr>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
1.64k
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::UnaryOperator>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
479
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::ExplicitCastExpr>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
448
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::ObjCMethodDecl>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
210
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::FunctionDecl>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
763
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::BlockDecl>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
210
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::CXXRecordDecl>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
51
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::Decl>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
311
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::ObjCAutoreleasePoolStmt>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
366
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::MemberExpr>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
18
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::ObjCIvarRefExpr>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
12
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::CXXConstructExpr>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
741
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::DeclRefExpr>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
16.1k
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::InitListExpr>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
16.1k
      : InnerMatcher(std::move(InnerMatcher)) {}
clang::ast_matchers::internal::WrapperMatcherInterface<clang::DeclStmt>::WrapperMatcherInterface(clang::ast_matchers::internal::DynTypedMatcher&&)
Line
Count
Source
481
16.2k
      : InnerMatcher(std::move(InnerMatcher)) {}
482
483
  const DynTypedMatcher InnerMatcher;
484
};
485
486
/// Wrapper of a MatcherInterface<T> *that allows copying.
487
///
488
/// A Matcher<Base> can be used anywhere a Matcher<Derived> is
489
/// required. This establishes an is-a relationship which is reverse
490
/// to the AST hierarchy. In other words, Matcher<T> is contravariant
491
/// with respect to T. The relationship is built via a type conversion
492
/// operator rather than a type hierarchy to be able to templatize the
493
/// type hierarchy instead of spelling it out.
494
template <typename T>
495
class Matcher {
496
public:
497
  /// Takes ownership of the provided implementation pointer.
498
  explicit Matcher(MatcherInterface<T> *Implementation)
499
367k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::CallExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::CallExpr>*)
Line
Count
Source
499
24.5k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::QualType>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::QualType>*)
Line
Count
Source
499
39.5k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::Expr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::Expr>*)
Line
Count
Source
499
12.9k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::NamedDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::NamedDecl>*)
Line
Count
Source
499
7.92k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::CXXRecordDecl>*)
Line
Count
Source
499
4.32k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::CXXMemberCallExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::CXXMemberCallExpr>*)
Line
Count
Source
499
287
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::IntegerLiteral>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::IntegerLiteral>*)
Line
Count
Source
499
1.29k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::VarDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::VarDecl>*)
Line
Count
Source
499
38.4k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::BinaryOperator>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::BinaryOperator>*)
Line
Count
Source
499
7.24k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::DeclRefExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::DeclRefExpr>*)
Line
Count
Source
499
68.5k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::Stmt>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::Stmt>*)
Line
Count
Source
499
8.95k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ObjCMessageExpr>*)
Line
Count
Source
499
3.14k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::CompoundStmt>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::CompoundStmt>*)
Line
Count
Source
499
729
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::TypedefType>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::TypedefType>*)
Line
Count
Source
499
674
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::RecordType>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::RecordType>*)
Line
Count
Source
499
228
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::PointerType>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::PointerType>*)
Line
Count
Source
499
721
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ObjCObjectPointerType>*)
Line
Count
Source
499
224
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::Type>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::Type>*)
Line
Count
Source
499
1.63k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::IfStmt>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::IfStmt>*)
Line
Count
Source
499
464
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::AbstractConditionalOperator>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::AbstractConditionalOperator>*)
Line
Count
Source
499
754
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ConditionalOperator>*)
Line
Count
Source
499
230
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::UnaryOperator>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::UnaryOperator>*)
Line
Count
Source
499
35.6k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ExplicitCastExpr>*)
Line
Count
Source
499
1.05k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::DeclStmt>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::DeclStmt>*)
Line
Count
Source
499
16.8k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ParmVarDecl>*)
Line
Count
Source
499
16.7k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ObjCMethodDecl>*)
Line
Count
Source
499
427
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::FunctionDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::FunctionDecl>*)
Line
Count
Source
499
3.83k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::BlockDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::BlockDecl>*)
Line
Count
Source
499
425
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::CStyleCastExpr>*)
Line
Count
Source
499
34
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::FieldDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::FieldDecl>*)
Line
Count
Source
499
60
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::Decl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::Decl>*)
Line
Count
Source
499
49.8k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ObjCAutoreleasePoolStmt>*)
Line
Count
Source
499
366
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::MemberExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::MemberExpr>*)
Line
Count
Source
499
209
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ObjCIvarRefExpr>*)
Line
Count
Source
499
12
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::ForStmt>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::ForStmt>*)
Line
Count
Source
499
664
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::CXXConstructorDecl>*)
Line
Count
Source
499
1.07k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::CXXConstructExpr>*)
Line
Count
Source
499
1.14k
      : Implementation(Implementation) {}
clang::ast_matchers::internal::Matcher<clang::InitListExpr>::Matcher(clang::ast_matchers::internal::MatcherInterface<clang::InitListExpr>*)
Line
Count
Source
499
16.2k
      : Implementation(Implementation) {}
500
501
  /// Implicitly converts \c Other to a Matcher<T>.
502
  ///
503
  /// Requires \c T to be derived from \c From.
504
  template <typename From>
505
  Matcher(const Matcher<From> &Other,
506
          typename std::enable_if<std::is_base_of<From, T>::value &&
507
                               !std::is_same<From, T>::value>::type * = nullptr)
508
163k
      : Implementation(restrictMatcher(Other.Implementation)) {
509
163k
    assert(Implementation.getSupportedKind().isSame(
510
163k
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
163k
  }
clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>::Matcher<clang::NamedDecl>(clang::ast_matchers::internal::Matcher<clang::NamedDecl> const&, std::__1::enable_if<(std::is_base_of<clang::NamedDecl, clang::CXXRecordDecl>::value) && (!(std::is_same<clang::NamedDecl, clang::CXXRecordDecl>::value)), void>::type*)
Line
Count
Source
508
1.58k
      : Implementation(restrictMatcher(Other.Implementation)) {
509
1.58k
    assert(Implementation.getSupportedKind().isSame(
510
1.58k
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
1.58k
  }
clang::ast_matchers::internal::Matcher<clang::FunctionDecl>::Matcher<clang::NamedDecl>(clang::ast_matchers::internal::Matcher<clang::NamedDecl> const&, std::__1::enable_if<(std::is_base_of<clang::NamedDecl, clang::FunctionDecl>::value) && (!(std::is_same<clang::NamedDecl, clang::FunctionDecl>::value)), void>::type*)
Line
Count
Source
508
2.20k
      : Implementation(restrictMatcher(Other.Implementation)) {
509
2.20k
    assert(Implementation.getSupportedKind().isSame(
510
2.20k
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
2.20k
  }
clang::ast_matchers::internal::Matcher<clang::Expr>::Matcher<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&, std::__1::enable_if<(std::is_base_of<clang::Stmt, clang::Expr>::value) && (!(std::is_same<clang::Stmt, clang::Expr>::value)), void>::type*)
Line
Count
Source
508
88.2k
      : Implementation(restrictMatcher(Other.Implementation)) {
509
88.2k
    assert(Implementation.getSupportedKind().isSame(
510
88.2k
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
88.2k
  }
clang::ast_matchers::internal::Matcher<clang::TypedefDecl>::Matcher<clang::NamedDecl>(clang::ast_matchers::internal::Matcher<clang::NamedDecl> const&, std::__1::enable_if<(std::is_base_of<clang::NamedDecl, clang::TypedefDecl>::value) && (!(std::is_same<clang::NamedDecl, clang::TypedefDecl>::value)), void>::type*)
Line
Count
Source
508
899
      : Implementation(restrictMatcher(Other.Implementation)) {
509
899
    assert(Implementation.getSupportedKind().isSame(
510
899
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
899
  }
clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl>::Matcher<clang::NamedDecl>(clang::ast_matchers::internal::Matcher<clang::NamedDecl> const&, std::__1::enable_if<(std::is_base_of<clang::NamedDecl, clang::ObjCInterfaceDecl>::value) && (!(std::is_same<clang::NamedDecl, clang::ObjCInterfaceDecl>::value)), void>::type*)
Line
Count
Source
508
225
      : Implementation(restrictMatcher(Other.Implementation)) {
509
225
    assert(Implementation.getSupportedKind().isSame(
510
225
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
225
  }
clang::ast_matchers::internal::Matcher<clang::DeclStmt>::Matcher<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&, std::__1::enable_if<(std::is_base_of<clang::Stmt, clang::DeclStmt>::value) && (!(std::is_same<clang::Stmt, clang::DeclStmt>::value)), void>::type*)
Line
Count
Source
508
231
      : Implementation(restrictMatcher(Other.Implementation)) {
509
231
    assert(Implementation.getSupportedKind().isSame(
510
231
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
231
  }
clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>::Matcher<clang::AbstractConditionalOperator>(clang::ast_matchers::internal::Matcher<clang::AbstractConditionalOperator> const&, std::__1::enable_if<(std::is_base_of<clang::AbstractConditionalOperator, clang::ConditionalOperator>::value) && (!(std::is_same<clang::AbstractConditionalOperator, clang::ConditionalOperator>::value)), void>::type*)
Line
Count
Source
508
743
      : Implementation(restrictMatcher(Other.Implementation)) {
509
743
    assert(Implementation.getSupportedKind().isSame(
510
743
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
743
  }
clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>::Matcher<clang::Decl>(clang::ast_matchers::internal::Matcher<clang::Decl> const&, std::__1::enable_if<(std::is_base_of<clang::Decl, clang::ParmVarDecl>::value) && (!(std::is_same<clang::Decl, clang::ParmVarDecl>::value)), void>::type*)
Line
Count
Source
508
16.9k
      : Implementation(restrictMatcher(Other.Implementation)) {
509
16.9k
    assert(Implementation.getSupportedKind().isSame(
510
16.9k
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
16.9k
  }
clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>::Matcher<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&, std::__1::enable_if<(std::is_base_of<clang::Stmt, clang::ObjCMessageExpr>::value) && (!(std::is_same<clang::Stmt, clang::ObjCMessageExpr>::value)), void>::type*)
Line
Count
Source
508
1.09k
      : Implementation(restrictMatcher(Other.Implementation)) {
509
1.09k
    assert(Implementation.getSupportedKind().isSame(
510
1.09k
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
1.09k
  }
clang::ast_matchers::internal::Matcher<clang::VarDecl>::Matcher<clang::Decl>(clang::ast_matchers::internal::Matcher<clang::Decl> const&, std::__1::enable_if<(std::is_base_of<clang::Decl, clang::VarDecl>::value) && (!(std::is_same<clang::Decl, clang::VarDecl>::value)), void>::type*)
Line
Count
Source
508
48.8k
      : Implementation(restrictMatcher(Other.Implementation)) {
509
48.8k
    assert(Implementation.getSupportedKind().isSame(
510
48.8k
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
48.8k
  }
clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr>::Matcher<clang::CallExpr>(clang::ast_matchers::internal::Matcher<clang::CallExpr> const&, std::__1::enable_if<(std::is_base_of<clang::CallExpr, clang::CXXOperatorCallExpr>::value) && (!(std::is_same<clang::CallExpr, clang::CXXOperatorCallExpr>::value)), void>::type*)
Line
Count
Source
508
2.20k
      : Implementation(restrictMatcher(Other.Implementation)) {
509
2.20k
    assert(Implementation.getSupportedKind().isSame(
510
2.20k
        ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
511
2.20k
  }
512
513
  /// Implicitly converts \c Matcher<Type> to \c Matcher<QualType>.
514
  ///
515
  /// The resulting matcher is not strict, i.e. ignores qualifiers.
516
  template <typename TypeT>
517
  Matcher(const Matcher<TypeT> &Other,
518
          typename std::enable_if<
519
            std::is_same<T, QualType>::value &&
520
            std::is_same<TypeT, Type>::value>::type* = nullptr)
521
20.7k
      : Implementation(new TypeToQualType<TypeT>(Other)) {}
522
523
  /// Convert \c this into a \c Matcher<T> by applying dyn_cast<> to the
524
  /// argument.
525
  /// \c To must be a base class of \c T.
526
  template <typename To>
527
275k
  Matcher<To> dynCastTo() const {
528
275k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
275k
    return Matcher<To>(Implementation);
530
275k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::CallExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
20.1k
  Matcher<To> dynCastTo() const {
528
20.1k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
20.1k
    return Matcher<To>(Implementation);
530
20.1k
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::FunctionDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
3.10k
  Matcher<To> dynCastTo() const {
528
3.10k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
3.10k
    return Matcher<To>(Implementation);
530
3.10k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::IntegerLiteral>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
1.78k
  Matcher<To> dynCastTo() const {
528
1.78k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
1.78k
    return Matcher<To>(Implementation);
530
1.78k
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::VarDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
70.7k
  Matcher<To> dynCastTo() const {
528
70.7k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
70.7k
    return Matcher<To>(Implementation);
530
70.7k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::BinaryOperator>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
1.84k
  Matcher<To> dynCastTo() const {
528
1.84k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
1.84k
    return Matcher<To>(Implementation);
530
1.84k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::DeclRefExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
68.5k
  Matcher<To> dynCastTo() const {
528
68.5k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
68.5k
    return Matcher<To>(Implementation);
530
68.5k
  }
clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::internal::Matcher<clang::BlockPointerType>::dynCastTo<clang::Type>() const
Line
Count
Source
527
364
  Matcher<To> dynCastTo() const {
528
364
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
364
    return Matcher<To>(Implementation);
530
364
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
1.68k
  Matcher<To> dynCastTo() const {
528
1.68k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
1.68k
    return Matcher<To>(Implementation);
530
1.68k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::CompoundStmt>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
398
  Matcher<To> dynCastTo() const {
528
398
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
398
    return Matcher<To>(Implementation);
530
398
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::Expr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
5.80k
  Matcher<To> dynCastTo() const {
528
5.80k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
5.80k
    return Matcher<To>(Implementation);
530
5.80k
  }
clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::internal::Matcher<clang::TypedefType>::dynCastTo<clang::Type>() const
Line
Count
Source
527
675
  Matcher<To> dynCastTo() const {
528
675
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
675
    return Matcher<To>(Implementation);
530
675
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::TypedefDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
914
  Matcher<To> dynCastTo() const {
528
914
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
914
    return Matcher<To>(Implementation);
530
914
  }
clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::internal::Matcher<clang::PointerType>::dynCastTo<clang::Type>() const
Line
Count
Source
527
741
  Matcher<To> dynCastTo() const {
528
741
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
741
    return Matcher<To>(Implementation);
530
741
  }
clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::internal::Matcher<clang::RecordType>::dynCastTo<clang::Type>() const
Line
Count
Source
527
230
  Matcher<To> dynCastTo() const {
528
230
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
230
    return Matcher<To>(Implementation);
530
230
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
2.17k
  Matcher<To> dynCastTo() const {
528
2.17k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
2.17k
    return Matcher<To>(Implementation);
530
2.17k
  }
clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType>::dynCastTo<clang::Type>() const
Line
Count
Source
527
435
  Matcher<To> dynCastTo() const {
528
435
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
435
    return Matcher<To>(Implementation);
530
435
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
225
  Matcher<To> dynCastTo() const {
528
225
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
225
    return Matcher<To>(Implementation);
530
225
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::IfStmt>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
268
  Matcher<To> dynCastTo() const {
528
268
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
268
    return Matcher<To>(Implementation);
530
268
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::DeclStmt>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
17.0k
  Matcher<To> dynCastTo() const {
528
17.0k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
17.0k
    return Matcher<To>(Implementation);
530
17.0k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
388
  Matcher<To> dynCastTo() const {
528
388
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
388
    return Matcher<To>(Implementation);
530
388
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::UnaryOperator>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
17.4k
  Matcher<To> dynCastTo() const {
528
17.4k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
17.4k
    return Matcher<To>(Implementation);
530
17.4k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
606
  Matcher<To> dynCastTo() const {
528
606
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
606
    return Matcher<To>(Implementation);
530
606
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
16.9k
  Matcher<To> dynCastTo() const {
528
16.9k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
16.9k
    return Matcher<To>(Implementation);
530
16.9k
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
216
  Matcher<To> dynCastTo() const {
528
216
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
216
    return Matcher<To>(Implementation);
530
216
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::BlockDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
212
  Matcher<To> dynCastTo() const {
528
212
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
212
    return Matcher<To>(Implementation);
530
212
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
27
  Matcher<To> dynCastTo() const {
528
27
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
27
    return Matcher<To>(Implementation);
530
27
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::FieldDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
138
  Matcher<To> dynCastTo() const {
528
138
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
138
    return Matcher<To>(Implementation);
530
138
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
551
  Matcher<To> dynCastTo() const {
528
551
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
551
    return Matcher<To>(Implementation);
530
551
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::MemberExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
225
  Matcher<To> dynCastTo() const {
528
225
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
225
    return Matcher<To>(Implementation);
530
225
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::SwitchStmt>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
196
  Matcher<To> dynCastTo() const {
528
196
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
196
    return Matcher<To>(Implementation);
530
196
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
12
  Matcher<To> dynCastTo() const {
528
12
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
12
    return Matcher<To>(Implementation);
530
12
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::ForStmt>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
183
  Matcher<To> dynCastTo() const {
528
183
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
183
    return Matcher<To>(Implementation);
530
183
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::GotoStmt>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
165
  Matcher<To> dynCastTo() const {
528
165
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
165
    return Matcher<To>(Implementation);
530
165
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::ReturnStmt>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
432
  Matcher<To> dynCastTo() const {
528
432
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
432
    return Matcher<To>(Implementation);
530
432
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
2.21k
  Matcher<To> dynCastTo() const {
528
2.21k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
2.21k
    return Matcher<To>(Implementation);
530
2.21k
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
3.22k
  Matcher<To> dynCastTo() const {
528
3.22k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
3.22k
    return Matcher<To>(Implementation);
530
3.22k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
622
  Matcher<To> dynCastTo() const {
528
622
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
622
    return Matcher<To>(Implementation);
530
622
  }
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl>::dynCastTo<clang::Decl>() const
Line
Count
Source
527
1.09k
  Matcher<To> dynCastTo() const {
528
1.09k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
1.09k
    return Matcher<To>(Implementation);
530
1.09k
  }
clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::internal::Matcher<clang::ReferenceType>::dynCastTo<clang::Type>() const
Line
Count
Source
527
17.3k
  Matcher<To> dynCastTo() const {
528
17.3k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
17.3k
    return Matcher<To>(Implementation);
530
17.3k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::InitListExpr>::dynCastTo<clang::Stmt>() const
Line
Count
Source
527
16.1k
  Matcher<To> dynCastTo() const {
528
16.1k
    static_assert(std::is_base_of<To, T>::value, "Invalid dynCast call.");
529
16.1k
    return Matcher<To>(Implementation);
530
16.1k
  }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::Stmt> clang::ast_matchers::internal::Matcher<clang::CXXConstCastExpr>::dynCastTo<clang::Stmt>() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::internal::Matcher<clang::TagType>::dynCastTo<clang::Type>() const
531
532
  /// Forwards the call to the underlying MatcherInterface<T> pointer.
533
  bool matches(const T &Node,
534
               ASTMatchFinder *Finder,
535
25.1k
               BoundNodesTreeBuilder *Builder) const {
536
25.1k
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
25.1k
                                  Finder, Builder);
538
25.1k
  }
clang::ast_matchers::internal::Matcher<clang::Expr>::matches(clang::Expr const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
6.82k
               BoundNodesTreeBuilder *Builder) const {
536
6.82k
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
6.82k
                                  Finder, Builder);
538
6.82k
  }
clang::ast_matchers::internal::Matcher<clang::ClassTemplateDecl>::matches(clang::ClassTemplateDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
10
               BoundNodesTreeBuilder *Builder) const {
536
10
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
10
                                  Finder, Builder);
538
10
  }
clang::ast_matchers::internal::Matcher<clang::QualType>::matches(clang::QualType const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
8.43k
               BoundNodesTreeBuilder *Builder) const {
536
8.43k
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
8.43k
                                  Finder, Builder);
538
8.43k
  }
clang::ast_matchers::internal::Matcher<clang::TemplateName>::matches(clang::TemplateName const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
2
               BoundNodesTreeBuilder *Builder) const {
536
2
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
2
                                  Finder, Builder);
538
2
  }
clang::ast_matchers::internal::Matcher<clang::Decl>::matches(clang::Decl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
1.70k
               BoundNodesTreeBuilder *Builder) const {
536
1.70k
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
1.70k
                                  Finder, Builder);
538
1.70k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt>::matches(clang::Stmt const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
3.59k
               BoundNodesTreeBuilder *Builder) const {
536
3.59k
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
3.59k
                                  Finder, Builder);
538
3.59k
  }
clang::ast_matchers::internal::Matcher<clang::VarDecl>::matches(clang::VarDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
16
               BoundNodesTreeBuilder *Builder) const {
536
16
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
16
                                  Finder, Builder);
538
16
  }
clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>::matches(clang::CXXRecordDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
2.04k
               BoundNodesTreeBuilder *Builder) const {
536
2.04k
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
2.04k
                                  Finder, Builder);
538
2.04k
  }
clang::ast_matchers::internal::Matcher<clang::NamedDecl>::matches(clang::NamedDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
577
               BoundNodesTreeBuilder *Builder) const {
536
577
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
577
                                  Finder, Builder);
538
577
  }
clang::ast_matchers::internal::Matcher<clang::TypeLoc>::matches(clang::TypeLoc const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
347
               BoundNodesTreeBuilder *Builder) const {
536
347
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
347
                                  Finder, Builder);
538
347
  }
clang::ast_matchers::internal::Matcher<clang::Type>::matches(clang::Type const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
613
               BoundNodesTreeBuilder *Builder) const {
536
613
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
613
                                  Finder, Builder);
538
613
  }
clang::ast_matchers::internal::Matcher<clang::CXXMemberCallExpr>::matches(clang::CXXMemberCallExpr const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
14
               BoundNodesTreeBuilder *Builder) const {
536
14
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
14
                                  Finder, Builder);
538
14
  }
clang::ast_matchers::internal::Matcher<clang::UsingShadowDecl>::matches(clang::UsingShadowDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
12
               BoundNodesTreeBuilder *Builder) const {
536
12
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
12
                                  Finder, Builder);
538
12
  }
clang::ast_matchers::internal::Matcher<clang::FieldDecl>::matches(clang::FieldDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
36
               BoundNodesTreeBuilder *Builder) const {
536
36
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
36
                                  Finder, Builder);
538
36
  }
clang::ast_matchers::internal::Matcher<clang::DeclStmt>::matches(clang::DeclStmt const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
12
               BoundNodesTreeBuilder *Builder) const {
536
12
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
12
                                  Finder, Builder);
538
12
  }
clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl>::matches(clang::CXXMethodDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
220
               BoundNodesTreeBuilder *Builder) const {
536
220
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
220
                                  Finder, Builder);
538
220
  }
clang::ast_matchers::internal::Matcher<clang::ValueDecl>::matches(clang::ValueDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
12
               BoundNodesTreeBuilder *Builder) const {
536
12
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
12
                                  Finder, Builder);
538
12
  }
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifier>::matches(clang::NestedNameSpecifier const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
64
               BoundNodesTreeBuilder *Builder) const {
536
64
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
64
                                  Finder, Builder);
538
64
  }
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifierLoc>::matches(clang::NestedNameSpecifierLoc const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
46
               BoundNodesTreeBuilder *Builder) const {
536
46
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
46
                                  Finder, Builder);
538
46
  }
clang::ast_matchers::internal::Matcher<clang::NamespaceDecl>::matches(clang::NamespaceDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
12
               BoundNodesTreeBuilder *Builder) const {
536
12
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
12
                                  Finder, Builder);
538
12
  }
clang::ast_matchers::internal::Matcher<clang::SwitchCase>::matches(clang::SwitchCase const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
23
               BoundNodesTreeBuilder *Builder) const {
536
23
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
23
                                  Finder, Builder);
538
23
  }
clang::ast_matchers::internal::Matcher<clang::CXXCtorInitializer>::matches(clang::CXXCtorInitializer const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
72
               BoundNodesTreeBuilder *Builder) const {
536
72
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
72
                                  Finder, Builder);
538
72
  }
clang::ast_matchers::internal::Matcher<clang::FunctionDecl>::matches(clang::FunctionDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
16
               BoundNodesTreeBuilder *Builder) const {
536
16
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
16
                                  Finder, Builder);
538
16
  }
clang::ast_matchers::internal::Matcher<clang::OMPClause>::matches(clang::OMPClause const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
24
               BoundNodesTreeBuilder *Builder) const {
536
24
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
24
                                  Finder, Builder);
538
24
  }
clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>::matches(clang::ParmVarDecl const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
535
444
               BoundNodesTreeBuilder *Builder) const {
536
444
    return Implementation.matches(ast_type_traits::DynTypedNode::create(Node),
537
444
                                  Finder, Builder);
538
444
  }
539
540
  /// Returns an ID that uniquely identifies the matcher.
541
  DynTypedMatcher::MatcherIDType getID() const {
542
    return Implementation.getID();
543
  }
544
545
  /// Extract the dynamic matcher.
546
  ///
547
  /// The returned matcher keeps the same restrictions as \c this and remembers
548
  /// that it is meant to support nodes of type \c T.
549
372k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
4.45k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::CallExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
3.95k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::Decl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
56.2k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::QualType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
21.9k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::Expr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
46.9k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::FunctionDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
2.39k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::IntegerLiteral>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
53
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::VarDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
34.2k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::Stmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
115k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::BinaryOperator>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
9.03k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::DeclRefExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
9
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::BlockPointerType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
1
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::Type>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
20.8k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
4.75k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::CompoundStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
831
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::TypedefType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
1
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::TypedefDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
2
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::PointerType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
1
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::RecordType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
1
  operator DynTypedMatcher() const { return Implementation; }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
clang::ast_matchers::internal::Matcher<clang::IfStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
674
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::DeclStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
2
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
1.42k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::UnaryOperator>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
36.4k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
896
  operator DynTypedMatcher() const { return Implementation; }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
426
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::BlockDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
423
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
18
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::FieldDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
57
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
366
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::MemberExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
5
  operator DynTypedMatcher() const { return Implementation; }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SwitchStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
1
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::ForStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
821
  operator DynTypedMatcher() const { return Implementation; }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::GotoStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
clang::ast_matchers::internal::Matcher<clang::ReturnStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
6
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
2.10k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
3.68k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
1.17k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
2.44k
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::ReferenceType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
1
  operator DynTypedMatcher() const { return Implementation; }
clang::ast_matchers::internal::Matcher<clang::InitListExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Line
Count
Source
549
76
  operator DynTypedMatcher() const { return Implementation; }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TypeAliasDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TypeAliasTemplateDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LinkageSpecDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LabelDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::NamespaceAliasDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ClassTemplatePartialSpecializationDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DeclaratorDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AccessSpecDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateName>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::NonTypeTemplateParmDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TemplateTypeParmDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ValueDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDestructorDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::EnumConstantDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXConversionDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::IndirectFieldDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::FriendDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LambdaExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCImplementationDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCProtocolDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCCategoryDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCCategoryImplDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCIvarDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCPropertyDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAtThrowStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAtTryStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAtCatchStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCAtFinallyStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ExprWithCleanups>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXStdInitializerListExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ImplicitValueInitExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ParenListExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SubstNonTypeTemplateParmExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UsingDirectiveDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnresolvedLookupExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnresolvedUsingValueDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnresolvedUsingTypenameDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ConstantExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ParenExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXUnresolvedConstructExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXThisExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXBindTemporaryExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::MaterializeTemporaryExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDeleteExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDefaultArgExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BlockExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BreakStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ContinueStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SwitchCase>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CaseStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DefaultStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXTryStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXThrowExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::NullStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AsmStmt>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::StringLiteral>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ImaginaryLiteral>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UserDefinedLiteral>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ChooseExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::OpaqueValueExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::StaticAssertDecl>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXReinterpretCastExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXStaticCastExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXDynamicCastExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXConstCastExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXFunctionalCastExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXTemporaryObjectExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CUDAKernelCallExpr>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::BuiltinType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ConstantArrayType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DependentSizedArrayType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::IncompleteArrayType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::VariableArrayType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AtomicType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::AutoType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DecltypeType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::FunctionType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ParenType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::LValueReferenceType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::RValueReferenceType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::UnaryTransformType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::SubstTemplateTypeParmType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::DecayedType>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::OMPExecutableDirective>::operator clang::ast_matchers::internal::DynTypedMatcher() const
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::OMPDefaultClause>::operator clang::ast_matchers::internal::DynTypedMatcher() const
550
551
  /// Allows the conversion of a \c Matcher<Type> to a \c
552
  /// Matcher<QualType>.
553
  ///
554
  /// Depending on the constructor argument, the matcher is either strict, i.e.
555
  /// does only matches in the absence of qualifiers, or not, i.e. simply
556
  /// ignores any qualifiers.
557
  template <typename TypeT>
558
  class TypeToQualType : public WrapperMatcherInterface<QualType> {
559
  public:
560
    TypeToQualType(const Matcher<TypeT> &InnerMatcher)
561
20.7k
        : TypeToQualType::WrapperMatcherInterface(InnerMatcher) {}
562
563
    bool matches(const QualType &Node, ASTMatchFinder *Finder,
564
5.98k
                 BoundNodesTreeBuilder *Builder) const override {
565
5.98k
      if (Node.isNull())
566
8
        return false;
567
5.97k
      return this->InnerMatcher.matches(
568
5.97k
          ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
569
5.97k
    }
570
  };
571
572
private:
573
  // For Matcher<T> <=> Matcher<U> conversions.
574
  template <typename U> friend class Matcher;
575
576
  // For DynTypedMatcher::unconditionalConvertTo<T>.
577
  friend class DynTypedMatcher;
578
579
611k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
611k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
611k
  }
clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
4.56k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
4.56k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
4.56k
  }
clang::ast_matchers::internal::Matcher<clang::CallExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
2.02k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
2.02k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
2.02k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
191k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
191k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
191k
  }
clang::ast_matchers::internal::Matcher<clang::QualType>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
20.2k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
20.2k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
20.2k
  }
clang::ast_matchers::internal::Matcher<clang::Expr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
109k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
109k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
109k
  }
clang::ast_matchers::internal::Matcher<clang::FunctionDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
3.66k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
3.66k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
3.66k
  }
clang::ast_matchers::internal::Matcher<clang::Decl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
112k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
112k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
112k
  }
clang::ast_matchers::internal::Matcher<clang::IntegerLiteral>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
544
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
544
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
544
  }
clang::ast_matchers::internal::Matcher<clang::VarDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
66.6k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
66.6k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
66.6k
  }
clang::ast_matchers::internal::Matcher<clang::BinaryOperator>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
3.63k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
3.63k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
3.63k
  }
clang::ast_matchers::internal::Matcher<clang::DeclRefExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
33
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
33
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
33
  }
clang::ast_matchers::internal::Matcher<clang::BlockPointerType>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
364
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
364
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
364
  }
clang::ast_matchers::internal::Matcher<clang::Type>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
20.5k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
20.5k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
20.5k
  }
clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
3.29k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
3.29k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
3.29k
  }
clang::ast_matchers::internal::Matcher<clang::CompoundStmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
500
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
500
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
500
  }
clang::ast_matchers::internal::Matcher<clang::TypedefType>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
2
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
2
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
2
  }
clang::ast_matchers::internal::Matcher<clang::TypedefDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
900
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
900
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
900
  }
clang::ast_matchers::internal::Matcher<clang::PointerType>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
21
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
21
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
21
  }
clang::ast_matchers::internal::Matcher<clang::RecordType>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
3
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
3
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
3
  }
clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
211
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
211
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
211
  }
clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
225
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
225
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
225
  }
clang::ast_matchers::internal::Matcher<clang::IfStmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
478
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
478
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
478
  }
clang::ast_matchers::internal::Matcher<clang::DeclStmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
608
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
608
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
608
  }
clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
1.57k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
1.57k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
1.57k
  }
clang::ast_matchers::internal::Matcher<clang::UnaryOperator>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
18.2k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
18.2k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
18.2k
  }
clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
448
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
448
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
448
  }
clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
16.9k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
16.9k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
16.9k
  }
clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
215
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
215
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
215
  }
clang::ast_matchers::internal::Matcher<clang::BlockDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
210
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
210
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
210
  }
clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
11
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
11
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
11
  }
clang::ast_matchers::internal::Matcher<clang::FieldDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
146
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
146
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
146
  }
clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
551
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
551
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
551
  }
clang::ast_matchers::internal::Matcher<clang::MemberExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
21
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
21
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
21
  }
clang::ast_matchers::internal::Matcher<clang::SwitchStmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
183
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
183
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
183
  }
clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
1
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
1
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
1
  }
clang::ast_matchers::internal::Matcher<clang::ForStmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
340
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
340
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
340
  }
clang::ast_matchers::internal::Matcher<clang::GotoStmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
165
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
165
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
165
  }
clang::ast_matchers::internal::Matcher<clang::ReturnStmt>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
175
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
175
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
175
  }
clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
2.86k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
2.86k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
2.86k
  }
clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
6.82k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
6.82k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
6.82k
  }
clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
653
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
653
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
653
  }
clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
2.46k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
2.46k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
2.46k
  }
clang::ast_matchers::internal::Matcher<clang::ReferenceType>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
16.1k
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
16.1k
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
16.1k
  }
clang::ast_matchers::internal::Matcher<clang::InitListExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
26
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
26
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
26
  }
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifier>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
35
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
35
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
35
  }
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifierLoc>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
21
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
21
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
21
  }
clang::ast_matchers::internal::Matcher<clang::TypeLoc>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
318
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
318
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
318
  }
clang::ast_matchers::internal::Matcher<clang::CXXCtorInitializer>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
579
14
  static DynTypedMatcher restrictMatcher(const DynTypedMatcher &Other) {
580
14
    return Other.dynCastTo(ast_type_traits::ASTNodeKind::getFromNodeKind<T>());
581
14
  }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ImplicitValueInitExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ParenListExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ConstantExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::OpaqueValueExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::CXXConstCastExpr>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::TagType>::restrictMatcher(clang::ast_matchers::internal::DynTypedMatcher const&)
582
583
  explicit Matcher(const DynTypedMatcher &Implementation)
584
442k
      : Implementation(restrictMatcher(Implementation)) {
585
442k
    assert(this->Implementation.getSupportedKind()
586
442k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
442k
  }
clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
2.35k
      : Implementation(restrictMatcher(Implementation)) {
585
2.35k
    assert(this->Implementation.getSupportedKind()
586
2.35k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
2.35k
  }
clang::ast_matchers::internal::Matcher<clang::CallExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
2.02k
      : Implementation(restrictMatcher(Implementation)) {
585
2.02k
    assert(this->Implementation.getSupportedKind()
586
2.02k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
2.02k
  }
clang::ast_matchers::internal::Matcher<clang::Stmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
191k
      : Implementation(restrictMatcher(Implementation)) {
585
191k
    assert(this->Implementation.getSupportedKind()
586
191k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
191k
  }
clang::ast_matchers::internal::Matcher<clang::QualType>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
20.2k
      : Implementation(restrictMatcher(Implementation)) {
585
20.2k
    assert(this->Implementation.getSupportedKind()
586
20.2k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
20.2k
  }
clang::ast_matchers::internal::Matcher<clang::Expr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
21.4k
      : Implementation(restrictMatcher(Implementation)) {
585
21.4k
    assert(this->Implementation.getSupportedKind()
586
21.4k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
21.4k
  }
clang::ast_matchers::internal::Matcher<clang::FunctionDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
1.26k
      : Implementation(restrictMatcher(Implementation)) {
585
1.26k
    assert(this->Implementation.getSupportedKind()
586
1.26k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
1.26k
  }
clang::ast_matchers::internal::Matcher<clang::Decl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
112k
      : Implementation(restrictMatcher(Implementation)) {
585
112k
    assert(this->Implementation.getSupportedKind()
586
112k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
112k
  }
clang::ast_matchers::internal::Matcher<clang::IntegerLiteral>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
544
      : Implementation(restrictMatcher(Implementation)) {
585
544
    assert(this->Implementation.getSupportedKind()
586
544
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
544
  }
clang::ast_matchers::internal::Matcher<clang::VarDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
17.2k
      : Implementation(restrictMatcher(Implementation)) {
585
17.2k
    assert(this->Implementation.getSupportedKind()
586
17.2k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
17.2k
  }
clang::ast_matchers::internal::Matcher<clang::BinaryOperator>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
3.63k
      : Implementation(restrictMatcher(Implementation)) {
585
3.63k
    assert(this->Implementation.getSupportedKind()
586
3.63k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
3.63k
  }
clang::ast_matchers::internal::Matcher<clang::DeclRefExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
33
      : Implementation(restrictMatcher(Implementation)) {
585
33
    assert(this->Implementation.getSupportedKind()
586
33
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
33
  }
clang::ast_matchers::internal::Matcher<clang::BlockPointerType>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
364
      : Implementation(restrictMatcher(Implementation)) {
585
364
    assert(this->Implementation.getSupportedKind()
586
364
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
364
  }
clang::ast_matchers::internal::Matcher<clang::Type>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
20.5k
      : Implementation(restrictMatcher(Implementation)) {
585
20.5k
    assert(this->Implementation.getSupportedKind()
586
20.5k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
20.5k
  }
clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
2.19k
      : Implementation(restrictMatcher(Implementation)) {
585
2.19k
    assert(this->Implementation.getSupportedKind()
586
2.19k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
2.19k
  }
clang::ast_matchers::internal::Matcher<clang::CompoundStmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
500
      : Implementation(restrictMatcher(Implementation)) {
585
500
    assert(this->Implementation.getSupportedKind()
586
500
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
500
  }
clang::ast_matchers::internal::Matcher<clang::TypedefType>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
2
      : Implementation(restrictMatcher(Implementation)) {
585
2
    assert(this->Implementation.getSupportedKind()
586
2
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
2
  }
clang::ast_matchers::internal::Matcher<clang::TypedefDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
1
      : Implementation(restrictMatcher(Implementation)) {
585
1
    assert(this->Implementation.getSupportedKind()
586
1
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
1
  }
clang::ast_matchers::internal::Matcher<clang::PointerType>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
21
      : Implementation(restrictMatcher(Implementation)) {
585
21
    assert(this->Implementation.getSupportedKind()
586
21
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
21
  }
clang::ast_matchers::internal::Matcher<clang::RecordType>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
3
      : Implementation(restrictMatcher(Implementation)) {
585
3
    assert(this->Implementation.getSupportedKind()
586
3
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
3
  }
clang::ast_matchers::internal::Matcher<clang::ObjCObjectPointerType>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
211
      : Implementation(restrictMatcher(Implementation)) {
585
211
    assert(this->Implementation.getSupportedKind()
586
211
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
211
  }
Unexecuted instantiation: clang::ast_matchers::internal::Matcher<clang::ObjCInterfaceDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
clang::ast_matchers::internal::Matcher<clang::IfStmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
477
      : Implementation(restrictMatcher(Implementation)) {
585
477
    assert(this->Implementation.getSupportedKind()
586
477
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
477
  }
clang::ast_matchers::internal::Matcher<clang::DeclStmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
377
      : Implementation(restrictMatcher(Implementation)) {
585
377
    assert(this->Implementation.getSupportedKind()
586
377
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
377
  }
clang::ast_matchers::internal::Matcher<clang::ConditionalOperator>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
835
      : Implementation(restrictMatcher(Implementation)) {
585
835
    assert(this->Implementation.getSupportedKind()
586
835
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
835
  }
clang::ast_matchers::internal::Matcher<clang::UnaryOperator>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
18.2k
      : Implementation(restrictMatcher(Implementation)) {
585
18.2k
    assert(this->Implementation.getSupportedKind()
586
18.2k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
18.2k
  }
clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
448
      : Implementation(restrictMatcher(Implementation)) {
585
448
    assert(this->Implementation.getSupportedKind()
586
448
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
448
  }
clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
6
      : Implementation(restrictMatcher(Implementation)) {
585
6
    assert(this->Implementation.getSupportedKind()
586
6
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
6
  }
clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
211
      : Implementation(restrictMatcher(Implementation)) {
585
211
    assert(this->Implementation.getSupportedKind()
586
211
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
211
  }
clang::ast_matchers::internal::Matcher<clang::BlockDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
210
      : Implementation(restrictMatcher(Implementation)) {
585
210
    assert(this->Implementation.getSupportedKind()
586
210
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
210
  }
clang::ast_matchers::internal::Matcher<clang::CStyleCastExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
11
      : Implementation(restrictMatcher(Implementation)) {
585
11
    assert(this->Implementation.getSupportedKind()
586
11
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
11
  }
clang::ast_matchers::internal::Matcher<clang::FieldDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
36
      : Implementation(restrictMatcher(Implementation)) {
585
36
    assert(this->Implementation.getSupportedKind()
586
36
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
36
  }
clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
551
      : Implementation(restrictMatcher(Implementation)) {
585
551
    assert(this->Implementation.getSupportedKind()
586
551
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
551
  }
clang::ast_matchers::internal::Matcher<clang::MemberExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
21
      : Implementation(restrictMatcher(Implementation)) {
585
21
    assert(this->Implementation.getSupportedKind()
586
21
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
21
  }
clang::ast_matchers::internal::Matcher<clang::SwitchStmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
183
      : Implementation(restrictMatcher(Implementation)) {
585
183
    assert(this->Implementation.getSupportedKind()
586
183
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
183
  }
clang::ast_matchers::internal::Matcher<clang::ObjCIvarRefExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
1
      : Implementation(restrictMatcher(Implementation)) {
585
1
    assert(this->Implementation.getSupportedKind()
586
1
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
1
  }
clang::ast_matchers::internal::Matcher<clang::ForStmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
340
      : Implementation(restrictMatcher(Implementation)) {
585
340
    assert(this->Implementation.getSupportedKind()
586
340
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
340
  }
clang::ast_matchers::internal::Matcher<clang::GotoStmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
165
      : Implementation(restrictMatcher(Implementation)) {
585
165
    assert(this->Implementation.getSupportedKind()
586
165
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
165
  }
clang::ast_matchers::internal::Matcher<clang::ReturnStmt>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
170
      : Implementation(restrictMatcher(Implementation)) {
585
170
    assert(this->Implementation.getSupportedKind()
586
170
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
170
  }
clang::ast_matchers::internal::Matcher<clang::CXXOperatorCallExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
660
      : Implementation(restrictMatcher(Implementation)) {
585
660
    assert(this->Implementation.getSupportedKind()
586
660
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
660
  }
clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
3.90k
      : Implementation(restrictMatcher(Implementation)) {
585
3.90k
    assert(this->Implementation.getSupportedKind()
586
3.90k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
3.90k
  }
clang::ast_matchers::internal::Matcher<clang::CXXConstructExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
653
      : Implementation(restrictMatcher(Implementation)) {
585
653
    assert(this->Implementation.getSupportedKind()
586
653
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
653
  }
clang::ast_matchers::internal::Matcher<clang::CXXConstructorDecl>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
1.62k
      : Implementation(restrictMatcher(Implementation)) {
585
1.62k
    assert(this->Implementation.getSupportedKind()
586
1.62k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
1.62k
  }
clang::ast_matchers::internal::Matcher<clang::ReferenceType>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
16.1k
      : Implementation(restrictMatcher(Implementation)) {
585
16.1k
    assert(this->Implementation.getSupportedKind()
586
16.1k
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
16.1k
  }
clang::ast_matchers::internal::Matcher<clang::InitListExpr>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
26
      : Implementation(restrictMatcher(Implementation)) {
585
26
    assert(this->Implementation.getSupportedKind()
586
26
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
26
  }
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifier>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
35
      : Implementation(restrictMatcher(Implementation)) {
585
35
    assert(this->Implementation.getSupportedKind()
586
35
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
35
  }
clang::ast_matchers::internal::Matcher<clang::NestedNameSpecifierLoc>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
21
      : Implementation(restrictMatcher(Implementation)) {
585
21
    assert(this->Implementation.getSupportedKind()
586
21
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
21
  }
clang::ast_matchers::internal::Matcher<clang::TypeLoc>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
318
      : Implementation(restrictMatcher(Implementation)) {
585
318
    assert(this->Implementation.getSupportedKind()
586
318
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
318
  }
clang::ast_matchers::internal::Matcher<clang::CXXCtorInitializer>::Matcher(clang::ast_matchers::internal::DynTypedMatcher const&)
Line
Count
Source
584
14
      : Implementation(restrictMatcher(Implementation)) {
585
14
    assert(this->Implementation.getSupportedKind()
586
14
               .isSame(ast_type_traits::ASTNodeKind::getFromNodeKind<T>()));
587
14
  }
588
589
  DynTypedMatcher Implementation;
590
};  // class Matcher
591
592
/// A convenient helper for creating a Matcher<T> without specifying
593
/// the template type argument.
594
template <typename T>
595
200k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
200k
  return Matcher<T>(Implementation);
597
200k
}
clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl> clang::ast_matchers::internal::makeMatcher<clang::CXXRecordDecl>(clang::ast_matchers::internal::MatcherInterface<clang::CXXRecordDecl>*)
Line
Count
Source
595
4.15k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
4.15k
  return Matcher<T>(Implementation);
597
4.15k
}
clang::ast_matchers::internal::Matcher<clang::QualType> clang::ast_matchers::internal::makeMatcher<clang::QualType>(clang::ast_matchers::internal::MatcherInterface<clang::QualType>*)
Line
Count
Source
595
39.0k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
39.0k
  return Matcher<T>(Implementation);
597
39.0k
}
clang::ast_matchers::internal::Matcher<clang::CXXMemberCallExpr> clang::ast_matchers::internal::makeMatcher<clang::CXXMemberCallExpr>(clang::ast_matchers::internal::MatcherInterface<clang::CXXMemberCallExpr>*)
Line
Count
Source
595
285
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
285
  return Matcher<T>(Implementation);
597
285
}
clang::ast_matchers::internal::Matcher<clang::CallExpr> clang::ast_matchers::internal::makeMatcher<clang::CallExpr>(clang::ast_matchers::internal::MatcherInterface<clang::CallExpr>*)
Line
Count
Source
595
4.66k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
4.66k
  return Matcher<T>(Implementation);
597
4.66k
}
clang::ast_matchers::internal::Matcher<clang::Expr> clang::ast_matchers::internal::makeMatcher<clang::Expr>(clang::ast_matchers::internal::MatcherInterface<clang::Expr>*)
Line
Count
Source
595
8.85k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
8.85k
  return Matcher<T>(Implementation);
597
8.85k
}
clang::ast_matchers::internal::Matcher<clang::DeclRefExpr> clang::ast_matchers::internal::makeMatcher<clang::DeclRefExpr>(clang::ast_matchers::internal::MatcherInterface<clang::DeclRefExpr>*)
Line
Count
Source
595
52.4k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
52.4k
  return Matcher<T>(Implementation);
597
52.4k
}
clang::ast_matchers::internal::Matcher<clang::Decl> clang::ast_matchers::internal::makeMatcher<clang::Decl>(clang::ast_matchers::internal::MatcherInterface<clang::Decl>*)
Line
Count
Source
595
48.9k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
48.9k
  return Matcher<T>(Implementation);
597
48.9k
}
clang::ast_matchers::internal::Matcher<clang::FunctionDecl> clang::ast_matchers::internal::makeMatcher<clang::FunctionDecl>(clang::ast_matchers::internal::MatcherInterface<clang::FunctionDecl>*)
Line
Count
Source
595
2.24k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
2.24k
  return Matcher<T>(Implementation);
597
2.24k
}
clang::ast_matchers::internal::Matcher<clang::ForStmt> clang::ast_matchers::internal::makeMatcher<clang::ForStmt>(clang::ast_matchers::internal::MatcherInterface<clang::ForStmt>*)
Line
Count
Source
595
330
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
330
  return Matcher<T>(Implementation);
597
330
}
clang::ast_matchers::internal::Matcher<clang::NamedDecl> clang::ast_matchers::internal::makeMatcher<clang::NamedDecl>(clang::ast_matchers::internal::MatcherInterface<clang::NamedDecl>*)
Line
Count
Source
595
235
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
235
  return Matcher<T>(Implementation);
597
235
}
clang::ast_matchers::internal::Matcher<clang::ObjCMessageExpr> clang::ast_matchers::internal::makeMatcher<clang::ObjCMessageExpr>(clang::ast_matchers::internal::MatcherInterface<clang::ObjCMessageExpr>*)
Line
Count
Source
595
1.69k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
1.69k
  return Matcher<T>(Implementation);
597
1.69k
}
clang::ast_matchers::internal::Matcher<clang::Type> clang::ast_matchers::internal::makeMatcher<clang::Type>(clang::ast_matchers::internal::MatcherInterface<clang::Type>*)
Line
Count
Source
595
1.63k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
1.63k
  return Matcher<T>(Implementation);
597
1.63k
}
clang::ast_matchers::internal::Matcher<clang::DeclStmt> clang::ast_matchers::internal::makeMatcher<clang::DeclStmt>(clang::ast_matchers::internal::MatcherInterface<clang::DeclStmt>*)
Line
Count
Source
595
408
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
408
  return Matcher<T>(Implementation);
597
408
}
clang::ast_matchers::internal::Matcher<clang::VarDecl> clang::ast_matchers::internal::makeMatcher<clang::VarDecl>(clang::ast_matchers::internal::MatcherInterface<clang::VarDecl>*)
Line
Count
Source
595
17.8k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
17.8k
  return Matcher<T>(Implementation);
597
17.8k
}
clang::ast_matchers::internal::Matcher<clang::IfStmt> clang::ast_matchers::internal::makeMatcher<clang::IfStmt>(clang::ast_matchers::internal::MatcherInterface<clang::IfStmt>*)
Line
Count
Source
595
231
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
231
  return Matcher<T>(Implementation);
597
231
}
clang::ast_matchers::internal::Matcher<clang::UnaryOperator> clang::ast_matchers::internal::makeMatcher<clang::UnaryOperator>(clang::ast_matchers::internal::MatcherInterface<clang::UnaryOperator>*)
Line
Count
Source
595
17.1k
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
17.1k
  return Matcher<T>(Implementation);
597
17.1k
}
clang::ast_matchers::internal::Matcher<clang::AbstractConditionalOperator> clang::ast_matchers::internal::makeMatcher<clang::AbstractConditionalOperator>(clang::ast_matchers::internal::MatcherInterface<clang::AbstractConditionalOperator>*)
Line
Count
Source
595
754
inline Matcher<T> makeMatcher(MatcherInterface<T> *Implementation) {
596
754
  return Matcher<T>(Implementation);
597
754
}
598
599
/// Specialization of the conversion functions for QualType.
600
///
601
/// This specialization provides the Matcher<Type>->Matcher<QualType>
602
/// conversion that the static API does.
603
template <>
604
104
inline Matcher<QualType> DynTypedMatcher::convertTo<QualType>() const {
605
104
  assert(canConvertTo<QualType>());
606
104
  const ast_type_traits::ASTNodeKind SourceKind = getSupportedKind();
607
104
  if (SourceKind.isSame(
608
104
          ast_type_traits::ASTNodeKind::getFromNodeKind<Type>())) {
609
83
    // We support implicit conversion from Matcher<Type> to Matcher<QualType>
610
83
    return unconditionalConvertTo<Type>();
611
83
  }
612
21
  return unconditionalConvertTo<QualType>();
613
21
}
614
615
/// Finds the first node in a range that matches the given matcher.
616
template <typename MatcherT, typename IteratorT>
617
bool matchesFirstInRange(const MatcherT &Matcher, IteratorT Start,
618
                         IteratorT End, ASTMatchFinder *Finder,
619
                         BoundNodesTreeBuilder *Builder) {
620
  for (IteratorT I = Start; I != End; ++I) {
621
    BoundNodesTreeBuilder Result(*Builder);
622
    if (Matcher.matches(*I, Finder, &Result)) {
623
      *Builder = std::move(Result);
624
      return true;
625
    }
626
  }
627
  return false;
628
}
629
630
/// Finds the first node in a pointer range that matches the given
631
/// matcher.
632
template <typename MatcherT, typename IteratorT>
633
bool matchesFirstInPointerRange(const MatcherT &Matcher, IteratorT Start,
634
                                IteratorT End, ASTMatchFinder *Finder,
635
470
                                BoundNodesTreeBuilder *Builder) {
636
773
  for (IteratorT I = Start; I != End; 
++I303
) {
637
432
    BoundNodesTreeBuilder Result(*Builder);
638
432
    if (Matcher.matches(**I, Finder, &Result)) {
639
129
      *Builder = std::move(Result);
640
129
      return true;
641
129
    }
642
432
  }
643
470
  
return false341
;
644
470
}
bool clang::ast_matchers::internal::matchesFirstInPointerRange<clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl>, clang::DeclContext::specific_decl_iterator<clang::CXXMethodDecl> >(clang::ast_matchers::internal::Matcher<clang::CXXMethodDecl> const&, clang::DeclContext::specific_decl_iterator<clang::CXXMethodDecl>, clang::DeclContext::specific_decl_iterator<clang::CXXMethodDecl>, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*)
Line
Count
Source
635
68
                                BoundNodesTreeBuilder *Builder) {
636
234
  for (IteratorT I = Start; I != End; 
++I166
) {
637
204
    BoundNodesTreeBuilder Result(*Builder);
638
204
    if (Matcher.matches(**I, Finder, &Result)) {
639
38
      *Builder = std::move(Result);
640
38
      return true;
641
38
    }
642
204
  }
643
68
  
return false30
;
644
68
}
bool clang::ast_matchers::internal::matchesFirstInPointerRange<clang::ast_matchers::internal::Matcher<clang::Decl>, clang::UnresolvedSetIterator>(clang::ast_matchers::internal::Matcher<clang::Decl> const&, clang::UnresolvedSetIterator, clang::UnresolvedSetIterator, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*)
Line
Count
Source
635
14
                                BoundNodesTreeBuilder *Builder) {
636
26
  for (IteratorT I = Start; I != End; 
++I12
) {
637
20
    BoundNodesTreeBuilder Result(*Builder);
638
20
    if (Matcher.matches(**I, Finder, &Result)) {
639
8
      *Builder = std::move(Result);
640
8
      return true;
641
8
    }
642
20
  }
643
14
  
return false6
;
644
14
}
bool clang::ast_matchers::internal::matchesFirstInPointerRange<clang::ast_matchers::internal::Matcher<clang::CXXCtorInitializer>, clang::CXXCtorInitializer* const*>(clang::ast_matchers::internal::Matcher<clang::CXXCtorInitializer> const&, clang::CXXCtorInitializer* const*, clang::CXXCtorInitializer* const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*)
Line
Count
Source
635
120
                                BoundNodesTreeBuilder *Builder) {
636
154
  for (IteratorT I = Start; I != End; 
++I34
) {
637
62
    BoundNodesTreeBuilder Result(*Builder);
638
62
    if (Matcher.matches(**I, Finder, &Result)) {
639
28
      *Builder = std::move(Result);
640
28
      return true;
641
28
    }
642
62
  }
643
120
  
return false92
;
644
120
}
bool clang::ast_matchers::internal::matchesFirstInPointerRange<clang::ast_matchers::internal::Matcher<clang::UsingShadowDecl>, clang::UsingDecl::shadow_iterator>(clang::ast_matchers::internal::Matcher<clang::UsingShadowDecl> const&, clang::UsingDecl::shadow_iterator, clang::UsingDecl::shadow_iterator, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*)
Line
Count
Source
635
8
                                BoundNodesTreeBuilder *Builder) {
636
12
  for (IteratorT I = Start; I != End; 
++I4
) {
637
10
    BoundNodesTreeBuilder Result(*Builder);
638
10
    if (Matcher.matches(**I, Finder, &Result)) {
639
6
      *Builder = std::move(Result);
640
6
      return true;
641
6
    }
642
10
  }
643
8
  
return false2
;
644
8
}
bool clang::ast_matchers::internal::matchesFirstInPointerRange<clang::ast_matchers::internal::Matcher<clang::OMPClause>, clang::OMPClause* const*>(clang::ast_matchers::internal::Matcher<clang::OMPClause> const&, clang::OMPClause* const*, clang::OMPClause* const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*)
Line
Count
Source
635
32
                                BoundNodesTreeBuilder *Builder) {
636
42
  for (IteratorT I = Start; I != End; 
++I10
) {
637
24
    BoundNodesTreeBuilder Result(*Builder);
638
24
    if (Matcher.matches(**I, Finder, &Result)) {
639
14
      *Builder = std::move(Result);
640
14
      return true;
641
14
    }
642
24
  }
643
32
  
return false18
;
644
32
}
bool clang::ast_matchers::internal::matchesFirstInPointerRange<clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>, clang::ParmVarDecl const* const*>(clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> const&, clang::ParmVarDecl const* const*, clang::ParmVarDecl const* const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*)
Line
Count
Source
635
30
                                BoundNodesTreeBuilder *Builder) {
636
37
  for (IteratorT I = Start; I != End; 
++I7
) {
637
15
    BoundNodesTreeBuilder Result(*Builder);
638
15
    if (Matcher.matches(**I, Finder, &Result)) {
639
8
      *Builder = std::move(Result);
640
8
      return true;
641
8
    }
642
15
  }
643
30
  
return false22
;
644
30
}
bool clang::ast_matchers::internal::matchesFirstInPointerRange<clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>, clang::ParmVarDecl* const*>(clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> const&, clang::ParmVarDecl* const*, clang::ParmVarDecl* const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*)
Line
Count
Source
635
198
                                BoundNodesTreeBuilder *Builder) {
636
268
  for (IteratorT I = Start; I != End; 
++I70
) {
637
97
    BoundNodesTreeBuilder Result(*Builder);
638
97
    if (Matcher.matches(**I, Finder, &Result)) {
639
27
      *Builder = std::move(Result);
640
27
      return true;
641
27
    }
642
97
  }
643
198
  
return false171
;
644
198
}
645
646
// Metafunction to determine if type T has a member called getDecl.
647
template <typename Ty>
648
class has_getDecl {
649
  using yes = char[1];
650
  using no = char[2];
651
652
  template <typename Inner>
653
  static yes& test(Inner *I, decltype(I->getDecl()) * = nullptr);
654
655
  template <typename>
656
  static no& test(...);
657
658
public:
659
  static const bool value = sizeof(test<Ty>(nullptr)) == sizeof(yes);
660
};
661
662
/// Matches overloaded operators with a specific name.
663
///
664
/// The type argument ArgT is not used by this matcher but is used by
665
/// PolymorphicMatcherWithParam1 and should be StringRef.
666
template <typename T, typename ArgT>
667
class HasOverloadedOperatorNameMatcher : public SingleNodeMatcherInterface<T> {
668
  static_assert(std::is_same<T, CXXOperatorCallExpr>::value ||
669
                std::is_base_of<FunctionDecl, T>::value,
670
                "unsupported class for matcher");
671
  static_assert(std::is_same<ArgT, StringRef>::value,
672
                "argument type must be StringRef");
673
674
public:
675
  explicit HasOverloadedOperatorNameMatcher(const StringRef Name)
676
      : SingleNodeMatcherInterface<T>(), Name(Name) {}
677
678
  bool matchesNode(const T &Node) const override {
679
    return matchesSpecialized(Node);
680
  }
681
682
private:
683
684
  /// CXXOperatorCallExpr exist only for calls to overloaded operators
685
  /// so this function returns true if the call is to an operator of the given
686
  /// name.
687
  bool matchesSpecialized(const CXXOperatorCallExpr &Node) const {
688
    return getOperatorSpelling(Node.getOperator()) == Name;
689
  }
690
691
  /// Returns true only if CXXMethodDecl represents an overloaded
692
  /// operator and has the given operator name.
693
  bool matchesSpecialized(const FunctionDecl &Node) const {
694
    return Node.isOverloadedOperator() &&
695
           getOperatorSpelling(Node.getOverloadedOperator()) == Name;
696
  }
697
698
  std::string Name;
699
};
700
701
/// Matches named declarations with a specific name.
702
///
703
/// See \c hasName() and \c hasAnyName() in ASTMatchers.h for details.
704
class HasNameMatcher : public SingleNodeMatcherInterface<NamedDecl> {
705
 public:
706
  explicit HasNameMatcher(std::vector<std::string> Names);
707
708
  bool matchesNode(const NamedDecl &Node) const override;
709
710
 private:
711
  /// Unqualified match routine.
712
  ///
713
  /// It is much faster than the full match, but it only works for unqualified
714
  /// matches.
715
  bool matchesNodeUnqualified(const NamedDecl &Node) const;
716
717
  /// Full match routine
718
  ///
719
  /// Fast implementation for the simple case of a named declaration at
720
  /// namespace or RecordDecl scope.
721
  /// It is slower than matchesNodeUnqualified, but faster than
722
  /// matchesNodeFullSlow.
723
  bool matchesNodeFullFast(const NamedDecl &Node) const;
724
725
  /// Full match routine
726
  ///
727
  /// It generates the fully qualified name of the declaration (which is
728
  /// expensive) before trying to match.
729
  /// It is slower but simple and works on all cases.
730
  bool matchesNodeFullSlow(const NamedDecl &Node) const;
731
732
  const bool UseUnqualifiedMatch;
733
  const std::vector<std::string> Names;
734
};
735
736
/// Trampoline function to use VariadicFunction<> to construct a
737
///        HasNameMatcher.
738
Matcher<NamedDecl> hasAnyNameFunc(ArrayRef<const StringRef *> NameRefs);
739
740
/// Trampoline function to use VariadicFunction<> to construct a
741
///        hasAnySelector matcher.
742
Matcher<ObjCMessageExpr> hasAnySelectorFunc(
743
    ArrayRef<const StringRef *> NameRefs);
744
745
/// Matches declarations for QualType and CallExpr.
746
///
747
/// Type argument DeclMatcherT is required by PolymorphicMatcherWithParam1 but
748
/// not actually used.
749
template <typename T, typename DeclMatcherT>
750
class HasDeclarationMatcher : public WrapperMatcherInterface<T> {
751
  static_assert(std::is_same<DeclMatcherT, Matcher<Decl>>::value,
752
                "instantiated with wrong types");
753
754
public:
755
  explicit HasDeclarationMatcher(const Matcher<Decl> &InnerMatcher)
756
19.8k
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
clang::ast_matchers::internal::HasDeclarationMatcher<clang::CallExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::HasDeclarationMatcher(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
756
1.55k
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
clang::ast_matchers::internal::HasDeclarationMatcher<clang::QualType, clang::ast_matchers::internal::Matcher<clang::Decl> >::HasDeclarationMatcher(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
756
515
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
clang::ast_matchers::internal::HasDeclarationMatcher<clang::TypedefType, clang::ast_matchers::internal::Matcher<clang::Decl> >::HasDeclarationMatcher(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
756
674
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
clang::ast_matchers::internal::HasDeclarationMatcher<clang::RecordType, clang::ast_matchers::internal::Matcher<clang::Decl> >::HasDeclarationMatcher(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
756
228
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
clang::ast_matchers::internal::HasDeclarationMatcher<clang::MemberExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::HasDeclarationMatcher(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
756
18
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
clang::ast_matchers::internal::HasDeclarationMatcher<clang::ObjCIvarRefExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::HasDeclarationMatcher(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
756
12
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
clang::ast_matchers::internal::HasDeclarationMatcher<clang::CXXConstructExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::HasDeclarationMatcher(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
756
733
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
clang::ast_matchers::internal::HasDeclarationMatcher<clang::DeclRefExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::HasDeclarationMatcher(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
756
16.1k
      : HasDeclarationMatcher::WrapperMatcherInterface(InnerMatcher) {}
757
758
  bool matches(const T &Node, ASTMatchFinder *Finder,
759
2.11k
               BoundNodesTreeBuilder *Builder) const override {
760
2.11k
    return matchesSpecialized(Node, Finder, Builder);
761
2.11k
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::CallExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matches(clang::CallExpr const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
759
1.13k
               BoundNodesTreeBuilder *Builder) const override {
760
1.13k
    return matchesSpecialized(Node, Finder, Builder);
761
1.13k
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::QualType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matches(clang::QualType const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
759
447
               BoundNodesTreeBuilder *Builder) const override {
760
447
    return matchesSpecialized(Node, Finder, Builder);
761
447
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::TypedefType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matches(clang::TypedefType const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
759
301
               BoundNodesTreeBuilder *Builder) const override {
760
301
    return matchesSpecialized(Node, Finder, Builder);
761
301
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::RecordType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matches(clang::RecordType const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
759
63
               BoundNodesTreeBuilder *Builder) const override {
760
63
    return matchesSpecialized(Node, Finder, Builder);
761
63
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::MemberExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matches(clang::MemberExpr const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
759
57
               BoundNodesTreeBuilder *Builder) const override {
760
57
    return matchesSpecialized(Node, Finder, Builder);
761
57
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::ObjCIvarRefExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matches(clang::ObjCIvarRefExpr const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
759
6
               BoundNodesTreeBuilder *Builder) const override {
760
6
    return matchesSpecialized(Node, Finder, Builder);
761
6
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::CXXConstructExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matches(clang::CXXConstructExpr const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
759
85
               BoundNodesTreeBuilder *Builder) const override {
760
85
    return matchesSpecialized(Node, Finder, Builder);
761
85
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::DeclRefExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matches(clang::DeclRefExpr const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
759
18
               BoundNodesTreeBuilder *Builder) const override {
760
18
    return matchesSpecialized(Node, Finder, Builder);
761
18
  }
762
763
private:
764
  /// Forwards to matching on the underlying type of the QualType.
765
  bool matchesSpecialized(const QualType &Node, ASTMatchFinder *Finder,
766
475
                          BoundNodesTreeBuilder *Builder) const {
767
475
    if (Node.isNull())
768
0
      return false;
769
475
770
475
    return matchesSpecialized(*Node, Finder, Builder);
771
475
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::QualType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesSpecialized(clang::QualType const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
766
475
                          BoundNodesTreeBuilder *Builder) const {
767
475
    if (Node.isNull())
768
0
      return false;
769
475
770
475
    return matchesSpecialized(*Node, Finder, Builder);
771
475
  }
Unexecuted instantiation: clang::ast_matchers::internal::HasDeclarationMatcher<clang::TypedefType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesSpecialized(clang::QualType const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Unexecuted instantiation: clang::ast_matchers::internal::HasDeclarationMatcher<clang::RecordType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesSpecialized(clang::QualType const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
772
773
  /// Finds the best declaration for a type and returns whether the inner
774
  /// matcher matches on it.
775
  bool matchesSpecialized(const Type &Node, ASTMatchFinder *Finder,
776
861
                          BoundNodesTreeBuilder *Builder) const {
777
861
    // DeducedType does not have declarations of its own, so
778
861
    // match the deduced type instead.
779
861
    const Type *EffectiveType = &Node;
780
861
    if (const auto *S = dyn_cast<DeducedType>(&Node)) {
781
2
      EffectiveType = S->getDeducedType().getTypePtrOrNull();
782
2
      if (!EffectiveType)
783
0
        return false;
784
861
    }
785
861
786
861
    // First, for any types that have a declaration, extract the declaration and
787
861
    // match on it.
788
861
    if (const auto *S = dyn_cast<TagType>(EffectiveType)) {
789
266
      return matchesDecl(S->getDecl(), Finder, Builder);
790
266
    }
791
595
    if (const auto *S = dyn_cast<InjectedClassNameType>(EffectiveType)) {
792
2
      return matchesDecl(S->getDecl(), Finder, Builder);
793
2
    }
794
593
    if (const auto *S = dyn_cast<TemplateTypeParmType>(EffectiveType)) {
795
6
      return matchesDecl(S->getDecl(), Finder, Builder);
796
6
    }
797
587
    if (const auto *S = dyn_cast<TypedefType>(EffectiveType)) {
798
303
      return matchesDecl(S->getDecl(), Finder, Builder);
799
303
    }
800
284
    if (const auto *S = dyn_cast<UnresolvedUsingType>(EffectiveType)) {
801
2
      return matchesDecl(S->getDecl(), Finder, Builder);
802
2
    }
803
282
    if (const auto *S = dyn_cast<ObjCObjectType>(EffectiveType)) {
804
122
      return matchesDecl(S->getInterface(), Finder, Builder);
805
122
    }
806
160
807
160
    // A SubstTemplateTypeParmType exists solely to mark a type substitution
808
160
    // on the instantiated template. As users usually want to match the
809
160
    // template parameter on the uninitialized template, we can always desugar
810
160
    // one level without loss of expressivness.
811
160
    // For example, given:
812
160
    //   template<typename T> struct X { T t; } class A {}; X<A> a;
813
160
    // The following matcher will match, which otherwise would not:
814
160
    //   fieldDecl(hasType(pointerType())).
815
160
    if (const auto *S = dyn_cast<SubstTemplateTypeParmType>(EffectiveType)) {
816
22
      return matchesSpecialized(S->getReplacementType(), Finder, Builder);
817
22
    }
818
138
819
138
    // For template specialization types, we want to match the template
820
138
    // declaration, as long as the type is still dependent, and otherwise the
821
138
    // declaration of the instantiated tag type.
822
138
    if (const auto *S = dyn_cast<TemplateSpecializationType>(EffectiveType)) {
823
22
      if (!S->isTypeAlias() && S->isSugared()) {
824
22
        // If the template is non-dependent, we want to match the instantiated
825
22
        // tag type.
826
22
        // For example, given:
827
22
        //   template<typename T> struct X {}; X<int> a;
828
22
        // The following matcher will match, which otherwise would not:
829
22
        //   templateSpecializationType(hasDeclaration(cxxRecordDecl())).
830
22
        return matchesSpecialized(*S->desugar(), Finder, Builder);
831
22
      }
832
0
      // If the template is dependent or an alias, match the template
833
0
      // declaration.
834
0
      return matchesDecl(S->getTemplateName().getAsTemplateDecl(), Finder,
835
0
                         Builder);
836
0
    }
837
116
838
116
    // FIXME: We desugar elaborated types. This makes the assumption that users
839
116
    // do never want to match on whether a type is elaborated - there are
840
116
    // arguments for both sides; for now, continue desugaring.
841
116
    if (const auto *S = dyn_cast<ElaboratedType>(EffectiveType)) {
842
6
      return matchesSpecialized(S->desugar(), Finder, Builder);
843
6
    }
844
110
    return false;
845
110
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::QualType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesSpecialized(clang::Type const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
776
497
                          BoundNodesTreeBuilder *Builder) const {
777
497
    // DeducedType does not have declarations of its own, so
778
497
    // match the deduced type instead.
779
497
    const Type *EffectiveType = &Node;
780
497
    if (const auto *S = dyn_cast<DeducedType>(&Node)) {
781
2
      EffectiveType = S->getDeducedType().getTypePtrOrNull();
782
2
      if (!EffectiveType)
783
0
        return false;
784
497
    }
785
497
786
497
    // First, for any types that have a declaration, extract the declaration and
787
497
    // match on it.
788
497
    if (const auto *S = dyn_cast<TagType>(EffectiveType)) {
789
203
      return matchesDecl(S->getDecl(), Finder, Builder);
790
203
    }
791
294
    if (const auto *S = dyn_cast<InjectedClassNameType>(EffectiveType)) {
792
2
      return matchesDecl(S->getDecl(), Finder, Builder);
793
2
    }
794
292
    if (const auto *S = dyn_cast<TemplateTypeParmType>(EffectiveType)) {
795
6
      return matchesDecl(S->getDecl(), Finder, Builder);
796
6
    }
797
286
    if (const auto *S = dyn_cast<TypedefType>(EffectiveType)) {
798
2
      return matchesDecl(S->getDecl(), Finder, Builder);
799
2
    }
800
284
    if (const auto *S = dyn_cast<UnresolvedUsingType>(EffectiveType)) {
801
2
      return matchesDecl(S->getDecl(), Finder, Builder);
802
2
    }
803
282
    if (const auto *S = dyn_cast<ObjCObjectType>(EffectiveType)) {
804
122
      return matchesDecl(S->getInterface(), Finder, Builder);
805
122
    }
806
160
807
160
    // A SubstTemplateTypeParmType exists solely to mark a type substitution
808
160
    // on the instantiated template. As users usually want to match the
809
160
    // template parameter on the uninitialized template, we can always desugar
810
160
    // one level without loss of expressivness.
811
160
    // For example, given:
812
160
    //   template<typename T> struct X { T t; } class A {}; X<A> a;
813
160
    // The following matcher will match, which otherwise would not:
814
160
    //   fieldDecl(hasType(pointerType())).
815
160
    if (const auto *S = dyn_cast<SubstTemplateTypeParmType>(EffectiveType)) {
816
22
      return matchesSpecialized(S->getReplacementType(), Finder, Builder);
817
22
    }
818
138
819
138
    // For template specialization types, we want to match the template
820
138
    // declaration, as long as the type is still dependent, and otherwise the
821
138
    // declaration of the instantiated tag type.
822
138
    if (const auto *S = dyn_cast<TemplateSpecializationType>(EffectiveType)) {
823
22
      if (!S->isTypeAlias() && S->isSugared()) {
824
22
        // If the template is non-dependent, we want to match the instantiated
825
22
        // tag type.
826
22
        // For example, given:
827
22
        //   template<typename T> struct X {}; X<int> a;
828
22
        // The following matcher will match, which otherwise would not:
829
22
        //   templateSpecializationType(hasDeclaration(cxxRecordDecl())).
830
22
        return matchesSpecialized(*S->desugar(), Finder, Builder);
831
22
      }
832
0
      // If the template is dependent or an alias, match the template
833
0
      // declaration.
834
0
      return matchesDecl(S->getTemplateName().getAsTemplateDecl(), Finder,
835
0
                         Builder);
836
0
    }
837
116
838
116
    // FIXME: We desugar elaborated types. This makes the assumption that users
839
116
    // do never want to match on whether a type is elaborated - there are
840
116
    // arguments for both sides; for now, continue desugaring.
841
116
    if (const auto *S = dyn_cast<ElaboratedType>(EffectiveType)) {
842
6
      return matchesSpecialized(S->desugar(), Finder, Builder);
843
6
    }
844
110
    return false;
845
110
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::TypedefType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesSpecialized(clang::Type const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
776
301
                          BoundNodesTreeBuilder *Builder) const {
777
301
    // DeducedType does not have declarations of its own, so
778
301
    // match the deduced type instead.
779
301
    const Type *EffectiveType = &Node;
780
301
    if (const auto *S = dyn_cast<DeducedType>(&Node)) {
781
0
      EffectiveType = S->getDeducedType().getTypePtrOrNull();
782
0
      if (!EffectiveType)
783
0
        return false;
784
301
    }
785
301
786
301
    // First, for any types that have a declaration, extract the declaration and
787
301
    // match on it.
788
301
    if (const auto *S = dyn_cast<TagType>(EffectiveType)) {
789
0
      return matchesDecl(S->getDecl(), Finder, Builder);
790
0
    }
791
301
    if (const auto *S = dyn_cast<InjectedClassNameType>(EffectiveType)) {
792
0
      return matchesDecl(S->getDecl(), Finder, Builder);
793
0
    }
794
301
    if (const auto *S = dyn_cast<TemplateTypeParmType>(EffectiveType)) {
795
0
      return matchesDecl(S->getDecl(), Finder, Builder);
796
0
    }
797
301
    if (const auto *S = dyn_cast<TypedefType>(EffectiveType)) {
798
301
      return matchesDecl(S->getDecl(), Finder, Builder);
799
301
    }
800
0
    if (const auto *S = dyn_cast<UnresolvedUsingType>(EffectiveType)) {
801
0
      return matchesDecl(S->getDecl(), Finder, Builder);
802
0
    }
803
0
    if (const auto *S = dyn_cast<ObjCObjectType>(EffectiveType)) {
804
0
      return matchesDecl(S->getInterface(), Finder, Builder);
805
0
    }
806
0
807
0
    // A SubstTemplateTypeParmType exists solely to mark a type substitution
808
0
    // on the instantiated template. As users usually want to match the
809
0
    // template parameter on the uninitialized template, we can always desugar
810
0
    // one level without loss of expressivness.
811
0
    // For example, given:
812
0
    //   template<typename T> struct X { T t; } class A {}; X<A> a;
813
0
    // The following matcher will match, which otherwise would not:
814
0
    //   fieldDecl(hasType(pointerType())).
815
0
    if (const auto *S = dyn_cast<SubstTemplateTypeParmType>(EffectiveType)) {
816
0
      return matchesSpecialized(S->getReplacementType(), Finder, Builder);
817
0
    }
818
0
819
0
    // For template specialization types, we want to match the template
820
0
    // declaration, as long as the type is still dependent, and otherwise the
821
0
    // declaration of the instantiated tag type.
822
0
    if (const auto *S = dyn_cast<TemplateSpecializationType>(EffectiveType)) {
823
0
      if (!S->isTypeAlias() && S->isSugared()) {
824
0
        // If the template is non-dependent, we want to match the instantiated
825
0
        // tag type.
826
0
        // For example, given:
827
0
        //   template<typename T> struct X {}; X<int> a;
828
0
        // The following matcher will match, which otherwise would not:
829
0
        //   templateSpecializationType(hasDeclaration(cxxRecordDecl())).
830
0
        return matchesSpecialized(*S->desugar(), Finder, Builder);
831
0
      }
832
0
      // If the template is dependent or an alias, match the template
833
0
      // declaration.
834
0
      return matchesDecl(S->getTemplateName().getAsTemplateDecl(), Finder,
835
0
                         Builder);
836
0
    }
837
0
838
0
    // FIXME: We desugar elaborated types. This makes the assumption that users
839
0
    // do never want to match on whether a type is elaborated - there are
840
0
    // arguments for both sides; for now, continue desugaring.
841
0
    if (const auto *S = dyn_cast<ElaboratedType>(EffectiveType)) {
842
0
      return matchesSpecialized(S->desugar(), Finder, Builder);
843
0
    }
844
0
    return false;
845
0
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::RecordType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesSpecialized(clang::Type const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
776
63
                          BoundNodesTreeBuilder *Builder) const {
777
63
    // DeducedType does not have declarations of its own, so
778
63
    // match the deduced type instead.
779
63
    const Type *EffectiveType = &Node;
780
63
    if (const auto *S = dyn_cast<DeducedType>(&Node)) {
781
0
      EffectiveType = S->getDeducedType().getTypePtrOrNull();
782
0
      if (!EffectiveType)
783
0
        return false;
784
63
    }
785
63
786
63
    // First, for any types that have a declaration, extract the declaration and
787
63
    // match on it.
788
63
    if (const auto *S = dyn_cast<TagType>(EffectiveType)) {
789
63
      return matchesDecl(S->getDecl(), Finder, Builder);
790
63
    }
791
0
    if (const auto *S = dyn_cast<InjectedClassNameType>(EffectiveType)) {
792
0
      return matchesDecl(S->getDecl(), Finder, Builder);
793
0
    }
794
0
    if (const auto *S = dyn_cast<TemplateTypeParmType>(EffectiveType)) {
795
0
      return matchesDecl(S->getDecl(), Finder, Builder);
796
0
    }
797
0
    if (const auto *S = dyn_cast<TypedefType>(EffectiveType)) {
798
0
      return matchesDecl(S->getDecl(), Finder, Builder);
799
0
    }
800
0
    if (const auto *S = dyn_cast<UnresolvedUsingType>(EffectiveType)) {
801
0
      return matchesDecl(S->getDecl(), Finder, Builder);
802
0
    }
803
0
    if (const auto *S = dyn_cast<ObjCObjectType>(EffectiveType)) {
804
0
      return matchesDecl(S->getInterface(), Finder, Builder);
805
0
    }
806
0
807
0
    // A SubstTemplateTypeParmType exists solely to mark a type substitution
808
0
    // on the instantiated template. As users usually want to match the
809
0
    // template parameter on the uninitialized template, we can always desugar
810
0
    // one level without loss of expressivness.
811
0
    // For example, given:
812
0
    //   template<typename T> struct X { T t; } class A {}; X<A> a;
813
0
    // The following matcher will match, which otherwise would not:
814
0
    //   fieldDecl(hasType(pointerType())).
815
0
    if (const auto *S = dyn_cast<SubstTemplateTypeParmType>(EffectiveType)) {
816
0
      return matchesSpecialized(S->getReplacementType(), Finder, Builder);
817
0
    }
818
0
819
0
    // For template specialization types, we want to match the template
820
0
    // declaration, as long as the type is still dependent, and otherwise the
821
0
    // declaration of the instantiated tag type.
822
0
    if (const auto *S = dyn_cast<TemplateSpecializationType>(EffectiveType)) {
823
0
      if (!S->isTypeAlias() && S->isSugared()) {
824
0
        // If the template is non-dependent, we want to match the instantiated
825
0
        // tag type.
826
0
        // For example, given:
827
0
        //   template<typename T> struct X {}; X<int> a;
828
0
        // The following matcher will match, which otherwise would not:
829
0
        //   templateSpecializationType(hasDeclaration(cxxRecordDecl())).
830
0
        return matchesSpecialized(*S->desugar(), Finder, Builder);
831
0
      }
832
0
      // If the template is dependent or an alias, match the template
833
0
      // declaration.
834
0
      return matchesDecl(S->getTemplateName().getAsTemplateDecl(), Finder,
835
0
                         Builder);
836
0
    }
837
0
838
0
    // FIXME: We desugar elaborated types. This makes the assumption that users
839
0
    // do never want to match on whether a type is elaborated - there are
840
0
    // arguments for both sides; for now, continue desugaring.
841
0
    if (const auto *S = dyn_cast<ElaboratedType>(EffectiveType)) {
842
0
      return matchesSpecialized(S->desugar(), Finder, Builder);
843
0
    }
844
0
    return false;
845
0
  }
846
847
  /// Extracts the Decl the DeclRefExpr references and returns whether
848
  /// the inner matcher matches on it.
849
  bool matchesSpecialized(const DeclRefExpr &Node, ASTMatchFinder *Finder,
850
18
                          BoundNodesTreeBuilder *Builder) const {
851
18
    return matchesDecl(Node.getDecl(), Finder, Builder);
852
18
  }
853
854
  /// Extracts the Decl of the callee of a CallExpr and returns whether
855
  /// the inner matcher matches on it.
856
  bool matchesSpecialized(const CallExpr &Node, ASTMatchFinder *Finder,
857
1.13k
                          BoundNodesTreeBuilder *Builder) const {
858
1.13k
    return matchesDecl(Node.getCalleeDecl(), Finder, Builder);
859
1.13k
  }
860
861
  /// Extracts the Decl of the constructor call and returns whether the
862
  /// inner matcher matches on it.
863
  bool matchesSpecialized(const CXXConstructExpr &Node,
864
                          ASTMatchFinder *Finder,
865
85
                          BoundNodesTreeBuilder *Builder) const {
866
85
    return matchesDecl(Node.getConstructor(), Finder, Builder);
867
85
  }
868
869
  bool matchesSpecialized(const ObjCIvarRefExpr &Node,
870
                          ASTMatchFinder *Finder,
871
6
                          BoundNodesTreeBuilder *Builder) const {
872
6
    return matchesDecl(Node.getDecl(), Finder, Builder);
873
6
  }
874
875
  /// Extracts the operator new of the new call and returns whether the
876
  /// inner matcher matches on it.
877
  bool matchesSpecialized(const CXXNewExpr &Node,
878
                          ASTMatchFinder *Finder,
879
                          BoundNodesTreeBuilder *Builder) const {
880
    return matchesDecl(Node.getOperatorNew(), Finder, Builder);
881
  }
882
883
  /// Extracts the \c ValueDecl a \c MemberExpr refers to and returns
884
  /// whether the inner matcher matches on it.
885
  bool matchesSpecialized(const MemberExpr &Node,
886
                          ASTMatchFinder *Finder,
887
57
                          BoundNodesTreeBuilder *Builder) const {
888
57
    return matchesDecl(Node.getMemberDecl(), Finder, Builder);
889
57
  }
890
891
  /// Extracts the \c LabelDecl a \c AddrLabelExpr refers to and returns
892
  /// whether the inner matcher matches on it.
893
  bool matchesSpecialized(const AddrLabelExpr &Node,
894
                          ASTMatchFinder *Finder,
895
                          BoundNodesTreeBuilder *Builder) const {
896
    return matchesDecl(Node.getLabel(), Finder, Builder);
897
  }
898
899
  /// Extracts the declaration of a LabelStmt and returns whether the
900
  /// inner matcher matches on it.
901
  bool matchesSpecialized(const LabelStmt &Node, ASTMatchFinder *Finder,
902
                          BoundNodesTreeBuilder *Builder) const {
903
    return matchesDecl(Node.getDecl(), Finder, Builder);
904
  }
905
906
  /// Returns whether the inner matcher \c Node. Returns false if \c Node
907
  /// is \c NULL.
908
  bool matchesDecl(const Decl *Node, ASTMatchFinder *Finder,
909
2.00k
                   BoundNodesTreeBuilder *Builder) const {
910
2.00k
    return Node != nullptr &&
911
2.00k
           this->InnerMatcher.matches(
912
1.98k
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
2.00k
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::CallExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesDecl(clang::Decl const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
909
1.13k
                   BoundNodesTreeBuilder *Builder) const {
910
1.13k
    return Node != nullptr &&
911
1.13k
           this->InnerMatcher.matches(
912
1.11k
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
1.13k
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::QualType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesDecl(clang::Decl const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
909
337
                   BoundNodesTreeBuilder *Builder) const {
910
337
    return Node != nullptr &&
911
337
           this->InnerMatcher.matches(
912
336
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
337
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::TypedefType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesDecl(clang::Decl const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
909
301
                   BoundNodesTreeBuilder *Builder) const {
910
301
    return Node != nullptr &&
911
301
           this->InnerMatcher.matches(
912
301
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
301
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::RecordType, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesDecl(clang::Decl const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
909
63
                   BoundNodesTreeBuilder *Builder) const {
910
63
    return Node != nullptr &&
911
63
           this->InnerMatcher.matches(
912
63
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
63
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::MemberExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesDecl(clang::Decl const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
909
57
                   BoundNodesTreeBuilder *Builder) const {
910
57
    return Node != nullptr &&
911
57
           this->InnerMatcher.matches(
912
57
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
57
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::ObjCIvarRefExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesDecl(clang::Decl const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
909
6
                   BoundNodesTreeBuilder *Builder) const {
910
6
    return Node != nullptr &&
911
6
           this->InnerMatcher.matches(
912
6
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
6
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::CXXConstructExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesDecl(clang::Decl const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
909
85
                   BoundNodesTreeBuilder *Builder) const {
910
85
    return Node != nullptr &&
911
85
           this->InnerMatcher.matches(
912
85
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
85
  }
clang::ast_matchers::internal::HasDeclarationMatcher<clang::DeclRefExpr, clang::ast_matchers::internal::Matcher<clang::Decl> >::matchesDecl(clang::Decl const*, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const
Line
Count
Source
909
18
                   BoundNodesTreeBuilder *Builder) const {
910
18
    return Node != nullptr &&
911
18
           this->InnerMatcher.matches(
912
18
               ast_type_traits::DynTypedNode::create(*Node), Finder, Builder);
913
18
  }
914
};
915
916
/// IsBaseType<T>::value is true if T is a "base" type in the AST
917
/// node class hierarchies.
918
template <typename T>
919
struct IsBaseType {
920
  static const bool value =
921
      std::is_same<T, Decl>::value ||
922
      std::is_same<T, Stmt>::value ||
923
      std::is_same<T, QualType>::value ||
924
      std::is_same<T, Type>::value ||
925
      std::is_same<T, TypeLoc>::value ||
926
      std::is_same<T, NestedNameSpecifier>::value ||
927
      std::is_same<T, NestedNameSpecifierLoc>::value ||
928
      std::is_same<T, CXXCtorInitializer>::value;
929
};
930
template <typename T>
931
const bool IsBaseType<T>::value;
932
933
/// Interface that allows matchers to traverse the AST.
934
/// FIXME: Find a better name.
935
///
936
/// This provides three entry methods for each base node type in the AST:
937
/// - \c matchesChildOf:
938
///   Matches a matcher on every child node of the given node. Returns true
939
///   if at least one child node could be matched.
940
/// - \c matchesDescendantOf:
941
///   Matches a matcher on all descendant nodes of the given node. Returns true
942
///   if at least one descendant matched.
943
/// - \c matchesAncestorOf:
944
///   Matches a matcher on all ancestors of the given node. Returns true if
945
///   at least one ancestor matched.
946
///
947
/// FIXME: Currently we only allow Stmt and Decl nodes to start a traversal.
948
/// In the future, we want to implement this for all nodes for which it makes
949
/// sense. In the case of matchesAncestorOf, we'll want to implement it for
950
/// all nodes, as all nodes have ancestors.
951
class ASTMatchFinder {
952
public:
953
  /// Defines how we descend a level in the AST when we pass
954
  /// through expressions.
955
  enum TraversalKind {
956
    /// Will traverse any child nodes.
957
    TK_AsIs,
958
959
    /// Will not traverse implicit casts and parentheses.
960
    TK_IgnoreImplicitCastsAndParentheses
961
  };
962
963
  /// Defines how bindings are processed on recursive matches.
964
  enum BindKind {
965
    /// Stop at the first match and only bind the first match.
966
    BK_First,
967
968
    /// Create results for all combinations of bindings that match.
969
    BK_All
970
  };
971
972
  /// Defines which ancestors are considered for a match.
973
  enum AncestorMatchMode {
974
    /// All ancestors.
975
    AMM_All,
976
977
    /// Direct parent only.
978
    AMM_ParentOnly
979
  };
980
981
26.0k
  virtual ~ASTMatchFinder() = default;
982
983
  /// Returns true if the given class is directly or indirectly derived
984
  /// from a base type matching \c base.
985
  ///
986
  /// A class is considered to be also derived from itself.
987
  virtual bool classIsDerivedFrom(const CXXRecordDecl *Declaration,
988
                                  const Matcher<NamedDecl> &Base,
989
                                  BoundNodesTreeBuilder *Builder) = 0;
990
991
  template <typename T>
992
  bool matchesChildOf(const T &Node,
993
                      const DynTypedMatcher &Matcher,
994
                      BoundNodesTreeBuilder *Builder,
995
                      TraversalKind Traverse,
996
348
                      BindKind Bind) {
997
348
    static_assert(std::is_base_of<Decl, T>::value ||
998
348
                  std::is_base_of<Stmt, T>::value ||
999
348
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1000
348
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1001
348
                  std::is_base_of<TypeLoc, T>::value ||
1002
348
                  std::is_base_of<QualType, T>::value,
1003
348
                  "unsupported type for recursive matching");
1004
348
    return matchesChildOf(ast_type_traits::DynTypedNode::create(Node),
1005
348
                          Matcher, Builder, Traverse, Bind);
1006
348
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesChildOf<clang::UnaryOperator>(clang::UnaryOperator const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::TraversalKind, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
996
17
                      BindKind Bind) {
997
17
    static_assert(std::is_base_of<Decl, T>::value ||
998
17
                  std::is_base_of<Stmt, T>::value ||
999
17
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1000
17
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1001
17
                  std::is_base_of<TypeLoc, T>::value ||
1002
17
                  std::is_base_of<QualType, T>::value,
1003
17
                  "unsupported type for recursive matching");
1004
17
    return matchesChildOf(ast_type_traits::DynTypedNode::create(Node),
1005
17
                          Matcher, Builder, Traverse, Bind);
1006
17
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesChildOf<clang::ExplicitCastExpr>(clang::ExplicitCastExpr const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::TraversalKind, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
996
110
                      BindKind Bind) {
997
110
    static_assert(std::is_base_of<Decl, T>::value ||
998
110
                  std::is_base_of<Stmt, T>::value ||
999
110
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1000
110
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1001
110
                  std::is_base_of<TypeLoc, T>::value ||
1002
110
                  std::is_base_of<QualType, T>::value,
1003
110
                  "unsupported type for recursive matching");
1004
110
    return matchesChildOf(ast_type_traits::DynTypedNode::create(Node),
1005
110
                          Matcher, Builder, Traverse, Bind);
1006
110
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesChildOf<clang::CXXRecordDecl>(clang::CXXRecordDecl const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::TraversalKind, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
996
86
                      BindKind Bind) {
997
86
    static_assert(std::is_base_of<Decl, T>::value ||
998
86
                  std::is_base_of<Stmt, T>::value ||
999
86
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1000
86
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1001
86
                  std::is_base_of<TypeLoc, T>::value ||
1002
86
                  std::is_base_of<QualType, T>::value,
1003
86
                  "unsupported type for recursive matching");
1004
86
    return matchesChildOf(ast_type_traits::DynTypedNode::create(Node),
1005
86
                          Matcher, Builder, Traverse, Bind);
1006
86
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesChildOf<clang::InitListExpr>(clang::InitListExpr const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::TraversalKind, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
996
135
                      BindKind Bind) {
997
135
    static_assert(std::is_base_of<Decl, T>::value ||
998
135
                  std::is_base_of<Stmt, T>::value ||
999
135
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1000
135
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1001
135
                  std::is_base_of<TypeLoc, T>::value ||
1002
135
                  std::is_base_of<QualType, T>::value,
1003
135
                  "unsupported type for recursive matching");
1004
135
    return matchesChildOf(ast_type_traits::DynTypedNode::create(Node),
1005
135
                          Matcher, Builder, Traverse, Bind);
1006
135
  }
1007
1008
  template <typename T>
1009
  bool matchesDescendantOf(const T &Node,
1010
                           const DynTypedMatcher &Matcher,
1011
                           BoundNodesTreeBuilder *Builder,
1012
5.09k
                           BindKind Bind) {
1013
5.09k
    static_assert(std::is_base_of<Decl, T>::value ||
1014
5.09k
                  std::is_base_of<Stmt, T>::value ||
1015
5.09k
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
5.09k
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
5.09k
                  std::is_base_of<TypeLoc, T>::value ||
1018
5.09k
                  std::is_base_of<QualType, T>::value,
1019
5.09k
                  "unsupported type for recursive matching");
1020
5.09k
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
5.09k
                               Matcher, Builder, Bind);
1022
5.09k
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::VarDecl>(clang::VarDecl const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
110
                           BindKind Bind) {
1013
110
    static_assert(std::is_base_of<Decl, T>::value ||
1014
110
                  std::is_base_of<Stmt, T>::value ||
1015
110
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
110
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
110
                  std::is_base_of<TypeLoc, T>::value ||
1018
110
                  std::is_base_of<QualType, T>::value,
1019
110
                  "unsupported type for recursive matching");
1020
110
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
110
                               Matcher, Builder, Bind);
1022
110
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::Stmt>(clang::Stmt const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
3.81k
                           BindKind Bind) {
1013
3.81k
    static_assert(std::is_base_of<Decl, T>::value ||
1014
3.81k
                  std::is_base_of<Stmt, T>::value ||
1015
3.81k
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
3.81k
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
3.81k
                  std::is_base_of<TypeLoc, T>::value ||
1018
3.81k
                  std::is_base_of<QualType, T>::value,
1019
3.81k
                  "unsupported type for recursive matching");
1020
3.81k
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
3.81k
                               Matcher, Builder, Bind);
1022
3.81k
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::CompoundStmt>(clang::CompoundStmt const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
339
                           BindKind Bind) {
1013
339
    static_assert(std::is_base_of<Decl, T>::value ||
1014
339
                  std::is_base_of<Stmt, T>::value ||
1015
339
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
339
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
339
                  std::is_base_of<TypeLoc, T>::value ||
1018
339
                  std::is_base_of<QualType, T>::value,
1019
339
                  "unsupported type for recursive matching");
1020
339
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
339
                               Matcher, Builder, Bind);
1022
339
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::Expr>(clang::Expr const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
58
                           BindKind Bind) {
1013
58
    static_assert(std::is_base_of<Decl, T>::value ||
1014
58
                  std::is_base_of<Stmt, T>::value ||
1015
58
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
58
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
58
                  std::is_base_of<TypeLoc, T>::value ||
1018
58
                  std::is_base_of<QualType, T>::value,
1019
58
                  "unsupported type for recursive matching");
1020
58
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
58
                               Matcher, Builder, Bind);
1022
58
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::ObjCMethodDecl>(clang::ObjCMethodDecl const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
6
                           BindKind Bind) {
1013
6
    static_assert(std::is_base_of<Decl, T>::value ||
1014
6
                  std::is_base_of<Stmt, T>::value ||
1015
6
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
6
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
6
                  std::is_base_of<TypeLoc, T>::value ||
1018
6
                  std::is_base_of<QualType, T>::value,
1019
6
                  "unsupported type for recursive matching");
1020
6
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
6
                               Matcher, Builder, Bind);
1022
6
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::FunctionDecl>(clang::FunctionDecl const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
313
                           BindKind Bind) {
1013
313
    static_assert(std::is_base_of<Decl, T>::value ||
1014
313
                  std::is_base_of<Stmt, T>::value ||
1015
313
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
313
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
313
                  std::is_base_of<TypeLoc, T>::value ||
1018
313
                  std::is_base_of<QualType, T>::value,
1019
313
                  "unsupported type for recursive matching");
1020
313
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
313
                               Matcher, Builder, Bind);
1022
313
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::BlockDecl>(clang::BlockDecl const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
1
                           BindKind Bind) {
1013
1
    static_assert(std::is_base_of<Decl, T>::value ||
1014
1
                  std::is_base_of<Stmt, T>::value ||
1015
1
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
1
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
1
                  std::is_base_of<TypeLoc, T>::value ||
1018
1
                  std::is_base_of<QualType, T>::value,
1019
1
                  "unsupported type for recursive matching");
1020
1
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
1
                               Matcher, Builder, Bind);
1022
1
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::Decl>(clang::Decl const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
344
                           BindKind Bind) {
1013
344
    static_assert(std::is_base_of<Decl, T>::value ||
1014
344
                  std::is_base_of<Stmt, T>::value ||
1015
344
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
344
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
344
                  std::is_base_of<TypeLoc, T>::value ||
1018
344
                  std::is_base_of<QualType, T>::value,
1019
344
                  "unsupported type for recursive matching");
1020
344
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
344
                               Matcher, Builder, Bind);
1022
344
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::ObjCAutoreleasePoolStmt>(clang::ObjCAutoreleasePoolStmt const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
19
                           BindKind Bind) {
1013
19
    static_assert(std::is_base_of<Decl, T>::value ||
1014
19
                  std::is_base_of<Stmt, T>::value ||
1015
19
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
19
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
19
                  std::is_base_of<TypeLoc, T>::value ||
1018
19
                  std::is_base_of<QualType, T>::value,
1019
19
                  "unsupported type for recursive matching");
1020
19
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
19
                               Matcher, Builder, Bind);
1022
19
  }
bool clang::ast_matchers::internal::ASTMatchFinder::matchesDescendantOf<clang::DeclStmt>(clang::DeclStmt const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind)
Line
Count
Source
1012
82
                           BindKind Bind) {
1013
82
    static_assert(std::is_base_of<Decl, T>::value ||
1014
82
                  std::is_base_of<Stmt, T>::value ||
1015
82
                  std::is_base_of<NestedNameSpecifier, T>::value ||
1016
82
                  std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1017
82
                  std::is_base_of<TypeLoc, T>::value ||
1018
82
                  std::is_base_of<QualType, T>::value,
1019
82
                  "unsupported type for recursive matching");
1020
82
    return matchesDescendantOf(ast_type_traits::DynTypedNode::create(Node),
1021
82
                               Matcher, Builder, Bind);
1022
82
  }
1023
1024
  // FIXME: Implement support for BindKind.
1025
  template <typename T>
1026
  bool matchesAncestorOf(const T &Node,
1027
                         const DynTypedMatcher &Matcher,
1028
                         BoundNodesTreeBuilder *Builder,
1029
53
                         AncestorMatchMode MatchMode) {
1030
53
    static_assert(std::is_base_of<Decl, T>::value ||
1031
53
                      std::is_base_of<NestedNameSpecifierLoc, T>::value ||
1032
53
                      std::is_base_of<Stmt, T>::value ||
1033
53
                      std::is_base_of<TypeLoc, T>::value,
1034
53
                  "type not allowed for recursive matching");
1035
53
    return matchesAncestorOf(ast_type_traits::DynTypedNode::create(Node),
1036
53
                             Matcher, Builder, MatchMode);
1037
53
  }
1038
1039
  virtual ASTContext &getASTContext() const = 0;
1040
1041
protected:
1042
  virtual bool matchesChildOf(const ast_type_traits::DynTypedNode &Node,
1043
                              const DynTypedMatcher &Matcher,
1044
                              BoundNodesTreeBuilder *Builder,
1045
                              TraversalKind Traverse,
1046
                              BindKind Bind) = 0;
1047
1048
  virtual bool matchesDescendantOf(const ast_type_traits::DynTypedNode &Node,
1049
                                   const DynTypedMatcher &Matcher,
1050
                                   BoundNodesTreeBuilder *Builder,
1051
                                   BindKind Bind) = 0;
1052
1053
  virtual bool matchesAncestorOf(const ast_type_traits::DynTypedNode &Node,
1054
                                 const DynTypedMatcher &Matcher,
1055
                                 BoundNodesTreeBuilder *Builder,
1056
                                 AncestorMatchMode MatchMode) = 0;
1057
};
1058
1059
/// A type-list implementation.
1060
///
1061
/// A "linked list" of types, accessible by using the ::head and ::tail
1062
/// typedefs.
1063
template <typename... Ts> struct TypeList {}; // Empty sentinel type list.
1064
1065
template <typename T1, typename... Ts> struct TypeList<T1, Ts...> {
1066
  /// The first type on the list.
1067
  using head = T1;
1068
1069
  /// A sublist with the tail. ie everything but the head.
1070
  ///
1071
  /// This type is used to do recursion. TypeList<>/EmptyTypeList indicates the
1072
  /// end of the list.
1073
  using tail = TypeList<Ts...>;
1074
};
1075
1076
/// The empty type list.
1077
using EmptyTypeList = TypeList<>;
1078
1079
/// Helper meta-function to determine if some type \c T is present or
1080
///   a parent type in the list.
1081
template <typename AnyTypeList, typename T>
1082
struct TypeListContainsSuperOf {
1083
  static const bool value =
1084
      std::is_base_of<typename AnyTypeList::head, T>::value ||
1085
      TypeListContainsSuperOf<typename AnyTypeList::tail, T>::value;
1086
};
1087
template <typename T>
1088
struct TypeListContainsSuperOf<EmptyTypeList, T> {
1089
  static const bool value = false;
1090
};
1091
1092
/// A "type list" that contains all types.
1093
///
1094
/// Useful for matchers like \c anything and \c unless.
1095
using AllNodeBaseTypes =
1096
    TypeList<Decl, Stmt, NestedNameSpecifier, NestedNameSpecifierLoc, QualType,
1097
             Type, TypeLoc, CXXCtorInitializer>;
1098
1099
/// Helper meta-function to extract the argument out of a function of
1100
///   type void(Arg).
1101
///
1102
/// See AST_POLYMORPHIC_SUPPORTED_TYPES for details.
1103
template <class T> struct ExtractFunctionArgMeta;
1104
template <class T> struct ExtractFunctionArgMeta<void(T)> {
1105
  using type = T;
1106
};
1107
1108
/// Default type lists for ArgumentAdaptingMatcher matchers.
1109
using AdaptativeDefaultFromTypes = AllNodeBaseTypes;
1110
using AdaptativeDefaultToTypes =
1111
    TypeList<Decl, Stmt, NestedNameSpecifier, NestedNameSpecifierLoc, TypeLoc,
1112
             QualType>;
1113
1114
/// All types that are supported by HasDeclarationMatcher above.
1115
using HasDeclarationSupportedTypes =
1116
    TypeList<CallExpr, CXXConstructExpr, CXXNewExpr, DeclRefExpr, EnumType,
1117
             ElaboratedType, InjectedClassNameType, LabelStmt, AddrLabelExpr,
1118
             MemberExpr, QualType, RecordType, TagType,
1119
             TemplateSpecializationType, TemplateTypeParmType, TypedefType,
1120
             UnresolvedUsingType, ObjCIvarRefExpr>;
1121
1122
/// Converts a \c Matcher<T> to a matcher of desired type \c To by
1123
/// "adapting" a \c To into a \c T.
1124
///
1125
/// The \c ArgumentAdapterT argument specifies how the adaptation is done.
1126
///
1127
/// For example:
1128
///   \c ArgumentAdaptingMatcher<HasMatcher, T>(InnerMatcher);
1129
/// Given that \c InnerMatcher is of type \c Matcher<T>, this returns a matcher
1130
/// that is convertible into any matcher of type \c To by constructing
1131
/// \c HasMatcher<To, T>(InnerMatcher).
1132
///
1133
/// If a matcher does not need knowledge about the inner type, prefer to use
1134
/// PolymorphicMatcherWithParam1.
1135
template <template <typename ToArg, typename FromArg> class ArgumentAdapterT,
1136
          typename FromTypes = AdaptativeDefaultFromTypes,
1137
          typename ToTypes = AdaptativeDefaultToTypes>
1138
struct ArgumentAdaptingMatcherFunc {
1139
  template <typename T> class Adaptor {
1140
  public:
1141
    explicit Adaptor(const Matcher<T> &InnerMatcher)
1142
40.3k
        : InnerMatcher(InnerMatcher) {}
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl>::Adaptor(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
1142
308
        : InnerMatcher(InnerMatcher) {}
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::Adaptor(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1142
2.48k
        : InnerMatcher(InnerMatcher) {}
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::Adaptor(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1142
2.86k
        : InnerMatcher(InnerMatcher) {}
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::Adaptor(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1142
16.9k
        : InnerMatcher(InnerMatcher) {}
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl>::Adaptor(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
1142
445
        : InnerMatcher(InnerMatcher) {}
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasAncestorMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc> >::Adaptor<clang::Stmt>::Adaptor(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1142
1.07k
        : InnerMatcher(InnerMatcher) {}
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl>::Adaptor(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
1142
16.2k
        : InnerMatcher(InnerMatcher) {}
1143
1144
    using ReturnTypes = ToTypes;
1145
1146
39.4k
    template <typename To> operator Matcher<To>() const {
1147
39.4k
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
39.4k
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::VarDecl><clang::VarDecl>() const
Line
Count
Source
1146
150
    template <typename To> operator Matcher<To>() const {
1147
150
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
150
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::Stmt><clang::Stmt>() const
Line
Count
Source
1146
511
    template <typename To> operator Matcher<To>() const {
1147
511
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
511
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::CompoundStmt><clang::CompoundStmt>() const
Line
Count
Source
1146
527
    template <typename To> operator Matcher<To>() const {
1147
527
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
527
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl>::operator clang::ast_matchers::internal::Matcher<clang::CompoundStmt><clang::CompoundStmt>() const
Line
Count
Source
1146
150
    template <typename To> operator Matcher<To>() const {
1147
150
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
150
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::Expr><clang::Expr>() const
Line
Count
Source
1146
722
    template <typename To> operator Matcher<To>() const {
1147
722
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
722
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::UnaryOperator><clang::UnaryOperator>() const
Line
Count
Source
1146
224
    template <typename To> operator Matcher<To>() const {
1147
224
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
224
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::ExplicitCastExpr><clang::ExplicitCastExpr>() const
Line
Count
Source
1146
448
    template <typename To> operator Matcher<To>() const {
1147
448
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
448
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::Stmt><clang::Stmt>() const
Line
Count
Source
1146
1.90k
    template <typename To> operator Matcher<To>() const {
1147
1.90k
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
1.90k
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::Expr><clang::Expr>() const
Line
Count
Source
1146
210
    template <typename To> operator Matcher<To>() const {
1147
210
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
210
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::ObjCMethodDecl><clang::ObjCMethodDecl>() const
Line
Count
Source
1146
210
    template <typename To> operator Matcher<To>() const {
1147
210
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
210
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::FunctionDecl><clang::FunctionDecl>() const
Line
Count
Source
1146
212
    template <typename To> operator Matcher<To>() const {
1147
212
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
212
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::BlockDecl><clang::BlockDecl>() const
Line
Count
Source
1146
210
    template <typename To> operator Matcher<To>() const {
1147
210
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
210
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl>::operator clang::ast_matchers::internal::Matcher<clang::CXXRecordDecl><clang::CXXRecordDecl>() const
Line
Count
Source
1146
43
    template <typename To> operator Matcher<To>() const {
1147
43
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
43
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::Decl><clang::Decl>() const
Line
Count
Source
1146
7
    template <typename To> operator Matcher<To>() const {
1147
7
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
7
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasAncestorMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::Stmt><clang::Stmt>() const
Line
Count
Source
1146
551
    template <typename To> operator Matcher<To>() const {
1147
551
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
551
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::ObjCAutoreleasePoolStmt><clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
1146
366
    template <typename To> operator Matcher<To>() const {
1147
366
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
366
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::Decl><clang::Decl>() const
Line
Count
Source
1146
183
    template <typename To> operator Matcher<To>() const {
1147
183
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
183
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::FunctionDecl><clang::FunctionDecl>() const
Line
Count
Source
1146
486
    template <typename To> operator Matcher<To>() const {
1147
486
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
486
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt>::operator clang::ast_matchers::internal::Matcher<clang::InitListExpr><clang::InitListExpr>() const
Line
Count
Source
1146
16.1k
    template <typename To> operator Matcher<To>() const {
1147
16.1k
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
16.1k
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl>::operator clang::ast_matchers::internal::Matcher<clang::DeclStmt><clang::DeclStmt>() const
Line
Count
Source
1146
16.1k
    template <typename To> operator Matcher<To>() const {
1147
16.1k
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
16.1k
    }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl>::operator clang::ast_matchers::internal::Matcher<clang::Stmt><clang::Stmt>() const
Line
Count
Source
1146
49
    template <typename To> operator Matcher<To>() const {
1147
49
      return Matcher<To>(new ArgumentAdapterT<To, T>(InnerMatcher));
1148
49
    }
1149
1150
  private:
1151
    const Matcher<T> InnerMatcher;
1152
  };
1153
1154
  template <typename T>
1155
40.3k
  static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
1156
40.3k
    return Adaptor<T>(InnerMatcher);
1157
40.3k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::create<clang::Decl>(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
1155
308
  static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
1156
308
    return Adaptor<T>(InnerMatcher);
1157
308
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::create<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1155
2.48k
  static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
1156
2.48k
    return Adaptor<T>(InnerMatcher);
1157
2.48k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::create<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1155
2.86k
  static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
1156
2.86k
    return Adaptor<T>(InnerMatcher);
1157
2.86k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::create<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1155
16.9k
  static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
1156
16.9k
    return Adaptor<T>(InnerMatcher);
1157
16.9k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::create<clang::Decl>(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
1155
445
  static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
1156
445
    return Adaptor<T>(InnerMatcher);
1157
445
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasAncestorMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc> >::Adaptor<clang::Stmt> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasAncestorMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc> >::create<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1155
1.07k
  static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
1156
1.07k
    return Adaptor<T>(InnerMatcher);
1157
1.07k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::create<clang::Decl>(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
1155
16.2k
  static Adaptor<T> create(const Matcher<T> &InnerMatcher) {
1156
16.2k
    return Adaptor<T>(InnerMatcher);
1157
16.2k
  }
1158
1159
  template <typename T>
1160
40.3k
  Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
1161
40.3k
    return create(InnerMatcher);
1162
40.3k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::operator()<clang::Decl>(clang::ast_matchers::internal::Matcher<clang::Decl> const&) const
Line
Count
Source
1160
308
  Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
1161
308
    return create(InnerMatcher);
1162
308
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::operator()<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&) const
Line
Count
Source
1160
2.48k
  Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
1161
2.48k
    return create(InnerMatcher);
1162
2.48k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::ForEachDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::operator()<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&) const
Line
Count
Source
1160
2.86k
  Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
1161
2.86k
    return create(InnerMatcher);
1162
2.86k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Stmt> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::operator()<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&) const
Line
Count
Source
1160
16.9k
  Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
1161
16.9k
    return create(InnerMatcher);
1162
16.9k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::operator()<clang::Decl>(clang::ast_matchers::internal::Matcher<clang::Decl> const&) const
Line
Count
Source
1160
444
  Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
1161
444
    return create(InnerMatcher);
1162
444
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasAncestorMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc> >::Adaptor<clang::Stmt> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasAncestorMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::NestedNameSpecifierLoc, clang::Stmt, clang::TypeLoc> >::operator()<clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt> const&) const
Line
Count
Source
1160
1.07k
  Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
1161
1.07k
    return create(InnerMatcher);
1162
1.07k
  }
clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::Adaptor<clang::Decl> clang::ast_matchers::internal::ArgumentAdaptingMatcherFunc<clang::ast_matchers::internal::HasDescendantMatcher, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>, clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::TypeLoc, clang::QualType> >::operator()<clang::Decl>(clang::ast_matchers::internal::Matcher<clang::Decl> const&) const
Line
Count
Source
1160
16.2k
  Adaptor<T> operator()(const Matcher<T> &InnerMatcher) const {
1161
16.2k
    return create(InnerMatcher);
1162
16.2k
  }
1163
};
1164
1165
/// A PolymorphicMatcherWithParamN<MatcherT, P1, ..., PN> object can be
1166
/// created from N parameters p1, ..., pN (of type P1, ..., PN) and
1167
/// used as a Matcher<T> where a MatcherT<T, P1, ..., PN>(p1, ..., pN)
1168
/// can be constructed.
1169
///
1170
/// For example:
1171
/// - PolymorphicMatcherWithParam0<IsDefinitionMatcher>()
1172
///   creates an object that can be used as a Matcher<T> for any type T
1173
///   where an IsDefinitionMatcher<T>() can be constructed.
1174
/// - PolymorphicMatcherWithParam1<ValueEqualsMatcher, int>(42)
1175
///   creates an object that can be used as a Matcher<T> for any type T
1176
///   where a ValueEqualsMatcher<T, int>(42) can be constructed.
1177
template <template <typename T> class MatcherT,
1178
          typename ReturnTypesF = void(AllNodeBaseTypes)>
1179
class PolymorphicMatcherWithParam0 {
1180
public:
1181
  using ReturnTypes = typename ExtractFunctionArgMeta<ReturnTypesF>::type;
1182
1183
  template <typename T>
1184
420
  operator Matcher<T>() const {
1185
420
    static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
1186
420
                  "right polymorphic conversion");
1187
420
    return Matcher<T>(new MatcherT<T>());
1188
420
  }
1189
};
1190
1191
template <template <typename T, typename P1> class MatcherT,
1192
          typename P1,
1193
          typename ReturnTypesF = void(AllNodeBaseTypes)>
1194
class PolymorphicMatcherWithParam1 {
1195
public:
1196
  explicit PolymorphicMatcherWithParam1(const P1 &Param1)
1197
89.7k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::HasDeclarationMatcher, clang::ast_matchers::internal::Matcher<clang::Decl>, void (clang::ast_matchers::internal::TypeList<clang::CallExpr, clang::CXXConstructExpr, clang::CXXNewExpr, clang::DeclRefExpr, clang::EnumType, clang::ElaboratedType, clang::InjectedClassNameType, clang::LabelStmt, clang::AddrLabelExpr, clang::MemberExpr, clang::QualType, clang::RecordType, clang::TagType, clang::TemplateSpecializationType, clang::TemplateTypeParmType, clang::TypedefType, clang::UnresolvedUsingType, clang::ObjCIvarRefExpr>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
1197
19.3k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasType0Matcher, clang::ast_matchers::internal::Matcher<clang::QualType>, void (clang::ast_matchers::internal::TypeList<clang::Expr, clang::FriendDecl, clang::TypedefNameDecl, clang::ValueDecl>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::QualType> const&)
Line
Count
Source
1197
38.4k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasType1Matcher, clang::ast_matchers::internal::Matcher<clang::Decl>, void (clang::ast_matchers::internal::TypeList<clang::Expr, clang::FriendDecl, clang::ValueDecl>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::Decl> const&)
Line
Count
Source
1197
66
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::ValueEqualsMatcher, int, void (clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>)>::PolymorphicMatcherWithParam1(int const&)
Line
Count
Source
1197
1.26k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasLHS0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::ArraySubscriptExpr>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::Expr> const&)
Line
Count
Source
1197
2.40k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasRHS0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::ArraySubscriptExpr>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::Expr> const&)
Line
Count
Source
1197
1.76k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasAnyArgument0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::CallExpr, clang::CXXConstructExpr, clang::CXXUnresolvedConstructExpr, clang::ObjCMessageExpr>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::Expr> const&)
Line
Count
Source
1197
1.45k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_equalsBoundNode0Matcher, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void (clang::ast_matchers::internal::TypeList<clang::Stmt, clang::Decl, clang::Type, clang::QualType>)>::PolymorphicMatcherWithParam1(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
1197
3.08k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasOperatorName0Matcher, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::UnaryOperator>)>::PolymorphicMatcherWithParam1(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
Line
Count
Source
1197
20.6k
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasCondition0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::IfStmt, clang::ForStmt, clang::WhileStmt, clang::DoStmt, clang::SwitchStmt, clang::AbstractConditionalOperator>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::Expr> const&)
Line
Count
Source
1197
632
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasAnyParameter0Matcher, clang::ast_matchers::internal::Matcher<clang::ParmVarDecl>, void (clang::ast_matchers::internal::TypeList<clang::FunctionDecl, clang::ObjCMethodDecl, clang::BlockDecl>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::ParmVarDecl> const&)
Line
Count
Source
1197
219
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasSourceExpression0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::CastExpr, clang::OpaqueValueExpr>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::Expr> const&)
Line
Count
Source
1197
190
      : Param1(Param1) {}
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasBody0Matcher, clang::ast_matchers::internal::Matcher<clang::Stmt>, void (clang::ast_matchers::internal::TypeList<clang::DoStmt, clang::ForStmt, clang::WhileStmt, clang::CXXForRangeStmt, clang::FunctionDecl>)>::PolymorphicMatcherWithParam1(clang::ast_matchers::internal::Matcher<clang::Stmt> const&)
Line
Count
Source
1197
181
      : Param1(Param1) {}
1198
1199
  using ReturnTypes = typename ExtractFunctionArgMeta<ReturnTypesF>::type;
1200
1201
  template <typename T>
1202
90.6k
  operator Matcher<T>() const {
1203
90.6k
    static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
1204
90.6k
                  "right polymorphic conversion");
1205
90.6k
    return Matcher<T>(new MatcherT<T, P1>(Param1));
1206
90.6k
  }
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::HasDeclarationMatcher, clang::ast_matchers::internal::Matcher<clang::Decl>, void (clang::ast_matchers::internal::TypeList<clang::CallExpr, clang::CXXConstructExpr, clang::CXXNewExpr, clang::DeclRefExpr, clang::EnumType, clang::ElaboratedType, clang::InjectedClassNameType, clang::LabelStmt, clang::AddrLabelExpr, clang::MemberExpr, clang::QualType, clang::RecordType, clang::TagType, clang::TemplateSpecializationType, clang::TemplateTypeParmType, clang::TypedefType, clang::UnresolvedUsingType, clang::ObjCIvarRefExpr>)>::operator clang::ast_matchers::internal::Matcher<clang::CallExpr><clang::CallExpr>() const
Line
Count
Source
1202
1.55k
  operator Matcher<T>() const {
1203
1.55k
    static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
1204
1.55k
                  "right polymorphic conversion");
1205
1.55k
    return Matcher<T>(new MatcherT<T, P1>(Param1));
1206
1.55k
  }
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::HasDeclarationMatcher, clang::ast_matchers::internal::Matcher<clang::Decl>, void (clang::ast_matchers::internal::TypeList<clang::CallExpr, clang::CXXConstructExpr, clang::CXXNewExpr, clang::DeclRefExpr, clang::EnumType, clang::ElaboratedType, clang::InjectedClassNameType, clang::LabelStmt, clang::AddrLabelExpr, clang::MemberExpr, clang::QualType, clang::RecordType, clang::TagType, clang::TemplateSpecializationType, clang::TemplateTypeParmType, clang::TypedefType, clang::UnresolvedUsingType, clang::ObjCIvarRefExpr>)>::operator clang::ast_matchers::internal::Matcher<clang::QualType><clang::QualType>() const
Line
Count
Source
1202
515
  operator Matcher<T>() const {
1203
515
    static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
1204
515
                  "right polymorphic conversion");
1205
515
    return Matcher<T>(new MatcherT<T, P1>(Param1));
1206
515
  }
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasType0Matcher, clang::ast_matchers::internal::Matcher<clang::QualType>, void (clang::ast_matchers::internal::TypeList<clang::Expr, clang::FriendDecl, clang::TypedefNameDecl, clang::ValueDecl>)>::operator clang::ast_matchers::internal::Matcher<clang::Expr><clang::Expr>() const
Line
Count
Source
1202
1.78k
  operator Matcher<T>() const {
1203
1.78k
    static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
1204
1.78k
                  "right polymorphic conversion");
1205
1.78k
    return Matcher<T>(new MatcherT<T, P1>(Param1));
1206
1.78k
  }
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasType1Matcher, clang::ast_matchers::internal::Matcher<clang::Decl>, void (clang::ast_matchers::internal::TypeList<clang::Expr, clang::FriendDecl, clang::ValueDecl>)>::operator clang::ast_matchers::internal::Matcher<clang::Expr><clang::Expr>() const
Line
Count
Source
1202
39
  operator Matcher<T>() const {
1203
39
    static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
1204
39
                  "right polymorphic conversion");
1205
39
    return Matcher<T>(new MatcherT<T, P1>(Param1));
1206
39
  }
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::ValueEqualsMatcher, int, void (clang::ast_matchers::internal::TypeList<clang::Decl, clang::Stmt, clang::NestedNameSpecifier, clang::NestedNameSpecifierLoc, clang::QualType, clang::Type, clang::TypeLoc, clang::CXXCtorInitializer>)>::operator clang::ast_matchers::internal::Matcher<clang::IntegerLiteral><clang::IntegerLiteral>() const
Line
Count
Source
1202
1.26k
  operator Matcher<T>() const {
1203
1.26k
    static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
1204
1.26k
                  "right polymorphic conversion");
1205
1.26k
    return Matcher<T>(new MatcherT<T, P1>(Param1));
1206
1.26k
  }
clang::ast_matchers::internal::PolymorphicMatcherWithParam1<clang::ast_matchers::internal::matcher_hasRHS0Matcher, clang::ast_matchers::internal::Matcher<clang::Expr>, void (clang::ast_matchers::internal::TypeList<clang::BinaryOperator, clang::ArraySubscriptExpr>)>::operator clang::ast_matchers::internal::Matcher<clang::BinaryOperator><clang::BinaryOperator>() const
Line
Count
Source
1202
1.76k
  operator Matcher<T>() const {
1203
1.76k
    static_assert(TypeListContainsSuperOf<ReturnTypes, T>::value,
1204
1.76k
                  "right polymorphic conversion");
1205
1.76k
    return Matcher<T>(new MatcherT<T, P1>(Param1));
1206
1.76k
  }