Coverage Report

Created: 2020-09-19 12:23

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/AST/ASTTypeTraits.h
Line
Count
Source (jump to first uncovered line)
1
//===--- ASTTypeTraits.h ----------------------------------------*- 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
//  Provides a dynamic type identifier and a dynamically typed node container
10
//  that can be used to store an AST base node at runtime in the same storage in
11
//  a type safe way.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_CLANG_AST_ASTTYPETRAITS_H
16
#define LLVM_CLANG_AST_ASTTYPETRAITS_H
17
18
#include "clang/AST/ASTFwd.h"
19
#include "clang/AST/DeclCXX.h"
20
#include "clang/AST/NestedNameSpecifier.h"
21
#include "clang/AST/TemplateBase.h"
22
#include "clang/AST/TypeLoc.h"
23
#include "clang/Basic/LLVM.h"
24
#include "llvm/ADT/DenseMapInfo.h"
25
#include "llvm/Support/AlignOf.h"
26
27
namespace llvm {
28
29
class raw_ostream;
30
31
}
32
33
namespace clang {
34
35
struct PrintingPolicy;
36
37
/// Defines how we descend a level in the AST when we pass
38
/// through expressions.
39
enum TraversalKind {
40
  /// Will traverse all child nodes.
41
  TK_AsIs,
42
43
  /// Will not traverse implicit casts and parentheses.
44
  /// Corresponds to Expr::IgnoreParenImpCasts()
45
  TK_IgnoreImplicitCastsAndParentheses,
46
47
  /// Ignore AST nodes not written in the source
48
  TK_IgnoreUnlessSpelledInSource
49
};
50
51
/// Kind identifier.
52
///
53
/// It can be constructed from any node kind and allows for runtime type
54
/// hierarchy checks.
55
/// Use getFromNodeKind<T>() to construct them.
56
class ASTNodeKind {
57
public:
58
  /// Empty identifier. It matches nothing.
59
2.21M
  ASTNodeKind() : KindId(NKI_None) {}
60
61
  /// Construct an identifier for T.
62
  template <class T>
63
4.39M
  static ASTNodeKind getFromNodeKind() {
64
4.39M
    return ASTNodeKind(KindToKindId<T>::Id);
65
4.39M
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::QualType>()
Line
Count
Source
63
624k
  static ASTNodeKind getFromNodeKind() {
64
624k
    return ASTNodeKind(KindToKindId<T>::Id);
65
624k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeLoc>()
Line
Count
Source
63
271k
  static ASTNodeKind getFromNodeKind() {
64
271k
    return ASTNodeKind(KindToKindId<T>::Id);
65
271k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifierLoc>()
Line
Count
Source
63
114k
  static ASTNodeKind getFromNodeKind() {
64
114k
    return ASTNodeKind(KindToKindId<T>::Id);
65
114k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Stmt>()
Line
Count
Source
63
541k
  static ASTNodeKind getFromNodeKind() {
64
541k
    return ASTNodeKind(KindToKindId<T>::Id);
65
541k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgument>()
Line
Count
Source
63
733
  static ASTNodeKind getFromNodeKind() {
64
733
    return ASTNodeKind(KindToKindId<T>::Id);
65
733
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgumentLoc>()
Line
Count
Source
63
403
  static ASTNodeKind getFromNodeKind() {
64
403
    return ASTNodeKind(KindToKindId<T>::Id);
65
403
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateName>()
Line
Count
Source
63
76
  static ASTNodeKind getFromNodeKind() {
64
76
    return ASTNodeKind(KindToKindId<T>::Id);
65
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifier>()
Line
Count
Source
63
3.55k
  static ASTNodeKind getFromNodeKind() {
64
3.55k
    return ASTNodeKind(KindToKindId<T>::Id);
65
3.55k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Type>()
Line
Count
Source
63
357k
  static ASTNodeKind getFromNodeKind() {
64
357k
    return ASTNodeKind(KindToKindId<T>::Id);
65
357k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCtorInitializer>()
Line
Count
Source
63
1.10k
  static ASTNodeKind getFromNodeKind() {
64
1.10k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.10k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPClause>()
Line
Count
Source
63
149
  static ASTNodeKind getFromNodeKind() {
64
149
    return ASTNodeKind(KindToKindId<T>::Id);
65
149
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Expr>()
Line
Count
Source
63
1.06M
  static ASTNodeKind getFromNodeKind() {
64
1.06M
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.06M
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Decl>()
Line
Count
Source
63
478k
  static ASTNodeKind getFromNodeKind() {
64
478k
    return ASTNodeKind(KindToKindId<T>::Id);
65
478k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclStmt>()
Line
Count
Source
63
19.8k
  static ASTNodeKind getFromNodeKind() {
64
19.8k
    return ASTNodeKind(KindToKindId<T>::Id);
65
19.8k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundStmt>()
Line
Count
Source
63
3.96k
  static ASTNodeKind getFromNodeKind() {
64
3.96k
    return ASTNodeKind(KindToKindId<T>::Id);
65
3.96k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockPointerType>()
Line
Count
Source
63
1.39k
  static ASTNodeKind getFromNodeKind() {
64
1.39k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.39k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefType>()
Line
Count
Source
63
1.19k
  static ASTNodeKind getFromNodeKind() {
64
1.19k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.19k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefDecl>()
Line
Count
Source
63
2.32k
  static ASTNodeKind getFromNodeKind() {
64
2.32k
    return ASTNodeKind(KindToKindId<T>::Id);
65
2.32k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordType>()
Line
Count
Source
63
657
  static ASTNodeKind getFromNodeKind() {
64
657
    return ASTNodeKind(KindToKindId<T>::Id);
65
657
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCObjectPointerType>()
Line
Count
Source
63
1.17k
  static ASTNodeKind getFromNodeKind() {
64
1.17k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.17k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAutoreleasePoolStmt>()
Line
Count
Source
63
2.73k
  static ASTNodeKind getFromNodeKind() {
64
2.73k
    return ASTNodeKind(KindToKindId<T>::Id);
65
2.73k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockDecl>()
Line
Count
Source
63
2.35k
  static ASTNodeKind getFromNodeKind() {
64
2.35k
    return ASTNodeKind(KindToKindId<T>::Id);
65
2.35k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PointerType>()
Line
Count
Source
63
2.01k
  static ASTNodeKind getFromNodeKind() {
64
2.01k
    return ASTNodeKind(KindToKindId<T>::Id);
65
2.01k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CStyleCastExpr>()
Line
Count
Source
63
219
  static ASTNodeKind getFromNodeKind() {
64
219
    return ASTNodeKind(KindToKindId<T>::Id);
65
219
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordDecl>()
Line
Count
Source
63
13.9k
  static ASTNodeKind getFromNodeKind() {
64
13.9k
    return ASTNodeKind(KindToKindId<T>::Id);
65
13.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConditionalOperator>()
Line
Count
Source
63
4.88k
  static ASTNodeKind getFromNodeKind() {
64
4.88k
    return ASTNodeKind(KindToKindId<T>::Id);
65
4.88k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarRefExpr>()
Line
Count
Source
63
211
  static ASTNodeKind getFromNodeKind() {
64
211
    return ASTNodeKind(KindToKindId<T>::Id);
65
211
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryOperator>()
Line
Count
Source
63
24.3k
  static ASTNodeKind getFromNodeKind() {
64
24.3k
    return ASTNodeKind(KindToKindId<T>::Id);
65
24.3k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IntegerLiteral>()
Line
Count
Source
63
3.48k
  static ASTNodeKind getFromNodeKind() {
64
3.48k
    return ASTNodeKind(KindToKindId<T>::Id);
65
3.48k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GotoStmt>()
Line
Count
Source
63
584
  static ASTNodeKind getFromNodeKind() {
64
584
    return ASTNodeKind(KindToKindId<T>::Id);
65
584
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXOperatorCallExpr>()
Line
Count
Source
63
9.01k
  static ASTNodeKind getFromNodeKind() {
64
9.01k
    return ASTNodeKind(KindToKindId<T>::Id);
65
9.01k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReferenceType>()
Line
Count
Source
63
50.3k
  static ASTNodeKind getFromNodeKind() {
64
50.3k
    return ASTNodeKind(KindToKindId<T>::Id);
65
50.3k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMemberCallExpr>()
Line
Count
Source
63
3.40k
  static ASTNodeKind getFromNodeKind() {
64
3.40k
    return ASTNodeKind(KindToKindId<T>::Id);
65
3.40k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXRecordDecl>()
Line
Count
Source
63
45.5k
  static ASTNodeKind getFromNodeKind() {
64
45.5k
    return ASTNodeKind(KindToKindId<T>::Id);
65
45.5k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamedDecl>()
Line
Count
Source
63
97.2k
  static ASTNodeKind getFromNodeKind() {
64
97.2k
    return ASTNodeKind(KindToKindId<T>::Id);
65
97.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCInterfaceDecl>()
Line
Count
Source
63
9.11k
  static ASTNodeKind getFromNodeKind() {
64
9.11k
    return ASTNodeKind(KindToKindId<T>::Id);
65
9.11k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBaseSpecifier>()
Line
Count
Source
63
1.44k
  static ASTNodeKind getFromNodeKind() {
64
1.44k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.44k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CallExpr>()
Line
Count
Source
63
38.8k
  static ASTNodeKind getFromNodeKind() {
64
38.8k
    return ASTNodeKind(KindToKindId<T>::Id);
65
38.8k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionDecl>()
Line
Count
Source
63
26.6k
  static ASTNodeKind getFromNodeKind() {
64
26.6k
    return ASTNodeKind(KindToKindId<T>::Id);
65
26.6k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LambdaExpr>()
Line
Count
Source
63
935
  static ASTNodeKind getFromNodeKind() {
64
935
    return ASTNodeKind(KindToKindId<T>::Id);
65
935
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FieldDecl>()
Line
Count
Source
63
4.33k
  static ASTNodeKind getFromNodeKind() {
64
4.33k
    return ASTNodeKind(KindToKindId<T>::Id);
65
4.33k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateSpecializationDecl>()
Line
Count
Source
63
3.62k
  static ASTNodeKind getFromNodeKind() {
64
3.62k
    return ASTNodeKind(KindToKindId<T>::Id);
65
3.62k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InitListExpr>()
Line
Count
Source
63
16.7k
  static ASTNodeKind getFromNodeKind() {
64
16.7k
    return ASTNodeKind(KindToKindId<T>::Id);
65
16.7k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ForStmt>()
Line
Count
Source
63
2.67k
  static ASTNodeKind getFromNodeKind() {
64
2.67k
    return ASTNodeKind(KindToKindId<T>::Id);
65
2.67k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXForRangeStmt>()
Line
Count
Source
63
1.13k
  static ASTNodeKind getFromNodeKind() {
64
1.13k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.13k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DesignatedInitExpr>()
Line
Count
Source
63
337
  static ASTNodeKind getFromNodeKind() {
64
337
    return ASTNodeKind(KindToKindId<T>::Id);
65
337
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryExprOrTypeTraitExpr>()
Line
Count
Source
63
4.54k
  static ASTNodeKind getFromNodeKind() {
64
4.54k
    return ASTNodeKind(KindToKindId<T>::Id);
65
4.54k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMessageExpr>()
Line
Count
Source
63
14.6k
  static ASTNodeKind getFromNodeKind() {
64
14.6k
    return ASTNodeKind(KindToKindId<T>::Id);
65
14.6k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMethodDecl>()
Line
Count
Source
63
2.61k
  static ASTNodeKind getFromNodeKind() {
64
2.61k
    return ASTNodeKind(KindToKindId<T>::Id);
65
2.61k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclaratorDecl>()
Line
Count
Source
63
219
  static ASTNodeKind getFromNodeKind() {
64
219
    return ASTNodeKind(KindToKindId<T>::Id);
65
219
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclRefExpr>()
Line
Count
Source
63
69.2k
  static ASTNodeKind getFromNodeKind() {
64
69.2k
    return ASTNodeKind(KindToKindId<T>::Id);
65
69.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OverloadExpr>()
Line
Count
Source
63
44
  static ASTNodeKind getFromNodeKind() {
64
44
    return ASTNodeKind(KindToKindId<T>::Id);
65
44
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VarDecl>()
Line
Count
Source
63
201k
  static ASTNodeKind getFromNodeKind() {
64
201k
    return ASTNodeKind(KindToKindId<T>::Id);
65
201k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCatchStmt>()
Line
Count
Source
63
269
  static ASTNodeKind getFromNodeKind() {
64
269
    return ASTNodeKind(KindToKindId<T>::Id);
65
269
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructorDecl>()
Line
Count
Source
63
10.3k
  static ASTNodeKind getFromNodeKind() {
64
10.3k
    return ASTNodeKind(KindToKindId<T>::Id);
65
10.3k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructExpr>()
Line
Count
Source
63
4.28k
  static ASTNodeKind getFromNodeKind() {
64
4.28k
    return ASTNodeKind(KindToKindId<T>::Id);
65
4.28k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParmVarDecl>()
Line
Count
Source
63
53.2k
  static ASTNodeKind getFromNodeKind() {
64
53.2k
    return ASTNodeKind(KindToKindId<T>::Id);
65
53.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IfStmt>()
Line
Count
Source
63
3.22k
  static ASTNodeKind getFromNodeKind() {
64
3.22k
    return ASTNodeKind(KindToKindId<T>::Id);
65
3.22k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArraySubscriptExpr>()
Line
Count
Source
63
1.22k
  static ASTNodeKind getFromNodeKind() {
64
1.22k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.22k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryOperator>()
Line
Count
Source
63
94.2k
  static ASTNodeKind getFromNodeKind() {
64
94.2k
    return ASTNodeKind(KindToKindId<T>::Id);
65
94.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CastExpr>()
Line
Count
Source
63
5.60k
  static ASTNodeKind getFromNodeKind() {
64
5.60k
    return ASTNodeKind(KindToKindId<T>::Id);
65
5.60k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExplicitCastExpr>()
Line
Count
Source
63
3.14k
  static ASTNodeKind getFromNodeKind() {
64
3.14k
    return ASTNodeKind(KindToKindId<T>::Id);
65
3.14k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitCastExpr>()
Line
Count
Source
63
1.44k
  static ASTNodeKind getFromNodeKind() {
64
1.44k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.44k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagDecl>()
Line
Count
Source
63
568
  static ASTNodeKind getFromNodeKind() {
64
568
    return ASTNodeKind(KindToKindId<T>::Id);
65
568
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AbstractConditionalOperator>()
Line
Count
Source
63
1.16k
  static ASTNodeKind getFromNodeKind() {
64
1.16k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.16k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMethodDecl>()
Line
Count
Source
63
24.9k
  static ASTNodeKind getFromNodeKind() {
64
24.9k
    return ASTNodeKind(KindToKindId<T>::Id);
65
24.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberExpr>()
Line
Count
Source
63
1.27k
  static ASTNodeKind getFromNodeKind() {
64
1.27k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.27k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDecl>()
Line
Count
Source
63
220
  static ASTNodeKind getFromNodeKind() {
64
220
    return ASTNodeKind(KindToKindId<T>::Id);
65
220
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingShadowDecl>()
Line
Count
Source
63
118
  static ASTNodeKind getFromNodeKind() {
64
118
    return ASTNodeKind(KindToKindId<T>::Id);
65
118
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VariableArrayType>()
Line
Count
Source
63
1.02k
  static ASTNodeKind getFromNodeKind() {
64
1.02k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.02k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ElaboratedType>()
Line
Count
Source
63
228
  static ASTNodeKind getFromNodeKind() {
64
228
    return ASTNodeKind(KindToKindId<T>::Id);
65
228
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecayedType>()
Line
Count
Source
63
153
  static ASTNodeKind getFromNodeKind() {
64
153
    return ASTNodeKind(KindToKindId<T>::Id);
65
153
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchStmt>()
Line
Count
Source
63
917
  static ASTNodeKind getFromNodeKind() {
64
917
    return ASTNodeKind(KindToKindId<T>::Id);
65
917
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceDecl>()
Line
Count
Source
63
410
  static ASTNodeKind getFromNodeKind() {
64
410
    return ASTNodeKind(KindToKindId<T>::Id);
65
410
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CaseStmt>()
Line
Count
Source
63
142
  static ASTNodeKind getFromNodeKind() {
64
142
    return ASTNodeKind(KindToKindId<T>::Id);
65
142
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReturnStmt>()
Line
Count
Source
63
1.09k
  static ASTNodeKind getFromNodeKind() {
64
1.09k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.09k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNewExpr>()
Line
Count
Source
63
288
  static ASTNodeKind getFromNodeKind() {
64
288
    return ASTNodeKind(KindToKindId<T>::Id);
65
288
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumDecl>()
Line
Count
Source
63
3.27k
  static ASTNodeKind getFromNodeKind() {
64
3.27k
    return ASTNodeKind(KindToKindId<T>::Id);
65
3.27k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPExecutableDirective>()
Line
Count
Source
63
1.07k
  static ASTNodeKind getFromNodeKind() {
64
1.07k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.07k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPDefaultClause>()
Line
Count
Source
63
321
  static ASTNodeKind getFromNodeKind() {
64
321
    return ASTNodeKind(KindToKindId<T>::Id);
65
321
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TranslationUnitDecl>()
Line
Count
Source
63
2.32k
  static ASTNodeKind getFromNodeKind() {
64
2.32k
    return ASTNodeKind(KindToKindId<T>::Id);
65
2.32k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThisExpr>()
Line
Count
Source
63
304
  static ASTNodeKind getFromNodeKind() {
64
304
    return ASTNodeKind(KindToKindId<T>::Id);
65
304
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FriendDecl>()
Line
Count
Source
63
773
  static ASTNodeKind getFromNodeKind() {
64
773
    return ASTNodeKind(KindToKindId<T>::Id);
65
773
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefNameDecl>()
Line
Count
Source
63
1.42k
  static ASTNodeKind getFromNodeKind() {
64
1.42k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.42k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ValueDecl>()
Line
Count
Source
63
315
  static ASTNodeKind getFromNodeKind() {
64
315
    return ASTNodeKind(KindToKindId<T>::Id);
65
315
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CharacterLiteral>()
Line
Count
Source
63
293
  static ASTNodeKind getFromNodeKind() {
64
293
    return ASTNodeKind(KindToKindId<T>::Id);
65
293
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBoolLiteralExpr>()
Line
Count
Source
63
510
  static ASTNodeKind getFromNodeKind() {
64
510
    return ASTNodeKind(KindToKindId<T>::Id);
65
510
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FloatingLiteral>()
Line
Count
Source
63
666
  static ASTNodeKind getFromNodeKind() {
64
666
    return ASTNodeKind(KindToKindId<T>::Id);
65
666
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AccessSpecDecl>()
Line
Count
Source
63
196
  static ASTNodeKind getFromNodeKind() {
64
196
    return ASTNodeKind(KindToKindId<T>::Id);
65
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AddrLabelExpr>()
Line
Count
Source
63
130
  static ASTNodeKind getFromNodeKind() {
64
130
    return ASTNodeKind(KindToKindId<T>::Id);
65
130
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArrayType>()
Line
Count
Source
63
479
  static ASTNodeKind getFromNodeKind() {
64
479
    return ASTNodeKind(KindToKindId<T>::Id);
65
479
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AsmStmt>()
Line
Count
Source
63
88
  static ASTNodeKind getFromNodeKind() {
64
88
    return ASTNodeKind(KindToKindId<T>::Id);
65
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicExpr>()
Line
Count
Source
63
130
  static ASTNodeKind getFromNodeKind() {
64
130
    return ASTNodeKind(KindToKindId<T>::Id);
65
130
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicType>()
Line
Count
Source
63
207
  static ASTNodeKind getFromNodeKind() {
64
207
    return ASTNodeKind(KindToKindId<T>::Id);
65
207
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AutoType>()
Line
Count
Source
63
117
  static ASTNodeKind getFromNodeKind() {
64
117
    return ASTNodeKind(KindToKindId<T>::Id);
65
117
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryConditionalOperator>()
Line
Count
Source
63
236
  static ASTNodeKind getFromNodeKind() {
64
236
    return ASTNodeKind(KindToKindId<T>::Id);
65
236
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockExpr>()
Line
Count
Source
63
88
  static ASTNodeKind getFromNodeKind() {
64
88
    return ASTNodeKind(KindToKindId<T>::Id);
65
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BreakStmt>()
Line
Count
Source
63
88
  static ASTNodeKind getFromNodeKind() {
64
88
    return ASTNodeKind(KindToKindId<T>::Id);
65
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BuiltinType>()
Line
Count
Source
63
571
  static ASTNodeKind getFromNodeKind() {
64
571
    return ASTNodeKind(KindToKindId<T>::Id);
65
571
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ChooseExpr>()
Line
Count
Source
63
140
  static ASTNodeKind getFromNodeKind() {
64
140
    return ASTNodeKind(KindToKindId<T>::Id);
65
140
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateDecl>()
Line
Count
Source
63
5.84k
  static ASTNodeKind getFromNodeKind() {
64
5.84k
    return ASTNodeKind(KindToKindId<T>::Id);
65
5.84k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplatePartialSpecializationDecl>()
Line
Count
Source
63
138
  static ASTNodeKind getFromNodeKind() {
64
138
    return ASTNodeKind(KindToKindId<T>::Id);
65
138
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ComplexType>()
Line
Count
Source
63
196
  static ASTNodeKind getFromNodeKind() {
64
196
    return ASTNodeKind(KindToKindId<T>::Id);
65
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundLiteralExpr>()
Line
Count
Source
63
97
  static ASTNodeKind getFromNodeKind() {
64
97
    return ASTNodeKind(KindToKindId<T>::Id);
65
97
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantArrayType>()
Line
Count
Source
63
335
  static ASTNodeKind getFromNodeKind() {
64
335
    return ASTNodeKind(KindToKindId<T>::Id);
65
335
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantExpr>()
Line
Count
Source
63
82
  static ASTNodeKind getFromNodeKind() {
64
82
    return ASTNodeKind(KindToKindId<T>::Id);
65
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ContinueStmt>()
Line
Count
Source
63
88
  static ASTNodeKind getFromNodeKind() {
64
88
    return ASTNodeKind(KindToKindId<T>::Id);
65
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CUDAKernelCallExpr>()
Line
Count
Source
63
52
  static ASTNodeKind getFromNodeKind() {
64
52
    return ASTNodeKind(KindToKindId<T>::Id);
65
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBindTemporaryExpr>()
Line
Count
Source
63
76
  static ASTNodeKind getFromNodeKind() {
64
76
    return ASTNodeKind(KindToKindId<T>::Id);
65
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstCastExpr>()
Line
Count
Source
63
46
  static ASTNodeKind getFromNodeKind() {
64
46
    return ASTNodeKind(KindToKindId<T>::Id);
65
46
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConversionDecl>()
Line
Count
Source
63
153
  static ASTNodeKind getFromNodeKind() {
64
153
    return ASTNodeKind(KindToKindId<T>::Id);
65
153
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeductionGuideDecl>()
Line
Count
Source
63
173
  static ASTNodeKind getFromNodeKind() {
64
173
    return ASTNodeKind(KindToKindId<T>::Id);
65
173
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDefaultArgExpr>()
Line
Count
Source
63
76
  static ASTNodeKind getFromNodeKind() {
64
76
    return ASTNodeKind(KindToKindId<T>::Id);
65
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeleteExpr>()
Line
Count
Source
63
76
  static ASTNodeKind getFromNodeKind() {
64
76
    return ASTNodeKind(KindToKindId<T>::Id);
65
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDependentScopeMemberExpr>()
Line
Count
Source
63
1.55k
  static ASTNodeKind getFromNodeKind() {
64
1.55k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.55k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDestructorDecl>()
Line
Count
Source
63
116
  static ASTNodeKind getFromNodeKind() {
64
116
    return ASTNodeKind(KindToKindId<T>::Id);
65
116
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDynamicCastExpr>()
Line
Count
Source
63
76
  static ASTNodeKind getFromNodeKind() {
64
76
    return ASTNodeKind(KindToKindId<T>::Id);
65
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXFunctionalCastExpr>()
Line
Count
Source
63
153
  static ASTNodeKind getFromNodeKind() {
64
153
    return ASTNodeKind(KindToKindId<T>::Id);
65
153
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNoexceptExpr>()
Line
Count
Source
63
904
  static ASTNodeKind getFromNodeKind() {
64
904
    return ASTNodeKind(KindToKindId<T>::Id);
65
904
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNullPtrLiteralExpr>()
Line
Count
Source
63
82
  static ASTNodeKind getFromNodeKind() {
64
82
    return ASTNodeKind(KindToKindId<T>::Id);
65
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXReinterpretCastExpr>()
Line
Count
Source
63
196
  static ASTNodeKind getFromNodeKind() {
64
196
    return ASTNodeKind(KindToKindId<T>::Id);
65
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStaticCastExpr>()
Line
Count
Source
63
198
  static ASTNodeKind getFromNodeKind() {
64
198
    return ASTNodeKind(KindToKindId<T>::Id);
65
198
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStdInitializerListExpr>()
Line
Count
Source
63
142
  static ASTNodeKind getFromNodeKind() {
64
142
    return ASTNodeKind(KindToKindId<T>::Id);
65
142
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTemporaryObjectExpr>()
Line
Count
Source
63
81
  static ASTNodeKind getFromNodeKind() {
64
81
    return ASTNodeKind(KindToKindId<T>::Id);
65
81
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThrowExpr>()
Line
Count
Source
63
166
  static ASTNodeKind getFromNodeKind() {
64
166
    return ASTNodeKind(KindToKindId<T>::Id);
65
166
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTryStmt>()
Line
Count
Source
63
76
  static ASTNodeKind getFromNodeKind() {
64
76
    return ASTNodeKind(KindToKindId<T>::Id);
65
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXUnresolvedConstructExpr>()
Line
Count
Source
63
376
  static ASTNodeKind getFromNodeKind() {
64
376
    return ASTNodeKind(KindToKindId<T>::Id);
65
376
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecompositionDecl>()
Line
Count
Source
63
46
  static ASTNodeKind getFromNodeKind() {
64
46
    return ASTNodeKind(KindToKindId<T>::Id);
65
46
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecltypeType>()
Line
Count
Source
63
117
  static ASTNodeKind getFromNodeKind() {
64
117
    return ASTNodeKind(KindToKindId<T>::Id);
65
117
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeducedTemplateSpecializationType>()
Line
Count
Source
63
58
  static ASTNodeKind getFromNodeKind() {
64
58
    return ASTNodeKind(KindToKindId<T>::Id);
65
58
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DefaultStmt>()
Line
Count
Source
63
49
  static ASTNodeKind getFromNodeKind() {
64
49
    return ASTNodeKind(KindToKindId<T>::Id);
65
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DependentSizedArrayType>()
Line
Count
Source
63
118
  static ASTNodeKind getFromNodeKind() {
64
118
    return ASTNodeKind(KindToKindId<T>::Id);
65
118
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DoStmt>()
Line
Count
Source
63
222
  static ASTNodeKind getFromNodeKind() {
64
222
    return ASTNodeKind(KindToKindId<T>::Id);
65
222
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumConstantDecl>()
Line
Count
Source
63
196
  static ASTNodeKind getFromNodeKind() {
64
196
    return ASTNodeKind(KindToKindId<T>::Id);
65
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumType>()
Line
Count
Source
63
166
  static ASTNodeKind getFromNodeKind() {
64
166
    return ASTNodeKind(KindToKindId<T>::Id);
65
166
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExprWithCleanups>()
Line
Count
Source
63
122
  static ASTNodeKind getFromNodeKind() {
64
122
    return ASTNodeKind(KindToKindId<T>::Id);
65
122
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchCase>()
Line
Count
Source
63
253
  static ASTNodeKind getFromNodeKind() {
64
253
    return ASTNodeKind(KindToKindId<T>::Id);
65
253
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionProtoType>()
Line
Count
Source
63
531
  static ASTNodeKind getFromNodeKind() {
64
531
    return ASTNodeKind(KindToKindId<T>::Id);
65
531
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionTemplateDecl>()
Line
Count
Source
63
4.42k
  static ASTNodeKind getFromNodeKind() {
64
4.42k
    return ASTNodeKind(KindToKindId<T>::Id);
65
4.42k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionType>()
Line
Count
Source
63
328
  static ASTNodeKind getFromNodeKind() {
64
328
    return ASTNodeKind(KindToKindId<T>::Id);
65
328
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GNUNullExpr>()
Line
Count
Source
63
88
  static ASTNodeKind getFromNodeKind() {
64
88
    return ASTNodeKind(KindToKindId<T>::Id);
65
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StmtExpr>()
Line
Count
Source
63
147
  static ASTNodeKind getFromNodeKind() {
64
147
    return ASTNodeKind(KindToKindId<T>::Id);
65
147
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateSpecializationType>()
Line
Count
Source
63
272
  static ASTNodeKind getFromNodeKind() {
64
272
    return ASTNodeKind(KindToKindId<T>::Id);
65
272
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::WhileStmt>()
Line
Count
Source
63
235
  static ASTNodeKind getFromNodeKind() {
64
235
    return ASTNodeKind(KindToKindId<T>::Id);
65
235
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InjectedClassNameType>()
Line
Count
Source
63
76
  static ASTNodeKind getFromNodeKind() {
64
76
    return ASTNodeKind(KindToKindId<T>::Id);
65
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelStmt>()
Line
Count
Source
63
134
  static ASTNodeKind getFromNodeKind() {
64
134
    return ASTNodeKind(KindToKindId<T>::Id);
65
134
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagType>()
Line
Count
Source
63
70
  static ASTNodeKind getFromNodeKind() {
64
70
    return ASTNodeKind(KindToKindId<T>::Id);
65
70
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmType>()
Line
Count
Source
63
883
  static ASTNodeKind getFromNodeKind() {
64
883
    return ASTNodeKind(KindToKindId<T>::Id);
65
883
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingType>()
Line
Count
Source
63
24
  static ASTNodeKind getFromNodeKind() {
64
24
    return ASTNodeKind(KindToKindId<T>::Id);
65
24
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedMemberExpr>()
Line
Count
Source
63
1.29k
  static ASTNodeKind getFromNodeKind() {
64
1.29k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.29k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstTemplateTypeParmType>()
Line
Count
Source
63
136
  static ASTNodeKind getFromNodeKind() {
64
136
    return ASTNodeKind(KindToKindId<T>::Id);
65
136
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StringLiteral>()
Line
Count
Source
63
480
  static ASTNodeKind getFromNodeKind() {
64
480
    return ASTNodeKind(KindToKindId<T>::Id);
65
480
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OpaqueValueExpr>()
Line
Count
Source
63
143
  static ASTNodeKind getFromNodeKind() {
64
143
    return ASTNodeKind(KindToKindId<T>::Id);
65
143
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImaginaryLiteral>()
Line
Count
Source
63
58
  static ASTNodeKind getFromNodeKind() {
64
58
    return ASTNodeKind(KindToKindId<T>::Id);
65
58
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitValueInitExpr>()
Line
Count
Source
63
62
  static ASTNodeKind getFromNodeKind() {
64
62
    return ASTNodeKind(KindToKindId<T>::Id);
65
62
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IncompleteArrayType>()
Line
Count
Source
63
172
  static ASTNodeKind getFromNodeKind() {
64
172
    return ASTNodeKind(KindToKindId<T>::Id);
65
172
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IndirectFieldDecl>()
Line
Count
Source
63
62
  static ASTNodeKind getFromNodeKind() {
64
62
    return ASTNodeKind(KindToKindId<T>::Id);
65
62
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenType>()
Line
Count
Source
63
241
  static ASTNodeKind getFromNodeKind() {
64
241
    return ASTNodeKind(KindToKindId<T>::Id);
65
241
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LValueReferenceType>()
Line
Count
Source
63
202
  static ASTNodeKind getFromNodeKind() {
64
202
    return ASTNodeKind(KindToKindId<T>::Id);
65
202
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelDecl>()
Line
Count
Source
63
90
  static ASTNodeKind getFromNodeKind() {
64
90
    return ASTNodeKind(KindToKindId<T>::Id);
65
90
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LinkageSpecDecl>()
Line
Count
Source
63
106
  static ASTNodeKind getFromNodeKind() {
64
106
    return ASTNodeKind(KindToKindId<T>::Id);
65
106
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MaterializeTemporaryExpr>()
Line
Count
Source
63
100
  static ASTNodeKind getFromNodeKind() {
64
100
    return ASTNodeKind(KindToKindId<T>::Id);
65
100
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberPointerType>()
Line
Count
Source
63
196
  static ASTNodeKind getFromNodeKind() {
64
196
    return ASTNodeKind(KindToKindId<T>::Id);
65
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceAliasDecl>()
Line
Count
Source
63
66
  static ASTNodeKind getFromNodeKind() {
64
66
    return ASTNodeKind(KindToKindId<T>::Id);
65
66
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NonTypeTemplateParmDecl>()
Line
Count
Source
63
96
  static ASTNodeKind getFromNodeKind() {
64
96
    return ASTNodeKind(KindToKindId<T>::Id);
65
96
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NullStmt>()
Line
Count
Source
63
214
  static ASTNodeKind getFromNodeKind() {
64
214
    return ASTNodeKind(KindToKindId<T>::Id);
65
214
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtCatchStmt>()
Line
Count
Source
63
49
  static ASTNodeKind getFromNodeKind() {
64
49
    return ASTNodeKind(KindToKindId<T>::Id);
65
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryDecl>()
Line
Count
Source
63
48
  static ASTNodeKind getFromNodeKind() {
64
48
    return ASTNodeKind(KindToKindId<T>::Id);
65
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryImplDecl>()
Line
Count
Source
63
48
  static ASTNodeKind getFromNodeKind() {
64
48
    return ASTNodeKind(KindToKindId<T>::Id);
65
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtFinallyStmt>()
Line
Count
Source
63
49
  static ASTNodeKind getFromNodeKind() {
64
49
    return ASTNodeKind(KindToKindId<T>::Id);
65
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCImplementationDecl>()
Line
Count
Source
63
48
  static ASTNodeKind getFromNodeKind() {
64
48
    return ASTNodeKind(KindToKindId<T>::Id);
65
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarDecl>()
Line
Count
Source
63
48
  static ASTNodeKind getFromNodeKind() {
64
48
    return ASTNodeKind(KindToKindId<T>::Id);
65
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCPropertyDecl>()
Line
Count
Source
63
52
  static ASTNodeKind getFromNodeKind() {
64
52
    return ASTNodeKind(KindToKindId<T>::Id);
65
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCProtocolDecl>()
Line
Count
Source
63
48
  static ASTNodeKind getFromNodeKind() {
64
48
    return ASTNodeKind(KindToKindId<T>::Id);
65
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtThrowStmt>()
Line
Count
Source
63
49
  static ASTNodeKind getFromNodeKind() {
64
49
    return ASTNodeKind(KindToKindId<T>::Id);
65
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtTryStmt>()
Line
Count
Source
63
49
  static ASTNodeKind getFromNodeKind() {
64
49
    return ASTNodeKind(KindToKindId<T>::Id);
65
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenExpr>()
Line
Count
Source
63
222
  static ASTNodeKind getFromNodeKind() {
64
222
    return ASTNodeKind(KindToKindId<T>::Id);
65
222
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenListExpr>()
Line
Count
Source
63
88
  static ASTNodeKind getFromNodeKind() {
64
88
    return ASTNodeKind(KindToKindId<T>::Id);
65
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PredefinedExpr>()
Line
Count
Source
63
208
  static ASTNodeKind getFromNodeKind() {
64
208
    return ASTNodeKind(KindToKindId<T>::Id);
65
208
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RValueReferenceType>()
Line
Count
Source
63
202
  static ASTNodeKind getFromNodeKind() {
64
202
    return ASTNodeKind(KindToKindId<T>::Id);
65
202
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StaticAssertDecl>()
Line
Count
Source
63
62
  static ASTNodeKind getFromNodeKind() {
64
62
    return ASTNodeKind(KindToKindId<T>::Id);
65
62
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstNonTypeTemplateParmExpr>()
Line
Count
Source
63
108
  static ASTNodeKind getFromNodeKind() {
64
108
    return ASTNodeKind(KindToKindId<T>::Id);
65
108
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTemplateParmDecl>()
Line
Count
Source
63
96
  static ASTNodeKind getFromNodeKind() {
64
96
    return ASTNodeKind(KindToKindId<T>::Id);
65
96
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmDecl>()
Line
Count
Source
63
1.15k
  static ASTNodeKind getFromNodeKind() {
64
1.15k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.15k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasDecl>()
Line
Count
Source
63
138
  static ASTNodeKind getFromNodeKind() {
64
138
    return ASTNodeKind(KindToKindId<T>::Id);
65
138
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasTemplateDecl>()
Line
Count
Source
63
81
  static ASTNodeKind getFromNodeKind() {
64
81
    return ASTNodeKind(KindToKindId<T>::Id);
65
81
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryTransformType>()
Line
Count
Source
63
49
  static ASTNodeKind getFromNodeKind() {
64
49
    return ASTNodeKind(KindToKindId<T>::Id);
65
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedLookupExpr>()
Line
Count
Source
63
897
  static ASTNodeKind getFromNodeKind() {
64
897
    return ASTNodeKind(KindToKindId<T>::Id);
65
897
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingTypenameDecl>()
Line
Count
Source
63
48
  static ASTNodeKind getFromNodeKind() {
64
48
    return ASTNodeKind(KindToKindId<T>::Id);
65
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingValueDecl>()
Line
Count
Source
63
51
  static ASTNodeKind getFromNodeKind() {
64
51
    return ASTNodeKind(KindToKindId<T>::Id);
65
51
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UserDefinedLiteral>()
Line
Count
Source
63
70
  static ASTNodeKind getFromNodeKind() {
64
70
    return ASTNodeKind(KindToKindId<T>::Id);
65
70
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDirectiveDecl>()
Line
Count
Source
63
109
  static ASTNodeKind getFromNodeKind() {
64
109
    return ASTNodeKind(KindToKindId<T>::Id);
65
109
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTypeidExpr>()
Line
Count
Source
63
1.13k
  static ASTNodeKind getFromNodeKind() {
64
1.13k
    return ASTNodeKind(KindToKindId<T>::Id);
65
1.13k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GenericSelectionExpr>()
Line
Count
Source
63
279
  static ASTNodeKind getFromNodeKind() {
64
279
    return ASTNodeKind(KindToKindId<T>::Id);
65
279
  }
66
67
  /// \{
68
  /// Construct an identifier for the dynamic type of the node
69
  static ASTNodeKind getFromNode(const Decl &D);
70
  static ASTNodeKind getFromNode(const Stmt &S);
71
  static ASTNodeKind getFromNode(const Type &T);
72
  static ASTNodeKind getFromNode(const OMPClause &C);
73
  /// \}
74
75
  /// Returns \c true if \c this and \c Other represent the same kind.
76
1.78M
  bool isSame(ASTNodeKind Other) const {
77
1.78M
    return KindId != NKI_None && 
KindId == Other.KindId1.78M
;
78
1.78M
  }
79
80
  /// Returns \c true only for the default \c ASTNodeKind()
81
644
  bool isNone() const { return KindId == NKI_None; }
82
83
  /// Returns \c true if \c this is a base kind of (or same as) \c Other.
84
  /// \param Distance If non-null, used to return the distance between \c this
85
  /// and \c Other in the class hierarchy.
86
  bool isBaseOf(ASTNodeKind Other, unsigned *Distance = nullptr) const;
87
88
  /// String representation of the kind.
89
  StringRef asStringRef() const;
90
91
  /// Strict weak ordering for ASTNodeKind.
92
504k
  bool operator<(const ASTNodeKind &Other) const {
93
504k
    return KindId < Other.KindId;
94
504k
  }
95
96
  /// Return the most derived type between \p Kind1 and \p Kind2.
97
  ///
98
  /// Return ASTNodeKind() if they are not related.
99
  static ASTNodeKind getMostDerivedType(ASTNodeKind Kind1, ASTNodeKind Kind2);
100
101
  /// Return the most derived common ancestor between Kind1 and Kind2.
102
  ///
103
  /// Return ASTNodeKind() if they are not related.
104
  static ASTNodeKind getMostDerivedCommonAncestor(ASTNodeKind Kind1,
105
                                                  ASTNodeKind Kind2);
106
107
  /// Hooks for using ASTNodeKind as a key in a DenseMap.
108
  struct DenseMapInfo {
109
    // ASTNodeKind() is a good empty key because it is represented as a 0.
110
1.12M
    static inline ASTNodeKind getEmptyKey() { return ASTNodeKind(); }
111
    // NKI_NumberOfKinds is not a valid value, so it is good for a
112
    // tombstone key.
113
893k
    static inline ASTNodeKind getTombstoneKey() {
114
893k
      return ASTNodeKind(NKI_NumberOfKinds);
115
893k
    }
116
450k
    static unsigned getHashValue(const ASTNodeKind &Val) { return Val.KindId; }
117
5.42M
    static bool isEqual(const ASTNodeKind &LHS, const ASTNodeKind &RHS) {
118
5.42M
      return LHS.KindId == RHS.KindId;
119
5.42M
    }
120
  };
121
122
  /// Check if the given ASTNodeKind identifies a type that offers pointer
123
  /// identity. This is useful for the fast path in DynTypedNode.
124
394k
  bool hasPointerIdentity() const {
125
394k
    return KindId > NKI_LastKindWithoutPointerIdentity;
126
394k
  }
127
128
private:
129
  /// Kind ids.
130
  ///
131
  /// Includes all possible base and derived kinds.
132
  enum NodeKindId {
133
    NKI_None,
134
    NKI_TemplateArgument,
135
    NKI_TemplateArgumentLoc,
136
    NKI_TemplateName,
137
    NKI_NestedNameSpecifierLoc,
138
    NKI_QualType,
139
    NKI_TypeLoc,
140
    NKI_LastKindWithoutPointerIdentity = NKI_TypeLoc,
141
    NKI_CXXBaseSpecifier,
142
    NKI_CXXCtorInitializer,
143
    NKI_NestedNameSpecifier,
144
    NKI_Decl,
145
#define DECL(DERIVED, BASE) NKI_##DERIVED##Decl,
146
#include "clang/AST/DeclNodes.inc"
147
    NKI_Stmt,
148
#define STMT(DERIVED, BASE) NKI_##DERIVED,
149
#include "clang/AST/StmtNodes.inc"
150
    NKI_Type,
151
#define TYPE(DERIVED, BASE) NKI_##DERIVED##Type,
152
#include "clang/AST/TypeNodes.inc"
153
    NKI_OMPClause,
154
#define OMP_CLAUSE_CLASS(Enum, Str, Class) NKI_##Class,
155
#include "llvm/Frontend/OpenMP/OMPKinds.def"
156
    NKI_NumberOfKinds
157
  };
158
159
  /// Use getFromNodeKind<T>() to construct the kind.
160
6.06M
  ASTNodeKind(NodeKindId KindId) : KindId(KindId) {}
161
162
  /// Returns \c true if \c Base is a base kind of (or same as) \c
163
  ///   Derived.
164
  /// \param Distance If non-null, used to return the distance between \c Base
165
  /// and \c Derived in the class hierarchy.
166
  static bool isBaseOf(NodeKindId Base, NodeKindId Derived, unsigned *Distance);
167
168
  /// Helper meta-function to convert a kind T to its enum value.
169
  ///
170
  /// This struct is specialized below for all known kinds.
171
  template <class T> struct KindToKindId {
172
    static const NodeKindId Id = NKI_None;
173
  };
174
  template <class T>
175
  struct KindToKindId<const T> : KindToKindId<T> {};
176
177
  /// Per kind info.
178
  struct KindInfo {
179
    /// The id of the parent kind, or None if it has no parent.
180
    NodeKindId ParentId;
181
    /// Name of the kind.
182
    const char *Name;
183
  };
184
  static const KindInfo AllKindInfo[NKI_NumberOfKinds];
185
186
  NodeKindId KindId;
187
};
188
189
#define KIND_TO_KIND_ID(Class)                                                 \
190
  template <> struct ASTNodeKind::KindToKindId<Class> {                        \
191
    static const NodeKindId Id = NKI_##Class;                                  \
192
  };
193
KIND_TO_KIND_ID(CXXCtorInitializer)
194
KIND_TO_KIND_ID(TemplateArgument)
195
KIND_TO_KIND_ID(TemplateArgumentLoc)
196
KIND_TO_KIND_ID(TemplateName)
197
KIND_TO_KIND_ID(NestedNameSpecifier)
198
KIND_TO_KIND_ID(NestedNameSpecifierLoc)
199
KIND_TO_KIND_ID(QualType)
200
KIND_TO_KIND_ID(TypeLoc)
201
KIND_TO_KIND_ID(Decl)
202
KIND_TO_KIND_ID(Stmt)
203
KIND_TO_KIND_ID(Type)
204
KIND_TO_KIND_ID(OMPClause)
205
KIND_TO_KIND_ID(CXXBaseSpecifier)
206
#define DECL(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Decl)
207
#include "clang/AST/DeclNodes.inc"
208
#define STMT(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED)
209
#include "clang/AST/StmtNodes.inc"
210
#define TYPE(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Type)
211
#include "clang/AST/TypeNodes.inc"
212
#define OMP_CLAUSE_CLASS(Enum, Str, Class) KIND_TO_KIND_ID(Class)
213
#include "llvm/Frontend/OpenMP/OMPKinds.def"
214
#undef KIND_TO_KIND_ID
215
216
1.42k
inline raw_ostream &operator<<(raw_ostream &OS, ASTNodeKind K) {
217
1.42k
  OS << K.asStringRef();
218
1.42k
  return OS;
219
1.42k
}
220
221
/// A dynamically typed AST node container.
222
///
223
/// Stores an AST node in a type safe way. This allows writing code that
224
/// works with different kinds of AST nodes, despite the fact that they don't
225
/// have a common base class.
226
///
227
/// Use \c create(Node) to create a \c DynTypedNode from an AST node,
228
/// and \c get<T>() to retrieve the node as type T if the types match.
229
///
230
/// See \c ASTNodeKind for which node base types are currently supported;
231
/// You can create DynTypedNodes for all nodes in the inheritance hierarchy of
232
/// the supported base types.
233
class DynTypedNode {
234
public:
235
  /// Creates a \c DynTypedNode from \c Node.
236
  template <typename T>
237
893k
  static DynTypedNode create(const T &Node) {
238
893k
    return BaseConverter<T>::create(Node);
239
893k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Decl>(clang::Decl const&)
Line
Count
Source
237
305k
  static DynTypedNode create(const T &Node) {
238
305k
    return BaseConverter<T>::create(Node);
239
305k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Stmt>(clang::Stmt const&)
Line
Count
Source
237
172k
  static DynTypedNode create(const T &Node) {
238
172k
    return BaseConverter<T>::create(Node);
239
172k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Expr>(clang::Expr const&)
Line
Count
Source
237
231k
  static DynTypedNode create(const T &Node) {
238
231k
    return BaseConverter<T>::create(Node);
239
231k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TypeLoc>(clang::TypeLoc const&)
Line
Count
Source
237
58.8k
  static DynTypedNode create(const T &Node) {
238
58.8k
    return BaseConverter<T>::create(Node);
239
58.8k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifierLoc>(clang::NestedNameSpecifierLoc const&)
Line
Count
Source
237
16.7k
  static DynTypedNode create(const T &Node) {
238
16.7k
    return BaseConverter<T>::create(Node);
239
16.7k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TranslationUnitDecl>(clang::TranslationUnitDecl const&)
Line
Count
Source
237
401
  static DynTypedNode create(const T &Node) {
238
401
    return BaseConverter<T>::create(Node);
239
401
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::EnumConstantDecl>(clang::EnumConstantDecl const&)
Line
Count
Source
237
15
  static DynTypedNode create(const T &Node) {
238
15
    return BaseConverter<T>::create(Node);
239
15
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclRefExpr>(clang::DeclRefExpr const&)
Line
Count
Source
237
45
  static DynTypedNode create(const T &Node) {
238
45
    return BaseConverter<T>::create(Node);
239
45
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CompoundStmt>(clang::CompoundStmt const&)
Line
Count
Source
237
444
  static DynTypedNode create(const T &Node) {
238
444
    return BaseConverter<T>::create(Node);
239
444
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::UnaryOperator>(clang::UnaryOperator const&)
Line
Count
Source
237
27
  static DynTypedNode create(const T &Node) {
238
27
    return BaseConverter<T>::create(Node);
239
27
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ExplicitCastExpr>(clang::ExplicitCastExpr const&)
Line
Count
Source
237
110
  static DynTypedNode create(const T &Node) {
238
110
    return BaseConverter<T>::create(Node);
239
110
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCAutoreleasePoolStmt>(clang::ObjCAutoreleasePoolStmt const&)
Line
Count
Source
237
25
  static DynTypedNode create(const T &Node) {
238
25
    return BaseConverter<T>::create(Node);
239
25
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMethodDecl>(clang::ObjCMethodDecl const&)
Line
Count
Source
237
18
  static DynTypedNode create(const T &Node) {
238
18
    return BaseConverter<T>::create(Node);
239
18
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::BlockDecl>(clang::BlockDecl const&)
Line
Count
Source
237
1
  static DynTypedNode create(const T &Node) {
238
1
    return BaseConverter<T>::create(Node);
239
1
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMessageExpr>(clang::ObjCMessageExpr const&)
Line
Count
Source
237
35
  static DynTypedNode create(const T &Node) {
238
35
    return BaseConverter<T>::create(Node);
239
35
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::InitListExpr>(clang::InitListExpr const&)
Line
Count
Source
237
156
  static DynTypedNode create(const T &Node) {
238
156
    return BaseConverter<T>::create(Node);
239
156
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCInterfaceDecl>(clang::ObjCInterfaceDecl const&)
Line
Count
Source
237
2.35k
  static DynTypedNode create(const T &Node) {
238
2.35k
    return BaseConverter<T>::create(Node);
239
2.35k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ClassTemplateDecl>(clang::ClassTemplateDecl const&)
Line
Count
Source
237
138
  static DynTypedNode create(const T &Node) {
238
138
    return BaseConverter<T>::create(Node);
239
138
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::QualType>(clang::QualType const&)
Line
Count
Source
237
47.1k
  static DynTypedNode create(const T &Node) {
238
47.1k
    return BaseConverter<T>::create(Node);
239
47.1k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateName>(clang::TemplateName const&)
Line
Count
Source
237
2
  static DynTypedNode create(const T &Node) {
238
2
    return BaseConverter<T>::create(Node);
239
2
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::VarDecl>(clang::VarDecl const&)
Line
Count
Source
237
885
  static DynTypedNode create(const T &Node) {
238
885
    return BaseConverter<T>::create(Node);
239
885
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXBaseSpecifier>(clang::CXXBaseSpecifier const&)
Line
Count
Source
237
520
  static DynTypedNode create(const T &Node) {
238
520
    return BaseConverter<T>::create(Node);
239
520
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NamedDecl>(clang::NamedDecl const&)
Line
Count
Source
237
5.77k
  static DynTypedNode create(const T &Node) {
238
5.77k
    return BaseConverter<T>::create(Node);
239
5.77k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Type>(clang::Type const&)
Line
Count
Source
237
38.6k
  static DynTypedNode create(const T &Node) {
238
38.6k
    return BaseConverter<T>::create(Node);
239
38.6k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMemberCallExpr>(clang::CXXMemberCallExpr const&)
Line
Count
Source
237
188
  static DynTypedNode create(const T &Node) {
238
188
    return BaseConverter<T>::create(Node);
239
188
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::UsingShadowDecl>(clang::UsingShadowDecl const&)
Line
Count
Source
237
30
  static DynTypedNode create(const T &Node) {
238
30
    return BaseConverter<T>::create(Node);
239
30
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::FieldDecl>(clang::FieldDecl const&)
Line
Count
Source
237
164
  static DynTypedNode create(const T &Node) {
238
164
    return BaseConverter<T>::create(Node);
239
164
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclStmt>(clang::DeclStmt const&)
Line
Count
Source
237
129
  static DynTypedNode create(const T &Node) {
238
129
    return BaseConverter<T>::create(Node);
239
129
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXRecordDecl>(clang::CXXRecordDecl const&)
Line
Count
Source
237
6.83k
  static DynTypedNode create(const T &Node) {
238
6.83k
    return BaseConverter<T>::create(Node);
239
6.83k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMethodDecl>(clang::CXXMethodDecl const&)
Line
Count
Source
237
560
  static DynTypedNode create(const T &Node) {
238
560
    return BaseConverter<T>::create(Node);
239
560
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ValueDecl>(clang::ValueDecl const&)
Line
Count
Source
237
73
  static DynTypedNode create(const T &Node) {
238
73
    return BaseConverter<T>::create(Node);
239
73
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifier>(clang::NestedNameSpecifier const&)
Line
Count
Source
237
861
  static DynTypedNode create(const T &Node) {
238
861
    return BaseConverter<T>::create(Node);
239
861
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NamespaceDecl>(clang::NamespaceDecl const&)
Line
Count
Source
237
73
  static DynTypedNode create(const T &Node) {
238
73
    return BaseConverter<T>::create(Node);
239
73
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::SwitchCase>(clang::SwitchCase const&)
Line
Count
Source
237
23
  static DynTypedNode create(const T &Node) {
238
23
    return BaseConverter<T>::create(Node);
239
23
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXCtorInitializer>(clang::CXXCtorInitializer const&)
Line
Count
Source
237
211
  static DynTypedNode create(const T &Node) {
238
211
    return BaseConverter<T>::create(Node);
239
211
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::FunctionDecl>(clang::FunctionDecl const&)
Line
Count
Source
237
964
  static DynTypedNode create(const T &Node) {
238
964
    return BaseConverter<T>::create(Node);
239
964
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::OMPClause>(clang::OMPClause const&)
Line
Count
Source
237
352
  static DynTypedNode create(const T &Node) {
238
352
    return BaseConverter<T>::create(Node);
239
352
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ParmVarDecl>(clang::ParmVarDecl const&)
Line
Count
Source
237
597
  static DynTypedNode create(const T &Node) {
238
597
    return BaseConverter<T>::create(Node);
239
597
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgumentLoc>(clang::TemplateArgumentLoc const&)
Line
Count
Source
237
376
  static DynTypedNode create(const T &Node) {
238
376
    return BaseConverter<T>::create(Node);
239
376
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgument>(clang::TemplateArgument const&)
Line
Count
Source
237
181
  static DynTypedNode create(const T &Node) {
238
181
    return BaseConverter<T>::create(Node);
239
181
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CastExpr>(clang::CastExpr const&)
Line
Count
Source
237
54
  static DynTypedNode create(const T &Node) {
238
54
    return BaseConverter<T>::create(Node);
239
54
  }
240
241
  /// Retrieve the stored node as type \c T.
242
  ///
243
  /// Returns NULL if the stored node does not have a type that is
244
  /// convertible to \c T.
245
  ///
246
  /// For types that have identity via their pointer in the AST
247
  /// (like \c Stmt, \c Decl, \c Type and \c NestedNameSpecifier) the returned
248
  /// pointer points to the referenced AST node.
249
  /// For other types (like \c QualType) the value is stored directly
250
  /// in the \c DynTypedNode, and the returned pointer points at
251
  /// the storage inside DynTypedNode. For those nodes, do not
252
  /// use the pointer outside the scope of the DynTypedNode.
253
  template <typename T>
254
727k
  const T *get() const {
255
727k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
727k
  }
clang::Stmt const* clang::DynTypedNode::get<clang::Stmt>() const
Line
Count
Source
254
45.7k
  const T *get() const {
255
45.7k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
45.7k
  }
clang::TemplateArgument const* clang::DynTypedNode::get<clang::TemplateArgument>() const
Line
Count
Source
254
3
  const T *get() const {
255
3
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
3
  }
clang::TemplateArgumentLoc const* clang::DynTypedNode::get<clang::TemplateArgumentLoc>() const
Line
Count
Source
254
20
  const T *get() const {
255
20
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
20
  }
clang::TemplateName const* clang::DynTypedNode::get<clang::TemplateName>() const
Line
Count
Source
254
2
  const T *get() const {
255
2
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
2
  }
clang::NestedNameSpecifier const* clang::DynTypedNode::get<clang::NestedNameSpecifier>() const
Line
Count
Source
254
329
  const T *get() const {
255
329
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
329
  }
clang::NestedNameSpecifierLoc const* clang::DynTypedNode::get<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
254
5.56k
  const T *get() const {
255
5.56k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
5.56k
  }
clang::QualType const* clang::DynTypedNode::get<clang::QualType>() const
Line
Count
Source
254
252
  const T *get() const {
255
252
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
252
  }
clang::TypeLoc const* clang::DynTypedNode::get<clang::TypeLoc>() const
Line
Count
Source
254
5.47k
  const T *get() const {
255
5.47k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
5.47k
  }
clang::Type const* clang::DynTypedNode::get<clang::Type>() const
Line
Count
Source
254
56
  const T *get() const {
255
56
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
56
  }
clang::CXXCtorInitializer const* clang::DynTypedNode::get<clang::CXXCtorInitializer>() const
Line
Count
Source
254
304
  const T *get() const {
255
304
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
304
  }
clang::OMPClause const* clang::DynTypedNode::get<clang::OMPClause>() const
Line
Count
Source
254
1
  const T *get() const {
255
1
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
1
  }
clang::Expr const* clang::DynTypedNode::get<clang::Expr>() const
Line
Count
Source
254
573k
  const T *get() const {
255
573k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
573k
  }
clang::Decl const* clang::DynTypedNode::get<clang::Decl>() const
Line
Count
Source
254
88.2k
  const T *get() const {
255
88.2k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
88.2k
  }
clang::DeclStmt const* clang::DynTypedNode::get<clang::DeclStmt>() const
Line
Count
Source
254
276
  const T *get() const {
255
276
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
276
  }
clang::CompoundStmt const* clang::DynTypedNode::get<clang::CompoundStmt>() const
Line
Count
Source
254
66
  const T *get() const {
255
66
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
66
  }
clang::CallExpr const* clang::DynTypedNode::get<clang::CallExpr>() const
Line
Count
Source
254
127
  const T *get() const {
255
127
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
127
  }
clang::ParmVarDecl const* clang::DynTypedNode::get<clang::ParmVarDecl>() const
Line
Count
Source
254
88
  const T *get() const {
255
88
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
88
  }
clang::ObjCMethodDecl const* clang::DynTypedNode::get<clang::ObjCMethodDecl>() const
Line
Count
Source
254
17
  const T *get() const {
255
17
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
17
  }
clang::ObjCAutoreleasePoolStmt const* clang::DynTypedNode::get<clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
254
17
  const T *get() const {
255
17
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
17
  }
clang::CastExpr const* clang::DynTypedNode::get<clang::CastExpr>() const
Line
Count
Source
254
1
  const T *get() const {
255
1
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
1
  }
clang::ObjCMessageExpr const* clang::DynTypedNode::get<clang::ObjCMessageExpr>() const
Line
Count
Source
254
18
  const T *get() const {
255
18
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
18
  }
clang::MemberExpr const* clang::DynTypedNode::get<clang::MemberExpr>() const
Line
Count
Source
254
27
  const T *get() const {
255
27
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
27
  }
clang::ObjCIvarRefExpr const* clang::DynTypedNode::get<clang::ObjCIvarRefExpr>() const
Line
Count
Source
254
2
  const T *get() const {
255
2
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
2
  }
clang::IntegerLiteral const* clang::DynTypedNode::get<clang::IntegerLiteral>() const
Line
Count
Source
254
245
  const T *get() const {
255
245
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
245
  }
clang::BinaryOperator const* clang::DynTypedNode::get<clang::BinaryOperator>() const
Line
Count
Source
254
114
  const T *get() const {
255
114
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
114
  }
clang::VarDecl const* clang::DynTypedNode::get<clang::VarDecl>() const
Line
Count
Source
254
1.45k
  const T *get() const {
255
1.45k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
1.45k
  }
clang::FunctionDecl const* clang::DynTypedNode::get<clang::FunctionDecl>() const
Line
Count
Source
254
2.34k
  const T *get() const {
255
2.34k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
2.34k
  }
clang::LambdaExpr const* clang::DynTypedNode::get<clang::LambdaExpr>() const
Line
Count
Source
254
360
  const T *get() const {
255
360
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
360
  }
clang::TranslationUnitDecl const* clang::DynTypedNode::get<clang::TranslationUnitDecl>() const
Line
Count
Source
254
764
  const T *get() const {
255
764
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
764
  }
clang::NamedDecl const* clang::DynTypedNode::get<clang::NamedDecl>() const
Line
Count
Source
254
1.10k
  const T *get() const {
255
1.10k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
1.10k
  }
clang::CXXThisExpr const* clang::DynTypedNode::get<clang::CXXThisExpr>() const
Line
Count
Source
254
146
  const T *get() const {
255
146
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
146
  }
clang::DeclRefExpr const* clang::DynTypedNode::get<clang::DeclRefExpr>() const
Line
Count
Source
254
77
  const T *get() const {
255
77
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
77
  }
clang::InitListExpr const* clang::DynTypedNode::get<clang::InitListExpr>() const
Line
Count
Source
254
5
  const T *get() const {
255
5
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
5
  }
clang::IfStmt const* clang::DynTypedNode::get<clang::IfStmt>() const
Line
Count
Source
254
152
  const T *get() const {
255
152
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
256
152
  }
257
258
  /// Retrieve the stored node as type \c T.
259
  ///
260
  /// Similar to \c get(), but asserts that the type is what we are expecting.
261
  template <typename T>
262
269k
  const T &getUnchecked() const {
263
269k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
269k
  }
clang::QualType const& clang::DynTypedNode::getUnchecked<clang::QualType>() const
Line
Count
Source
262
32.8k
  const T &getUnchecked() const {
263
32.8k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
32.8k
  }
clang::TypeLoc const& clang::DynTypedNode::getUnchecked<clang::TypeLoc>() const
Line
Count
Source
262
67.8k
  const T &getUnchecked() const {
263
67.8k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
67.8k
  }
clang::NestedNameSpecifierLoc const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
262
1.40k
  const T &getUnchecked() const {
263
1.40k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
1.40k
  }
clang::IntegerLiteral const& clang::DynTypedNode::getUnchecked<clang::IntegerLiteral>() const
Line
Count
Source
262
780
  const T &getUnchecked() const {
263
780
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
780
  }
clang::TypedefType const& clang::DynTypedNode::getUnchecked<clang::TypedefType>() const
Line
Count
Source
262
305
  const T &getUnchecked() const {
263
305
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
305
  }
clang::RecordType const& clang::DynTypedNode::getUnchecked<clang::RecordType>() const
Line
Count
Source
262
255
  const T &getUnchecked() const {
263
255
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
255
  }
clang::ObjCObjectPointerType const& clang::DynTypedNode::getUnchecked<clang::ObjCObjectPointerType>() const
Line
Count
Source
262
120
  const T &getUnchecked() const {
263
120
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
120
  }
clang::ConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::ConditionalOperator>() const
Line
Count
Source
262
79
  const T &getUnchecked() const {
263
79
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
79
  }
clang::ObjCAutoreleasePoolStmt const& clang::DynTypedNode::getUnchecked<clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
262
25
  const T &getUnchecked() const {
263
25
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
25
  }
clang::BlockDecl const& clang::DynTypedNode::getUnchecked<clang::BlockDecl>() const
Line
Count
Source
262
29
  const T &getUnchecked() const {
263
29
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
29
  }
clang::PointerType const& clang::DynTypedNode::getUnchecked<clang::PointerType>() const
Line
Count
Source
262
698
  const T &getUnchecked() const {
263
698
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
698
  }
clang::CStyleCastExpr const& clang::DynTypedNode::getUnchecked<clang::CStyleCastExpr>() const
Line
Count
Source
262
40
  const T &getUnchecked() const {
263
40
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
40
  }
clang::ObjCIvarRefExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCIvarRefExpr>() const
Line
Count
Source
262
58
  const T &getUnchecked() const {
263
58
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
58
  }
clang::BinaryOperator const& clang::DynTypedNode::getUnchecked<clang::BinaryOperator>() const
Line
Count
Source
262
3.34k
  const T &getUnchecked() const {
263
3.34k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
3.34k
  }
clang::ObjCInterfaceDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCInterfaceDecl>() const
Line
Count
Source
262
4.31k
  const T &getUnchecked() const {
263
4.31k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
4.31k
  }
clang::Stmt const& clang::DynTypedNode::getUnchecked<clang::Stmt>() const
Line
Count
Source
262
9.74k
  const T &getUnchecked() const {
263
9.74k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
9.74k
  }
clang::FieldDecl const& clang::DynTypedNode::getUnchecked<clang::FieldDecl>() const
Line
Count
Source
262
808
  const T &getUnchecked() const {
263
808
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
808
  }
clang::FunctionDecl const& clang::DynTypedNode::getUnchecked<clang::FunctionDecl>() const
Line
Count
Source
262
4.69k
  const T &getUnchecked() const {
263
4.69k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
4.69k
  }
clang::ClassTemplateSpecializationDecl const& clang::DynTypedNode::getUnchecked<clang::ClassTemplateSpecializationDecl>() const
Line
Count
Source
262
258
  const T &getUnchecked() const {
263
258
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
258
  }
clang::Decl const& clang::DynTypedNode::getUnchecked<clang::Decl>() const
Line
Count
Source
262
8.72k
  const T &getUnchecked() const {
263
8.72k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
8.72k
  }
clang::Expr const& clang::DynTypedNode::getUnchecked<clang::Expr>() const
Line
Count
Source
262
8.61k
  const T &getUnchecked() const {
263
8.61k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
8.61k
  }
clang::TemplateArgument const& clang::DynTypedNode::getUnchecked<clang::TemplateArgument>() const
Line
Count
Source
262
154
  const T &getUnchecked() const {
263
154
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
154
  }
clang::CallExpr const& clang::DynTypedNode::getUnchecked<clang::CallExpr>() const
Line
Count
Source
262
5.88k
  const T &getUnchecked() const {
263
5.88k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
5.88k
  }
clang::InitListExpr const& clang::DynTypedNode::getUnchecked<clang::InitListExpr>() const
Line
Count
Source
262
294
  const T &getUnchecked() const {
263
294
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
294
  }
clang::ForStmt const& clang::DynTypedNode::getUnchecked<clang::ForStmt>() const
Line
Count
Source
262
631
  const T &getUnchecked() const {
263
631
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
631
  }
clang::CXXForRangeStmt const& clang::DynTypedNode::getUnchecked<clang::CXXForRangeStmt>() const
Line
Count
Source
262
50
  const T &getUnchecked() const {
263
50
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
50
  }
clang::DesignatedInitExpr const& clang::DynTypedNode::getUnchecked<clang::DesignatedInitExpr>() const
Line
Count
Source
262
160
  const T &getUnchecked() const {
263
160
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
160
  }
clang::UnaryExprOrTypeTraitExpr const& clang::DynTypedNode::getUnchecked<clang::UnaryExprOrTypeTraitExpr>() const
Line
Count
Source
262
291
  const T &getUnchecked() const {
263
291
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
291
  }
clang::NamedDecl const& clang::DynTypedNode::getUnchecked<clang::NamedDecl>() const
Line
Count
Source
262
72.0k
  const T &getUnchecked() const {
263
72.0k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
72.0k
  }
clang::CXXRecordDecl const& clang::DynTypedNode::getUnchecked<clang::CXXRecordDecl>() const
Line
Count
Source
262
16.0k
  const T &getUnchecked() const {
263
16.0k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
16.0k
  }
clang::CXXMemberCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXMemberCallExpr>() const
Line
Count
Source
262
750
  const T &getUnchecked() const {
263
750
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
750
  }
clang::ObjCMessageExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCMessageExpr>() const
Line
Count
Source
262
262
  const T &getUnchecked() const {
263
262
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
262
  }
clang::ObjCMethodDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCMethodDecl>() const
Line
Count
Source
262
111
  const T &getUnchecked() const {
263
111
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
111
  }
clang::DeclaratorDecl const& clang::DynTypedNode::getUnchecked<clang::DeclaratorDecl>() const
Line
Count
Source
262
30
  const T &getUnchecked() const {
263
30
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
30
  }
clang::Type const& clang::DynTypedNode::getUnchecked<clang::Type>() const
Line
Count
Source
262
1.48k
  const T &getUnchecked() const {
263
1.48k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
1.48k
  }
clang::DeclRefExpr const& clang::DynTypedNode::getUnchecked<clang::DeclRefExpr>() const
Line
Count
Source
262
2.15k
  const T &getUnchecked() const {
263
2.15k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
2.15k
  }
clang::OverloadExpr const& clang::DynTypedNode::getUnchecked<clang::OverloadExpr>() const
Line
Count
Source
262
14
  const T &getUnchecked() const {
263
14
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
14
  }
clang::DeclStmt const& clang::DynTypedNode::getUnchecked<clang::DeclStmt>() const
Line
Count
Source
262
560
  const T &getUnchecked() const {
263
560
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
560
  }
clang::VarDecl const& clang::DynTypedNode::getUnchecked<clang::VarDecl>() const
Line
Count
Source
262
6.27k
  const T &getUnchecked() const {
263
6.27k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
6.27k
  }
clang::CXXCatchStmt const& clang::DynTypedNode::getUnchecked<clang::CXXCatchStmt>() const
Line
Count
Source
262
100
  const T &getUnchecked() const {
263
100
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
100
  }
clang::CXXConstructorDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConstructorDecl>() const
Line
Count
Source
262
980
  const T &getUnchecked() const {
263
980
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
980
  }
clang::CXXCtorInitializer const& clang::DynTypedNode::getUnchecked<clang::CXXCtorInitializer>() const
Line
Count
Source
262
106
  const T &getUnchecked() const {
263
106
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
106
  }
clang::LambdaExpr const& clang::DynTypedNode::getUnchecked<clang::LambdaExpr>() const
Line
Count
Source
262
51
  const T &getUnchecked() const {
263
51
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
51
  }
clang::CXXConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXConstructExpr>() const
Line
Count
Source
262
655
  const T &getUnchecked() const {
263
655
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
655
  }
clang::ParmVarDecl const& clang::DynTypedNode::getUnchecked<clang::ParmVarDecl>() const
Line
Count
Source
262
1.52k
  const T &getUnchecked() const {
263
1.52k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
1.52k
  }
clang::IfStmt const& clang::DynTypedNode::getUnchecked<clang::IfStmt>() const
Line
Count
Source
262
371
  const T &getUnchecked() const {
263
371
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
371
  }
clang::ArraySubscriptExpr const& clang::DynTypedNode::getUnchecked<clang::ArraySubscriptExpr>() const
Line
Count
Source
262
19
  const T &getUnchecked() const {
263
19
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
19
  }
clang::CompoundStmt const& clang::DynTypedNode::getUnchecked<clang::CompoundStmt>() const
Line
Count
Source
262
1.04k
  const T &getUnchecked() const {
263
1.04k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
1.04k
  }
clang::UnaryOperator const& clang::DynTypedNode::getUnchecked<clang::UnaryOperator>() const
Line
Count
Source
262
2.86k
  const T &getUnchecked() const {
263
2.86k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
2.86k
  }
clang::CastExpr const& clang::DynTypedNode::getUnchecked<clang::CastExpr>() const
Line
Count
Source
262
683
  const T &getUnchecked() const {
263
683
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
683
  }
clang::ExplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ExplicitCastExpr>() const
Line
Count
Source
262
351
  const T &getUnchecked() const {
263
351
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
351
  }
clang::ImplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ImplicitCastExpr>() const
Line
Count
Source
262
212
  const T &getUnchecked() const {
263
212
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
212
  }
clang::TagDecl const& clang::DynTypedNode::getUnchecked<clang::TagDecl>() const
Line
Count
Source
262
270
  const T &getUnchecked() const {
263
270
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
270
  }
clang::AbstractConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::AbstractConditionalOperator>() const
Line
Count
Source
262
227
  const T &getUnchecked() const {
263
227
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
227
  }
clang::CXXMethodDecl const& clang::DynTypedNode::getUnchecked<clang::CXXMethodDecl>() const
Line
Count
Source
262
2.93k
  const T &getUnchecked() const {
263
2.93k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
2.93k
  }
clang::MemberExpr const& clang::DynTypedNode::getUnchecked<clang::MemberExpr>() const
Line
Count
Source
262
463
  const T &getUnchecked() const {
263
463
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
463
  }
clang::UsingDecl const& clang::DynTypedNode::getUnchecked<clang::UsingDecl>() const
Line
Count
Source
262
26
  const T &getUnchecked() const {
263
26
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
26
  }
clang::UsingShadowDecl const& clang::DynTypedNode::getUnchecked<clang::UsingShadowDecl>() const
Line
Count
Source
262
8
  const T &getUnchecked() const {
263
8
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
8
  }
clang::VariableArrayType const& clang::DynTypedNode::getUnchecked<clang::VariableArrayType>() const
Line
Count
Source
262
28
  const T &getUnchecked() const {
263
28
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
28
  }
clang::ElaboratedType const& clang::DynTypedNode::getUnchecked<clang::ElaboratedType>() const
Line
Count
Source
262
12
  const T &getUnchecked() const {
263
12
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
12
  }
clang::DecayedType const& clang::DynTypedNode::getUnchecked<clang::DecayedType>() const
Line
Count
Source
262
28
  const T &getUnchecked() const {
263
28
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
28
  }
clang::NestedNameSpecifier const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifier>() const
Line
Count
Source
262
292
  const T &getUnchecked() const {
263
292
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
292
  }
clang::SwitchStmt const& clang::DynTypedNode::getUnchecked<clang::SwitchStmt>() const
Line
Count
Source
262
63
  const T &getUnchecked() const {
263
63
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
63
  }
clang::NamespaceDecl const& clang::DynTypedNode::getUnchecked<clang::NamespaceDecl>() const
Line
Count
Source
262
69
  const T &getUnchecked() const {
263
69
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
69
  }
clang::CaseStmt const& clang::DynTypedNode::getUnchecked<clang::CaseStmt>() const
Line
Count
Source
262
10
  const T &getUnchecked() const {
263
10
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
10
  }
clang::ReturnStmt const& clang::DynTypedNode::getUnchecked<clang::ReturnStmt>() const
Line
Count
Source
262
63
  const T &getUnchecked() const {
263
63
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
63
  }
clang::CXXNewExpr const& clang::DynTypedNode::getUnchecked<clang::CXXNewExpr>() const
Line
Count
Source
262
56
  const T &getUnchecked() const {
263
56
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
56
  }
clang::EnumDecl const& clang::DynTypedNode::getUnchecked<clang::EnumDecl>() const
Line
Count
Source
262
53
  const T &getUnchecked() const {
263
53
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
53
  }
clang::OMPExecutableDirective const& clang::DynTypedNode::getUnchecked<clang::OMPExecutableDirective>() const
Line
Count
Source
262
804
  const T &getUnchecked() const {
263
804
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
804
  }
clang::OMPDefaultClause const& clang::DynTypedNode::getUnchecked<clang::OMPDefaultClause>() const
Line
Count
Source
262
174
  const T &getUnchecked() const {
263
174
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
174
  }
clang::FriendDecl const& clang::DynTypedNode::getUnchecked<clang::FriendDecl>() const
Line
Count
Source
262
58
  const T &getUnchecked() const {
263
58
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
58
  }
clang::TypedefNameDecl const& clang::DynTypedNode::getUnchecked<clang::TypedefNameDecl>() const
Line
Count
Source
262
26
  const T &getUnchecked() const {
263
26
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
26
  }
clang::ValueDecl const& clang::DynTypedNode::getUnchecked<clang::ValueDecl>() const
Line
Count
Source
262
102
  const T &getUnchecked() const {
263
102
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
102
  }
clang::CXXBaseSpecifier const& clang::DynTypedNode::getUnchecked<clang::CXXBaseSpecifier>() const
Line
Count
Source
262
520
  const T &getUnchecked() const {
263
520
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
520
  }
clang::CharacterLiteral const& clang::DynTypedNode::getUnchecked<clang::CharacterLiteral>() const
Line
Count
Source
262
8
  const T &getUnchecked() const {
263
8
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
8
  }
clang::CXXBoolLiteralExpr const& clang::DynTypedNode::getUnchecked<clang::CXXBoolLiteralExpr>() const
Line
Count
Source
262
282
  const T &getUnchecked() const {
263
282
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
282
  }
clang::FloatingLiteral const& clang::DynTypedNode::getUnchecked<clang::FloatingLiteral>() const
Line
Count
Source
262
336
  const T &getUnchecked() const {
263
336
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
336
  }
clang::CXXUnresolvedConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXUnresolvedConstructExpr>() const
Line
Count
Source
262
7
  const T &getUnchecked() const {
263
7
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
7
  }
clang::CXXOperatorCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXOperatorCallExpr>() const
Line
Count
Source
262
325
  const T &getUnchecked() const {
263
325
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
325
  }
clang::StmtExpr const& clang::DynTypedNode::getUnchecked<clang::StmtExpr>() const
Line
Count
Source
262
16
  const T &getUnchecked() const {
263
16
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
16
  }
clang::TemplateSpecializationType const& clang::DynTypedNode::getUnchecked<clang::TemplateSpecializationType>() const
Line
Count
Source
262
66
  const T &getUnchecked() const {
263
66
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
66
  }
clang::DoStmt const& clang::DynTypedNode::getUnchecked<clang::DoStmt>() const
Line
Count
Source
262
2
  const T &getUnchecked() const {
263
2
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
2
  }
clang::WhileStmt const& clang::DynTypedNode::getUnchecked<clang::WhileStmt>() const
Line
Count
Source
262
6
  const T &getUnchecked() const {
263
6
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
6
  }
Unexecuted instantiation: clang::EnumType const& clang::DynTypedNode::getUnchecked<clang::EnumType>() const
Unexecuted instantiation: clang::InjectedClassNameType const& clang::DynTypedNode::getUnchecked<clang::InjectedClassNameType>() const
clang::LabelStmt const& clang::DynTypedNode::getUnchecked<clang::LabelStmt>() const
Line
Count
Source
262
36
  const T &getUnchecked() const {
263
36
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
36
  }
clang::AddrLabelExpr const& clang::DynTypedNode::getUnchecked<clang::AddrLabelExpr>() const
Line
Count
Source
262
8
  const T &getUnchecked() const {
263
8
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
8
  }
Unexecuted instantiation: clang::TagType const& clang::DynTypedNode::getUnchecked<clang::TagType>() const
Unexecuted instantiation: clang::TemplateTypeParmType const& clang::DynTypedNode::getUnchecked<clang::TemplateTypeParmType>() const
Unexecuted instantiation: clang::UnresolvedUsingType const& clang::DynTypedNode::getUnchecked<clang::UnresolvedUsingType>() const
Unexecuted instantiation: clang::AutoType const& clang::DynTypedNode::getUnchecked<clang::AutoType>() const
clang::FunctionProtoType const& clang::DynTypedNode::getUnchecked<clang::FunctionProtoType>() const
Line
Count
Source
262
212
  const T &getUnchecked() const {
263
212
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
212
  }
clang::ArrayType const& clang::DynTypedNode::getUnchecked<clang::ArrayType>() const
Line
Count
Source
262
144
  const T &getUnchecked() const {
263
144
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
144
  }
clang::ComplexType const& clang::DynTypedNode::getUnchecked<clang::ComplexType>() const
Line
Count
Source
262
56
  const T &getUnchecked() const {
263
56
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
56
  }
clang::UnresolvedMemberExpr const& clang::DynTypedNode::getUnchecked<clang::UnresolvedMemberExpr>() const
Line
Count
Source
262
42
  const T &getUnchecked() const {
263
42
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
42
  }
clang::CXXDependentScopeMemberExpr const& clang::DynTypedNode::getUnchecked<clang::CXXDependentScopeMemberExpr>() const
Line
Count
Source
262
77
  const T &getUnchecked() const {
263
77
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
77
  }
clang::SubstTemplateTypeParmType const& clang::DynTypedNode::getUnchecked<clang::SubstTemplateTypeParmType>() const
Line
Count
Source
262
4
  const T &getUnchecked() const {
263
4
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
4
  }
clang::ConstantArrayType const& clang::DynTypedNode::getUnchecked<clang::ConstantArrayType>() const
Line
Count
Source
262
148
  const T &getUnchecked() const {
263
148
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
148
  }
clang::StringLiteral const& clang::DynTypedNode::getUnchecked<clang::StringLiteral>() const
Line
Count
Source
262
144
  const T &getUnchecked() const {
263
144
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
144
  }
clang::OpaqueValueExpr const& clang::DynTypedNode::getUnchecked<clang::OpaqueValueExpr>() const
Line
Count
Source
262
46
  const T &getUnchecked() const {
263
46
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
46
  }
clang::DecltypeType const& clang::DynTypedNode::getUnchecked<clang::DecltypeType>() const
Line
Count
Source
262
16
  const T &getUnchecked() const {
263
16
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
16
  }
clang::AtomicType const& clang::DynTypedNode::getUnchecked<clang::AtomicType>() const
Line
Count
Source
262
56
  const T &getUnchecked() const {
263
56
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
56
  }
clang::ParenType const& clang::DynTypedNode::getUnchecked<clang::ParenType>() const
Line
Count
Source
262
58
  const T &getUnchecked() const {
263
58
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
58
  }
clang::CXXConversionDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConversionDecl>() const
Line
Count
Source
262
44
  const T &getUnchecked() const {
263
44
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
44
  }
clang::CXXDeductionGuideDecl const& clang::DynTypedNode::getUnchecked<clang::CXXDeductionGuideDecl>() const
Line
Count
Source
262
84
  const T &getUnchecked() const {
263
84
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
84
  }
Unexecuted instantiation: clang::BlockPointerType const& clang::DynTypedNode::getUnchecked<clang::BlockPointerType>() const
Unexecuted instantiation: clang::MemberPointerType const& clang::DynTypedNode::getUnchecked<clang::MemberPointerType>() const
clang::ReferenceType const& clang::DynTypedNode::getUnchecked<clang::ReferenceType>() const
Line
Count
Source
262
314
  const T &getUnchecked() const {
263
314
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
314
  }
clang::CXXTypeidExpr const& clang::DynTypedNode::getUnchecked<clang::CXXTypeidExpr>() const
Line
Count
Source
262
2
  const T &getUnchecked() const {
263
2
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
2
  }
clang::GenericSelectionExpr const& clang::DynTypedNode::getUnchecked<clang::GenericSelectionExpr>() const
Line
Count
Source
262
1
  const T &getUnchecked() const {
263
1
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
264
1
  }
265
266
938k
  ASTNodeKind getNodeKind() const { return NodeKind; }
267
268
  /// Returns a pointer that identifies the stored AST node.
269
  ///
270
  /// Note that this is not supported by all AST nodes. For AST nodes
271
  /// that don't have a pointer-defined identity inside the AST, this
272
  /// method returns NULL.
273
380k
  const void *getMemoizationData() const {
274
380k
    return NodeKind.hasPointerIdentity()
275
379k
               ? *reinterpret_cast<void *const *>(Storage.buffer)
276
766
               : nullptr;
277
380k
  }
278
279
  /// Prints the node to the given output stream.
280
  void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const;
281
282
  /// Dumps the node to the given output stream.
283
  void dump(llvm::raw_ostream &OS, const ASTContext &Context) const;
284
285
  /// For nodes which represent textual entities in the source code,
286
  /// return their SourceRange.  For all other nodes, return SourceRange().
287
  SourceRange getSourceRange() const;
288
289
  /// @{
290
  /// Imposes an order on \c DynTypedNode.
291
  ///
292
  /// Supports comparison of nodes that support memoization.
293
  /// FIXME: Implement comparison for other node types (currently
294
  /// only Stmt, Decl, Type and NestedNameSpecifier return memoization data).
295
132k
  bool operator<(const DynTypedNode &Other) const {
296
132k
    if (!NodeKind.isSame(Other.NodeKind))
297
45.9k
      return NodeKind < Other.NodeKind;
298
86.4k
299
86.4k
    if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind))
300
1
      return getUnchecked<QualType>().getAsOpaquePtr() <
301
1
             Other.getUnchecked<QualType>().getAsOpaquePtr();
302
86.4k
303
86.4k
    if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(NodeKind)) {
304
4
      auto TLA = getUnchecked<TypeLoc>();
305
4
      auto TLB = Other.getUnchecked<TypeLoc>();
306
4
      return std::make_pair(TLA.getType().getAsOpaquePtr(),
307
4
                            TLA.getOpaqueData()) <
308
4
             std::make_pair(TLB.getType().getAsOpaquePtr(),
309
4
                            TLB.getOpaqueData());
310
4
    }
311
86.4k
312
86.4k
    if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(
313
0
            NodeKind)) {
314
0
      auto NNSLA = getUnchecked<NestedNameSpecifierLoc>();
315
0
      auto NNSLB = Other.getUnchecked<NestedNameSpecifierLoc>();
316
0
      return std::make_pair(NNSLA.getNestedNameSpecifier(),
317
0
                            NNSLA.getOpaqueData()) <
318
0
             std::make_pair(NNSLB.getNestedNameSpecifier(),
319
0
                            NNSLB.getOpaqueData());
320
0
    }
321
86.4k
322
86.4k
    assert(getMemoizationData() && Other.getMemoizationData());
323
86.4k
    return getMemoizationData() < Other.getMemoizationData();
324
86.4k
  }
325
214k
  bool operator==(const DynTypedNode &Other) const {
326
    // DynTypedNode::create() stores the exact kind of the node in NodeKind.
327
    // If they contain the same node, their NodeKind must be the same.
328
214k
    if (!NodeKind.isSame(Other.NodeKind))
329
194k
      return false;
330
20.2k
331
    // FIXME: Implement for other types.
332
20.2k
    if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind))
333
141
      return getUnchecked<QualType>() == Other.getUnchecked<QualType>();
334
20.0k
335
20.0k
    if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(NodeKind))
336
18.6k
      return getUnchecked<TypeLoc>() == Other.getUnchecked<TypeLoc>();
337
1.45k
338
1.45k
    if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(NodeKind))
339
132
      return getUnchecked<NestedNameSpecifierLoc>() ==
340
132
             Other.getUnchecked<NestedNameSpecifierLoc>();
341
1.32k
342
1.32k
    assert(getMemoizationData() && Other.getMemoizationData());
343
1.32k
    return getMemoizationData() == Other.getMemoizationData();
344
1.32k
  }
345
1.13k
  bool operator!=(const DynTypedNode &Other) const {
346
1.13k
    return !operator==(Other);
347
1.13k
  }
348
  /// @}
349
350
  /// Hooks for using DynTypedNode as a key in a DenseMap.
351
  struct DenseMapInfo {
352
70.2k
    static inline DynTypedNode getEmptyKey() {
353
70.2k
      DynTypedNode Node;
354
70.2k
      Node.NodeKind = ASTNodeKind::DenseMapInfo::getEmptyKey();
355
70.2k
      return Node;
356
70.2k
    }
357
50.3k
    static inline DynTypedNode getTombstoneKey() {
358
50.3k
      DynTypedNode Node;
359
50.3k
      Node.NodeKind = ASTNodeKind::DenseMapInfo::getTombstoneKey();
360
50.3k
      return Node;
361
50.3k
    }
362
29.3k
    static unsigned getHashValue(const DynTypedNode &Val) {
363
      // FIXME: Add hashing support for the remaining types.
364
29.3k
      if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(Val.NodeKind)) {
365
28.4k
        auto TL = Val.getUnchecked<TypeLoc>();
366
28.4k
        return llvm::hash_combine(TL.getType().getAsOpaquePtr(),
367
28.4k
                                  TL.getOpaqueData());
368
28.4k
      }
369
932
370
932
      if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(
371
932
              Val.NodeKind)) {
372
932
        auto NNSL = Val.getUnchecked<NestedNameSpecifierLoc>();
373
932
        return llvm::hash_combine(NNSL.getNestedNameSpecifier(),
374
932
                                  NNSL.getOpaqueData());
375
932
      }
376
0
377
0
      assert(Val.getMemoizationData());
378
0
      return llvm::hash_value(Val.getMemoizationData());
379
0
    }
380
350k
    static bool isEqual(const DynTypedNode &LHS, const DynTypedNode &RHS) {
381
350k
      auto Empty = ASTNodeKind::DenseMapInfo::getEmptyKey();
382
350k
      auto TombStone = ASTNodeKind::DenseMapInfo::getTombstoneKey();
383
350k
      return (ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, Empty) &&
384
137k
              ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, Empty)) ||
385
213k
             (ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, TombStone) &&
386
0
              ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, TombStone)) ||
387
213k
             LHS == RHS;
388
350k
    }
389
  };
390
391
private:
392
  /// Takes care of converting from and to \c T.
393
  template <typename T, typename EnablerT = void> struct BaseConverter;
394
395
  /// Converter that uses dyn_cast<T> from a stored BaseT*.
396
  template <typename T, typename BaseT> struct DynCastPtrConverter {
397
715k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
715k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
310k
        return &getUnchecked(NodeKind, Storage);
400
404k
      return nullptr;
401
404k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
45.7k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
45.7k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
36.3k
        return &getUnchecked(NodeKind, Storage);
400
9.47k
      return nullptr;
401
9.47k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
56
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
56
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
52
        return &getUnchecked(NodeKind, Storage);
400
4
      return nullptr;
401
4
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
1
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
1
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
0
        return &getUnchecked(NodeKind, Storage);
400
1
      return nullptr;
401
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
573k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
573k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
221k
        return &getUnchecked(NodeKind, Storage);
400
352k
      return nullptr;
401
352k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
88.2k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
88.2k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
47.4k
        return &getUnchecked(NodeKind, Storage);
400
40.7k
      return nullptr;
401
40.7k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
276
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
276
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
12
        return &getUnchecked(NodeKind, Storage);
400
264
      return nullptr;
401
264
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
66
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
66
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
35
        return &getUnchecked(NodeKind, Storage);
400
31
      return nullptr;
401
31
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
127
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
127
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
126
        return &getUnchecked(NodeKind, Storage);
400
1
      return nullptr;
401
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
88
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
88
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
88
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
17
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
17
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
17
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
17
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
17
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
17
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
1
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
1
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
1
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
18
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
18
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
18
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
27
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
27
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
27
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
2
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
2
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
245
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
245
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
245
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
114
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
114
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
114
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
1.45k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
1.45k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
1.45k
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2.34k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
2.34k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
2.00k
        return &getUnchecked(NodeKind, Storage);
400
336
      return nullptr;
401
336
    }
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
360
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
360
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
32
        return &getUnchecked(NodeKind, Storage);
400
328
      return nullptr;
401
328
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
764
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
764
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
764
        return &getUnchecked(NodeKind, Storage);
400
0
      return nullptr;
401
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
1.10k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
1.10k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
874
        return &getUnchecked(NodeKind, Storage);
400
231
      return nullptr;
401
231
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
146
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
146
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
0
        return &getUnchecked(NodeKind, Storage);
400
146
      return nullptr;
401
146
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
77
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
77
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
75
        return &getUnchecked(NodeKind, Storage);
400
2
      return nullptr;
401
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
5
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
5
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
4
        return &getUnchecked(NodeKind, Storage);
400
1
      return nullptr;
401
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
397
152
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
398
152
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
399
124
        return &getUnchecked(NodeKind, Storage);
400
28
      return nullptr;
401
28
    }
402
481k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
481k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
481k
      return *cast<T>(static_cast<const BaseT *>(
405
481k
          *reinterpret_cast<const void *const *>(Storage)));
406
481k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
46.0k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
46.0k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
46.0k
      return *cast<T>(static_cast<const BaseT *>(
405
46.0k
          *reinterpret_cast<const void *const *>(Storage)));
406
46.0k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
1.53k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
1.53k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
1.53k
      return *cast<T>(static_cast<const BaseT *>(
405
1.53k
          *reinterpret_cast<const void *const *>(Storage)));
406
1.53k
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, char const*)
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
229k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
229k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
229k
      return *cast<T>(static_cast<const BaseT *>(
405
229k
          *reinterpret_cast<const void *const *>(Storage)));
406
229k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
56.1k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
56.1k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
56.1k
      return *cast<T>(static_cast<const BaseT *>(
405
56.1k
          *reinterpret_cast<const void *const *>(Storage)));
406
56.1k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
572
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
572
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
572
      return *cast<T>(static_cast<const BaseT *>(
405
572
          *reinterpret_cast<const void *const *>(Storage)));
406
572
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
1.07k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
1.07k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
1.07k
      return *cast<T>(static_cast<const BaseT *>(
405
1.07k
          *reinterpret_cast<const void *const *>(Storage)));
406
1.07k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
305
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
305
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
305
      return *cast<T>(static_cast<const BaseT *>(
405
305
          *reinterpret_cast<const void *const *>(Storage)));
406
305
    }
clang::DynTypedNode::DynCastPtrConverter<clang::RecordType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
255
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
255
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
255
      return *cast<T>(static_cast<const BaseT *>(
405
255
          *reinterpret_cast<const void *const *>(Storage)));
406
255
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCObjectPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
120
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
120
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
120
      return *cast<T>(static_cast<const BaseT *>(
405
120
          *reinterpret_cast<const void *const *>(Storage)));
406
120
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
79
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
79
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
79
      return *cast<T>(static_cast<const BaseT *>(
405
79
          *reinterpret_cast<const void *const *>(Storage)));
406
79
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
42
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
42
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
42
      return *cast<T>(static_cast<const BaseT *>(
405
42
          *reinterpret_cast<const void *const *>(Storage)));
406
42
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
29
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
29
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
29
      return *cast<T>(static_cast<const BaseT *>(
405
29
          *reinterpret_cast<const void *const *>(Storage)));
406
29
    }
clang::DynTypedNode::DynCastPtrConverter<clang::PointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
699
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
699
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
699
      return *cast<T>(static_cast<const BaseT *>(
405
699
          *reinterpret_cast<const void *const *>(Storage)));
406
699
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CStyleCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
40
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
40
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
40
      return *cast<T>(static_cast<const BaseT *>(
405
40
          *reinterpret_cast<const void *const *>(Storage)));
406
40
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
60
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
60
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
60
      return *cast<T>(static_cast<const BaseT *>(
405
60
          *reinterpret_cast<const void *const *>(Storage)));
406
60
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
3.46k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
3.46k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
3.46k
      return *cast<T>(static_cast<const BaseT *>(
405
3.46k
          *reinterpret_cast<const void *const *>(Storage)));
406
3.46k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
1.02k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
1.02k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
1.02k
      return *cast<T>(static_cast<const BaseT *>(
405
1.02k
          *reinterpret_cast<const void *const *>(Storage)));
406
1.02k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
4.31k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
4.31k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
4.31k
      return *cast<T>(static_cast<const BaseT *>(
405
4.31k
          *reinterpret_cast<const void *const *>(Storage)));
406
4.31k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
6.70k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
6.70k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
6.70k
      return *cast<T>(static_cast<const BaseT *>(
405
6.70k
          *reinterpret_cast<const void *const *>(Storage)));
406
6.70k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
83
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
83
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
83
      return *cast<T>(static_cast<const BaseT *>(
405
83
          *reinterpret_cast<const void *const *>(Storage)));
406
83
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
1.43k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
1.43k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
1.43k
      return *cast<T>(static_cast<const BaseT *>(
405
1.43k
          *reinterpret_cast<const void *const *>(Storage)));
406
1.43k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateSpecializationDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
636
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
636
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
636
      return *cast<T>(static_cast<const BaseT *>(
405
636
          *reinterpret_cast<const void *const *>(Storage)));
406
636
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
6.01k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
6.01k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
6.01k
      return *cast<T>(static_cast<const BaseT *>(
405
6.01k
          *reinterpret_cast<const void *const *>(Storage)));
406
6.01k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
298
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
298
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
298
      return *cast<T>(static_cast<const BaseT *>(
405
298
          *reinterpret_cast<const void *const *>(Storage)));
406
298
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ForStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
631
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
631
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
631
      return *cast<T>(static_cast<const BaseT *>(
405
631
          *reinterpret_cast<const void *const *>(Storage)));
406
631
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXForRangeStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
50
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
50
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
50
      return *cast<T>(static_cast<const BaseT *>(
405
50
          *reinterpret_cast<const void *const *>(Storage)));
406
50
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DesignatedInitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
160
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
160
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
160
      return *cast<T>(static_cast<const BaseT *>(
405
160
          *reinterpret_cast<const void *const *>(Storage)));
406
160
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryExprOrTypeTraitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
291
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
291
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
291
      return *cast<T>(static_cast<const BaseT *>(
405
291
          *reinterpret_cast<const void *const *>(Storage)));
406
291
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
72.9k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
72.9k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
72.9k
      return *cast<T>(static_cast<const BaseT *>(
405
72.9k
          *reinterpret_cast<const void *const *>(Storage)));
406
72.9k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
16.8k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
16.8k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
16.8k
      return *cast<T>(static_cast<const BaseT *>(
405
16.8k
          *reinterpret_cast<const void *const *>(Storage)));
406
16.8k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
834
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
834
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
834
      return *cast<T>(static_cast<const BaseT *>(
405
834
          *reinterpret_cast<const void *const *>(Storage)));
406
834
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
280
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
280
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
280
      return *cast<T>(static_cast<const BaseT *>(
405
280
          *reinterpret_cast<const void *const *>(Storage)));
406
280
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
128
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
128
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
128
      return *cast<T>(static_cast<const BaseT *>(
405
128
          *reinterpret_cast<const void *const *>(Storage)));
406
128
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclaratorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
30
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
30
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
30
      return *cast<T>(static_cast<const BaseT *>(
405
30
          *reinterpret_cast<const void *const *>(Storage)));
406
30
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
2.23k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
2.23k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
2.23k
      return *cast<T>(static_cast<const BaseT *>(
405
2.23k
          *reinterpret_cast<const void *const *>(Storage)));
406
2.23k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OverloadExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
14
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
14
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
14
      return *cast<T>(static_cast<const BaseT *>(
405
14
          *reinterpret_cast<const void *const *>(Storage)));
406
14
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
7.72k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
7.72k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
7.72k
      return *cast<T>(static_cast<const BaseT *>(
405
7.72k
          *reinterpret_cast<const void *const *>(Storage)));
406
7.72k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXCatchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
100
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
100
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
100
      return *cast<T>(static_cast<const BaseT *>(
405
100
          *reinterpret_cast<const void *const *>(Storage)));
406
100
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
1.04k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
1.04k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
1.04k
      return *cast<T>(static_cast<const BaseT *>(
405
1.04k
          *reinterpret_cast<const void *const *>(Storage)));
406
1.04k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
656
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
656
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
656
      return *cast<T>(static_cast<const BaseT *>(
405
656
          *reinterpret_cast<const void *const *>(Storage)));
406
656
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
1.60k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
1.60k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
1.60k
      return *cast<T>(static_cast<const BaseT *>(
405
1.60k
          *reinterpret_cast<const void *const *>(Storage)));
406
1.60k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
495
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
495
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
495
      return *cast<T>(static_cast<const BaseT *>(
405
495
          *reinterpret_cast<const void *const *>(Storage)));
406
495
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ArraySubscriptExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
19
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
19
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
19
      return *cast<T>(static_cast<const BaseT *>(
405
19
          *reinterpret_cast<const void *const *>(Storage)));
406
19
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
2.86k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
2.86k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
2.86k
      return *cast<T>(static_cast<const BaseT *>(
405
2.86k
          *reinterpret_cast<const void *const *>(Storage)));
406
2.86k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
684
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
684
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
684
      return *cast<T>(static_cast<const BaseT *>(
405
684
          *reinterpret_cast<const void *const *>(Storage)));
406
684
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
351
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
351
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
351
      return *cast<T>(static_cast<const BaseT *>(
405
351
          *reinterpret_cast<const void *const *>(Storage)));
406
351
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ImplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
212
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
212
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
212
      return *cast<T>(static_cast<const BaseT *>(
405
212
          *reinterpret_cast<const void *const *>(Storage)));
406
212
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TagDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
270
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
270
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
270
      return *cast<T>(static_cast<const BaseT *>(
405
270
          *reinterpret_cast<const void *const *>(Storage)));
406
270
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AbstractConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
227
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
227
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
227
      return *cast<T>(static_cast<const BaseT *>(
405
227
          *reinterpret_cast<const void *const *>(Storage)));
406
227
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
3.18k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
3.18k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
3.18k
      return *cast<T>(static_cast<const BaseT *>(
405
3.18k
          *reinterpret_cast<const void *const *>(Storage)));
406
3.18k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
490
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
490
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
490
      return *cast<T>(static_cast<const BaseT *>(
405
490
          *reinterpret_cast<const void *const *>(Storage)));
406
490
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
27
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
27
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
27
      return *cast<T>(static_cast<const BaseT *>(
405
27
          *reinterpret_cast<const void *const *>(Storage)));
406
27
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
8
      return *cast<T>(static_cast<const BaseT *>(
405
8
          *reinterpret_cast<const void *const *>(Storage)));
406
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VariableArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
28
      return *cast<T>(static_cast<const BaseT *>(
405
28
          *reinterpret_cast<const void *const *>(Storage)));
406
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ElaboratedType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
12
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
12
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
12
      return *cast<T>(static_cast<const BaseT *>(
405
12
          *reinterpret_cast<const void *const *>(Storage)));
406
12
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecayedType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
28
      return *cast<T>(static_cast<const BaseT *>(
405
28
          *reinterpret_cast<const void *const *>(Storage)));
406
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
63
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
63
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
63
      return *cast<T>(static_cast<const BaseT *>(
405
63
          *reinterpret_cast<const void *const *>(Storage)));
406
63
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
90
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
90
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
90
      return *cast<T>(static_cast<const BaseT *>(
405
90
          *reinterpret_cast<const void *const *>(Storage)));
406
90
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CaseStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
28
      return *cast<T>(static_cast<const BaseT *>(
405
28
          *reinterpret_cast<const void *const *>(Storage)));
406
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ReturnStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
69
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
69
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
69
      return *cast<T>(static_cast<const BaseT *>(
405
69
          *reinterpret_cast<const void *const *>(Storage)));
406
69
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXNewExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
59
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
59
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
59
      return *cast<T>(static_cast<const BaseT *>(
405
59
          *reinterpret_cast<const void *const *>(Storage)));
406
59
    }
clang::DynTypedNode::DynCastPtrConverter<clang::EnumDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
485
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
485
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
485
      return *cast<T>(static_cast<const BaseT *>(
405
485
          *reinterpret_cast<const void *const *>(Storage)));
406
485
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPExecutableDirective, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
804
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
804
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
804
      return *cast<T>(static_cast<const BaseT *>(
405
804
          *reinterpret_cast<const void *const *>(Storage)));
406
804
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPDefaultClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
174
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
174
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
174
      return *cast<T>(static_cast<const BaseT *>(
405
174
          *reinterpret_cast<const void *const *>(Storage)));
406
174
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
1.07k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
1.07k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
1.07k
      return *cast<T>(static_cast<const BaseT *>(
405
1.07k
          *reinterpret_cast<const void *const *>(Storage)));
406
1.07k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
8
      return *cast<T>(static_cast<const BaseT *>(
405
8
          *reinterpret_cast<const void *const *>(Storage)));
406
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FriendDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
181
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
181
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
181
      return *cast<T>(static_cast<const BaseT *>(
405
181
          *reinterpret_cast<const void *const *>(Storage)));
406
181
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefNameDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
346
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
346
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
346
      return *cast<T>(static_cast<const BaseT *>(
405
346
          *reinterpret_cast<const void *const *>(Storage)));
406
346
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
102
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
102
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
102
      return *cast<T>(static_cast<const BaseT *>(
405
102
          *reinterpret_cast<const void *const *>(Storage)));
406
102
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CharacterLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
8
      return *cast<T>(static_cast<const BaseT *>(
405
8
          *reinterpret_cast<const void *const *>(Storage)));
406
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXBoolLiteralExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
282
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
282
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
282
      return *cast<T>(static_cast<const BaseT *>(
405
282
          *reinterpret_cast<const void *const *>(Storage)));
406
282
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FloatingLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
336
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
336
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
336
      return *cast<T>(static_cast<const BaseT *>(
405
336
          *reinterpret_cast<const void *const *>(Storage)));
406
336
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXUnresolvedConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
8
      return *cast<T>(static_cast<const BaseT *>(
405
8
          *reinterpret_cast<const void *const *>(Storage)));
406
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXOperatorCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
445
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
445
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
445
      return *cast<T>(static_cast<const BaseT *>(
405
445
          *reinterpret_cast<const void *const *>(Storage)));
406
445
    }
clang::DynTypedNode::DynCastPtrConverter<clang::StmtExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
16
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
16
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
16
      return *cast<T>(static_cast<const BaseT *>(
405
16
          *reinterpret_cast<const void *const *>(Storage)));
406
16
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TemplateSpecializationType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
66
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
66
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
66
      return *cast<T>(static_cast<const BaseT *>(
405
66
          *reinterpret_cast<const void *const *>(Storage)));
406
66
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DoStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
2
      return *cast<T>(static_cast<const BaseT *>(
405
2
          *reinterpret_cast<const void *const *>(Storage)));
406
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::WhileStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
7
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
7
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
7
      return *cast<T>(static_cast<const BaseT *>(
405
7
          *reinterpret_cast<const void *const *>(Storage)));
406
7
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::EnumType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::InjectedClassNameType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
clang::DynTypedNode::DynCastPtrConverter<clang::LabelStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
38
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
38
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
38
      return *cast<T>(static_cast<const BaseT *>(
405
38
          *reinterpret_cast<const void *const *>(Storage)));
406
38
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AddrLabelExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
8
      return *cast<T>(static_cast<const BaseT *>(
405
8
          *reinterpret_cast<const void *const *>(Storage)));
406
8
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TagType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedUsingType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::AutoType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionProtoType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
212
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
212
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
212
      return *cast<T>(static_cast<const BaseT *>(
405
212
          *reinterpret_cast<const void *const *>(Storage)));
406
212
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
144
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
144
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
144
      return *cast<T>(static_cast<const BaseT *>(
405
144
          *reinterpret_cast<const void *const *>(Storage)));
406
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ComplexType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
56
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
56
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
56
      return *cast<T>(static_cast<const BaseT *>(
405
56
          *reinterpret_cast<const void *const *>(Storage)));
406
56
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
42
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
42
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
42
      return *cast<T>(static_cast<const BaseT *>(
405
42
          *reinterpret_cast<const void *const *>(Storage)));
406
42
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDependentScopeMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
77
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
77
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
77
      return *cast<T>(static_cast<const BaseT *>(
405
77
          *reinterpret_cast<const void *const *>(Storage)));
406
77
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SubstTemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
4
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
4
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
4
      return *cast<T>(static_cast<const BaseT *>(
405
4
          *reinterpret_cast<const void *const *>(Storage)));
406
4
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ConstantArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
148
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
148
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
148
      return *cast<T>(static_cast<const BaseT *>(
405
148
          *reinterpret_cast<const void *const *>(Storage)));
406
148
    }
clang::DynTypedNode::DynCastPtrConverter<clang::StringLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
144
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
144
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
144
      return *cast<T>(static_cast<const BaseT *>(
405
144
          *reinterpret_cast<const void *const *>(Storage)));
406
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OpaqueValueExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
46
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
46
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
46
      return *cast<T>(static_cast<const BaseT *>(
405
46
          *reinterpret_cast<const void *const *>(Storage)));
406
46
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecltypeType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
16
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
16
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
16
      return *cast<T>(static_cast<const BaseT *>(
405
16
          *reinterpret_cast<const void *const *>(Storage)));
406
16
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AtomicType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
56
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
56
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
56
      return *cast<T>(static_cast<const BaseT *>(
405
56
          *reinterpret_cast<const void *const *>(Storage)));
406
56
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParenType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
58
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
58
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
58
      return *cast<T>(static_cast<const BaseT *>(
405
58
          *reinterpret_cast<const void *const *>(Storage)));
406
58
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConversionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
46
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
46
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
46
      return *cast<T>(static_cast<const BaseT *>(
405
46
          *reinterpret_cast<const void *const *>(Storage)));
406
46
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDeductionGuideDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
84
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
84
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
84
      return *cast<T>(static_cast<const BaseT *>(
405
84
          *reinterpret_cast<const void *const *>(Storage)));
406
84
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::BlockPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::MemberPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
clang::DynTypedNode::DynCastPtrConverter<clang::ReferenceType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
314
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
314
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
314
      return *cast<T>(static_cast<const BaseT *>(
405
314
          *reinterpret_cast<const void *const *>(Storage)));
406
314
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXTypeidExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
2
      return *cast<T>(static_cast<const BaseT *>(
405
2
          *reinterpret_cast<const void *const *>(Storage)));
406
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::GenericSelectionExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
402
1
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
403
1
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
404
1
      return *cast<T>(static_cast<const BaseT *>(
405
1
          *reinterpret_cast<const void *const *>(Storage)));
406
1
    }
407
768k
    static DynTypedNode create(const BaseT &Node) {
408
768k
      DynTypedNode Result;
409
768k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
768k
      new (Result.Storage.buffer) const void *(&Node);
411
768k
      return Result;
412
768k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
305k
    static DynTypedNode create(const BaseT &Node) {
408
305k
      DynTypedNode Result;
409
305k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
305k
      new (Result.Storage.buffer) const void *(&Node);
411
305k
      return Result;
412
305k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
172k
    static DynTypedNode create(const BaseT &Node) {
408
172k
      DynTypedNode Result;
409
172k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
172k
      new (Result.Storage.buffer) const void *(&Node);
411
172k
      return Result;
412
172k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
231k
    static DynTypedNode create(const BaseT &Node) {
408
231k
      DynTypedNode Result;
409
231k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
231k
      new (Result.Storage.buffer) const void *(&Node);
411
231k
      return Result;
412
231k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
401
    static DynTypedNode create(const BaseT &Node) {
408
401
      DynTypedNode Result;
409
401
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
401
      new (Result.Storage.buffer) const void *(&Node);
411
401
      return Result;
412
401
    }
clang::DynTypedNode::DynCastPtrConverter<clang::EnumConstantDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
15
    static DynTypedNode create(const BaseT &Node) {
408
15
      DynTypedNode Result;
409
15
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
15
      new (Result.Storage.buffer) const void *(&Node);
411
15
      return Result;
412
15
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
45
    static DynTypedNode create(const BaseT &Node) {
408
45
      DynTypedNode Result;
409
45
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
45
      new (Result.Storage.buffer) const void *(&Node);
411
45
      return Result;
412
45
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
444
    static DynTypedNode create(const BaseT &Node) {
408
444
      DynTypedNode Result;
409
444
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
444
      new (Result.Storage.buffer) const void *(&Node);
411
444
      return Result;
412
444
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
27
    static DynTypedNode create(const BaseT &Node) {
408
27
      DynTypedNode Result;
409
27
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
27
      new (Result.Storage.buffer) const void *(&Node);
411
27
      return Result;
412
27
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
110
    static DynTypedNode create(const BaseT &Node) {
408
110
      DynTypedNode Result;
409
110
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
110
      new (Result.Storage.buffer) const void *(&Node);
411
110
      return Result;
412
110
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
25
    static DynTypedNode create(const BaseT &Node) {
408
25
      DynTypedNode Result;
409
25
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
25
      new (Result.Storage.buffer) const void *(&Node);
411
25
      return Result;
412
25
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
18
    static DynTypedNode create(const BaseT &Node) {
408
18
      DynTypedNode Result;
409
18
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
18
      new (Result.Storage.buffer) const void *(&Node);
411
18
      return Result;
412
18
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
1
    static DynTypedNode create(const BaseT &Node) {
408
1
      DynTypedNode Result;
409
1
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
1
      new (Result.Storage.buffer) const void *(&Node);
411
1
      return Result;
412
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
35
    static DynTypedNode create(const BaseT &Node) {
408
35
      DynTypedNode Result;
409
35
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
35
      new (Result.Storage.buffer) const void *(&Node);
411
35
      return Result;
412
35
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
156
    static DynTypedNode create(const BaseT &Node) {
408
156
      DynTypedNode Result;
409
156
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
156
      new (Result.Storage.buffer) const void *(&Node);
411
156
      return Result;
412
156
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
2.35k
    static DynTypedNode create(const BaseT &Node) {
408
2.35k
      DynTypedNode Result;
409
2.35k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
2.35k
      new (Result.Storage.buffer) const void *(&Node);
411
2.35k
      return Result;
412
2.35k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
138
    static DynTypedNode create(const BaseT &Node) {
408
138
      DynTypedNode Result;
409
138
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
138
      new (Result.Storage.buffer) const void *(&Node);
411
138
      return Result;
412
138
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
885
    static DynTypedNode create(const BaseT &Node) {
408
885
      DynTypedNode Result;
409
885
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
885
      new (Result.Storage.buffer) const void *(&Node);
411
885
      return Result;
412
885
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
5.77k
    static DynTypedNode create(const BaseT &Node) {
408
5.77k
      DynTypedNode Result;
409
5.77k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
5.77k
      new (Result.Storage.buffer) const void *(&Node);
411
5.77k
      return Result;
412
5.77k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::create(clang::Type const&)
Line
Count
Source
407
38.6k
    static DynTypedNode create(const BaseT &Node) {
408
38.6k
      DynTypedNode Result;
409
38.6k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
38.6k
      new (Result.Storage.buffer) const void *(&Node);
411
38.6k
      return Result;
412
38.6k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
188
    static DynTypedNode create(const BaseT &Node) {
408
188
      DynTypedNode Result;
409
188
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
188
      new (Result.Storage.buffer) const void *(&Node);
411
188
      return Result;
412
188
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
30
    static DynTypedNode create(const BaseT &Node) {
408
30
      DynTypedNode Result;
409
30
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
30
      new (Result.Storage.buffer) const void *(&Node);
411
30
      return Result;
412
30
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
164
    static DynTypedNode create(const BaseT &Node) {
408
164
      DynTypedNode Result;
409
164
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
164
      new (Result.Storage.buffer) const void *(&Node);
411
164
      return Result;
412
164
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
129
    static DynTypedNode create(const BaseT &Node) {
408
129
      DynTypedNode Result;
409
129
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
129
      new (Result.Storage.buffer) const void *(&Node);
411
129
      return Result;
412
129
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
6.83k
    static DynTypedNode create(const BaseT &Node) {
408
6.83k
      DynTypedNode Result;
409
6.83k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
6.83k
      new (Result.Storage.buffer) const void *(&Node);
411
6.83k
      return Result;
412
6.83k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
560
    static DynTypedNode create(const BaseT &Node) {
408
560
      DynTypedNode Result;
409
560
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
560
      new (Result.Storage.buffer) const void *(&Node);
411
560
      return Result;
412
560
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
73
    static DynTypedNode create(const BaseT &Node) {
408
73
      DynTypedNode Result;
409
73
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
73
      new (Result.Storage.buffer) const void *(&Node);
411
73
      return Result;
412
73
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
73
    static DynTypedNode create(const BaseT &Node) {
408
73
      DynTypedNode Result;
409
73
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
73
      new (Result.Storage.buffer) const void *(&Node);
411
73
      return Result;
412
73
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchCase, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
23
    static DynTypedNode create(const BaseT &Node) {
408
23
      DynTypedNode Result;
409
23
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
23
      new (Result.Storage.buffer) const void *(&Node);
411
23
      return Result;
412
23
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
964
    static DynTypedNode create(const BaseT &Node) {
408
964
      DynTypedNode Result;
409
964
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
964
      new (Result.Storage.buffer) const void *(&Node);
411
964
      return Result;
412
964
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::create(clang::OMPClause const&)
Line
Count
Source
407
352
    static DynTypedNode create(const BaseT &Node) {
408
352
      DynTypedNode Result;
409
352
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
352
      new (Result.Storage.buffer) const void *(&Node);
411
352
      return Result;
412
352
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
407
597
    static DynTypedNode create(const BaseT &Node) {
408
597
      DynTypedNode Result;
409
597
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
597
      new (Result.Storage.buffer) const void *(&Node);
411
597
      return Result;
412
597
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
407
54
    static DynTypedNode create(const BaseT &Node) {
408
54
      DynTypedNode Result;
409
54
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
410
54
      new (Result.Storage.buffer) const void *(&Node);
411
54
      return Result;
412
54
    }
413
  };
414
415
  /// Converter that stores T* (by pointer).
416
  template <typename T> struct PtrConverter {
417
633
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
418
633
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
419
62
        return &getUnchecked(NodeKind, Storage);
420
571
      return nullptr;
421
571
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
417
329
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
418
329
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
419
45
        return &getUnchecked(NodeKind, Storage);
420
284
      return nullptr;
421
284
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
417
304
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
418
304
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
419
17
        return &getUnchecked(NodeKind, Storage);
420
287
      return nullptr;
421
287
    }
422
980
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
423
980
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
424
980
      return *static_cast<const T *>(
425
980
          *reinterpret_cast<const void *const *>(Storage));
426
980
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
422
337
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
423
337
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
424
337
      return *static_cast<const T *>(
425
337
          *reinterpret_cast<const void *const *>(Storage));
426
337
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
422
123
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
423
123
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
424
123
      return *static_cast<const T *>(
425
123
          *reinterpret_cast<const void *const *>(Storage));
426
123
    }
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
422
520
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
423
520
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
424
520
      return *static_cast<const T *>(
425
520
          *reinterpret_cast<const void *const *>(Storage));
426
520
    }
427
1.59k
    static DynTypedNode create(const T &Node) {
428
1.59k
      DynTypedNode Result;
429
1.59k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
430
1.59k
      new (Result.Storage.buffer) const void *(&Node);
431
1.59k
      return Result;
432
1.59k
    }
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::create(clang::CXXBaseSpecifier const&)
Line
Count
Source
427
520
    static DynTypedNode create(const T &Node) {
428
520
      DynTypedNode Result;
429
520
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
430
520
      new (Result.Storage.buffer) const void *(&Node);
431
520
      return Result;
432
520
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::create(clang::NestedNameSpecifier const&)
Line
Count
Source
427
861
    static DynTypedNode create(const T &Node) {
428
861
      DynTypedNode Result;
429
861
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
430
861
      new (Result.Storage.buffer) const void *(&Node);
431
861
      return Result;
432
861
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::create(clang::CXXCtorInitializer const&)
Line
Count
Source
427
211
    static DynTypedNode create(const T &Node) {
428
211
      DynTypedNode Result;
429
211
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
430
211
      new (Result.Storage.buffer) const void *(&Node);
431
211
      return Result;
432
211
    }
433
  };
434
435
  /// Converter that stores T (by value).
436
  template <typename T> struct ValueConverter {
437
11.3k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
438
11.3k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
439
2.89k
        return reinterpret_cast<const T *>(Storage);
440
8.42k
      return nullptr;
441
8.42k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
437
3
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
438
3
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
439
1
        return reinterpret_cast<const T *>(Storage);
440
2
      return nullptr;
441
2
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
437
20
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
438
20
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
439
18
        return reinterpret_cast<const T *>(Storage);
440
2
      return nullptr;
441
2
    }
clang::DynTypedNode::ValueConverter<clang::TemplateName>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
437
2
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
438
2
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
439
0
        return reinterpret_cast<const T *>(Storage);
440
2
      return nullptr;
441
2
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
437
5.56k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
438
5.56k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
439
174
        return reinterpret_cast<const T *>(Storage);
440
5.38k
      return nullptr;
441
5.38k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
437
252
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
438
252
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
439
226
        return reinterpret_cast<const T *>(Storage);
440
26
      return nullptr;
441
26
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
437
5.47k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
438
5.47k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
439
2.47k
        return reinterpret_cast<const T *>(Storage);
440
3.00k
      return nullptr;
441
3.00k
    }
442
102k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
443
102k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
444
102k
      return *reinterpret_cast<const T *>(Storage);
445
102k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
442
32.8k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
443
32.8k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
444
32.8k
      return *reinterpret_cast<const T *>(Storage);
445
32.8k
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
442
67.8k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
443
67.8k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
444
67.8k
      return *reinterpret_cast<const T *>(Storage);
445
67.8k
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
442
1.40k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
443
1.40k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
444
1.40k
      return *reinterpret_cast<const T *>(Storage);
445
1.40k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
442
154
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
443
154
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
444
154
      return *reinterpret_cast<const T *>(Storage);
445
154
    }
446
123k
    static DynTypedNode create(const T &Node) {
447
123k
      DynTypedNode Result;
448
123k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
449
123k
      new (Result.Storage.buffer) T(Node);
450
123k
      return Result;
451
123k
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::create(clang::TypeLoc const&)
Line
Count
Source
446
58.8k
    static DynTypedNode create(const T &Node) {
447
58.8k
      DynTypedNode Result;
448
58.8k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
449
58.8k
      new (Result.Storage.buffer) T(Node);
450
58.8k
      return Result;
451
58.8k
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::create(clang::NestedNameSpecifierLoc const&)
Line
Count
Source
446
16.7k
    static DynTypedNode create(const T &Node) {
447
16.7k
      DynTypedNode Result;
448
16.7k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
449
16.7k
      new (Result.Storage.buffer) T(Node);
450
16.7k
      return Result;
451
16.7k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::create(clang::QualType const&)
Line
Count
Source
446
47.1k
    static DynTypedNode create(const T &Node) {
447
47.1k
      DynTypedNode Result;
448
47.1k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
449
47.1k
      new (Result.Storage.buffer) T(Node);
450
47.1k
      return Result;
451
47.1k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateName>::create(clang::TemplateName const&)
Line
Count
Source
446
2
    static DynTypedNode create(const T &Node) {
447
2
      DynTypedNode Result;
448
2
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
449
2
      new (Result.Storage.buffer) T(Node);
450
2
      return Result;
451
2
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::create(clang::TemplateArgumentLoc const&)
Line
Count
Source
446
376
    static DynTypedNode create(const T &Node) {
447
376
      DynTypedNode Result;
448
376
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
449
376
      new (Result.Storage.buffer) T(Node);
450
376
      return Result;
451
376
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::create(clang::TemplateArgument const&)
Line
Count
Source
446
181
    static DynTypedNode create(const T &Node) {
447
181
      DynTypedNode Result;
448
181
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
449
181
      new (Result.Storage.buffer) T(Node);
450
181
      return Result;
451
181
    }
452
  };
453
454
  ASTNodeKind NodeKind;
455
456
  /// Stores the data of the node.
457
  ///
458
  /// Note that we can store \c Decls, \c Stmts, \c Types,
459
  /// \c NestedNameSpecifiers and \c CXXCtorInitializer by pointer as they are
460
  /// guaranteed to be unique pointers pointing to dedicated storage in the AST.
461
  /// \c QualTypes, \c NestedNameSpecifierLocs, \c TypeLocs,
462
  /// \c TemplateArguments and \c TemplateArgumentLocs on the other hand do not
463
  /// have storage or unique pointers and thus need to be stored by value.
464
  llvm::AlignedCharArrayUnion<const void *, TemplateArgument,
465
                              TemplateArgumentLoc, NestedNameSpecifierLoc,
466
                              QualType, TypeLoc>
467
      Storage;
468
};
469
470
template <typename T>
471
struct DynTypedNode::BaseConverter<
472
    T, std::enable_if_t<std::is_base_of<Decl, T>::value>>
473
    : public DynCastPtrConverter<T, Decl> {};
474
475
template <typename T>
476
struct DynTypedNode::BaseConverter<
477
    T, std::enable_if_t<std::is_base_of<Stmt, T>::value>>
478
    : public DynCastPtrConverter<T, Stmt> {};
479
480
template <typename T>
481
struct DynTypedNode::BaseConverter<
482
    T, std::enable_if_t<std::is_base_of<Type, T>::value>>
483
    : public DynCastPtrConverter<T, Type> {};
484
485
template <typename T>
486
struct DynTypedNode::BaseConverter<
487
    T, std::enable_if_t<std::is_base_of<OMPClause, T>::value>>
488
    : public DynCastPtrConverter<T, OMPClause> {};
489
490
template <>
491
struct DynTypedNode::BaseConverter<
492
    NestedNameSpecifier, void> : public PtrConverter<NestedNameSpecifier> {};
493
494
template <>
495
struct DynTypedNode::BaseConverter<
496
    CXXCtorInitializer, void> : public PtrConverter<CXXCtorInitializer> {};
497
498
template <>
499
struct DynTypedNode::BaseConverter<
500
    TemplateArgument, void> : public ValueConverter<TemplateArgument> {};
501
502
template <>
503
struct DynTypedNode::BaseConverter<TemplateArgumentLoc, void>
504
    : public ValueConverter<TemplateArgumentLoc> {};
505
506
template <>
507
struct DynTypedNode::BaseConverter<
508
    TemplateName, void> : public ValueConverter<TemplateName> {};
509
510
template <>
511
struct DynTypedNode::BaseConverter<
512
    NestedNameSpecifierLoc,
513
    void> : public ValueConverter<NestedNameSpecifierLoc> {};
514
515
template <>
516
struct DynTypedNode::BaseConverter<QualType,
517
                                   void> : public ValueConverter<QualType> {};
518
519
template <>
520
struct DynTypedNode::BaseConverter<
521
    TypeLoc, void> : public ValueConverter<TypeLoc> {};
522
523
template <>
524
struct DynTypedNode::BaseConverter<CXXBaseSpecifier, void>
525
    : public PtrConverter<CXXBaseSpecifier> {};
526
527
// The only operation we allow on unsupported types is \c get.
528
// This allows to conveniently use \c DynTypedNode when having an arbitrary
529
// AST node that is not supported, but prevents misuse - a user cannot create
530
// a DynTypedNode from arbitrary types.
531
template <typename T, typename EnablerT> struct DynTypedNode::BaseConverter {
532
  static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
533
    return NULL;
534
  }
535
};
536
537
// Previously these types were defined in the clang::ast_type_traits namespace.
538
// Provide typedefs so that legacy code can be fixed asynchronously.
539
namespace ast_type_traits {
540
using DynTypedNode = ::clang::DynTypedNode;
541
using ASTNodeKind = ::clang::ASTNodeKind;
542
using TraversalKind = ::clang::TraversalKind;
543
544
constexpr TraversalKind TK_AsIs = ::clang::TK_AsIs;
545
constexpr TraversalKind TK_IgnoreImplicitCastsAndParentheses =
546
    ::clang::TK_IgnoreImplicitCastsAndParentheses;
547
constexpr TraversalKind TK_IgnoreUnlessSpelledInSource =
548
    ::clang::TK_IgnoreUnlessSpelledInSource;
549
} // namespace ast_type_traits
550
551
} // end namespace clang
552
553
namespace llvm {
554
555
template <>
556
struct DenseMapInfo<clang::ASTNodeKind> : clang::ASTNodeKind::DenseMapInfo {};
557
558
template <>
559
struct DenseMapInfo<clang::DynTypedNode> : clang::DynTypedNode::DenseMapInfo {};
560
561
}  // end namespace llvm
562
563
#endif