Coverage Report

Created: 2021-01-19 06:58

/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
  /// Ignore AST nodes not written in the source
44
  TK_IgnoreUnlessSpelledInSource
45
};
46
47
/// Kind identifier.
48
///
49
/// It can be constructed from any node kind and allows for runtime type
50
/// hierarchy checks.
51
/// Use getFromNodeKind<T>() to construct them.
52
class ASTNodeKind {
53
public:
54
  /// Empty identifier. It matches nothing.
55
2.67M
  ASTNodeKind() : KindId(NKI_None) {}
56
57
  /// Construct an identifier for T.
58
  template <class T>
59
5.85M
  static ASTNodeKind getFromNodeKind() {
60
5.85M
    return ASTNodeKind(KindToKindId<T>::Id);
61
5.85M
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::QualType>()
Line
Count
Source
59
783k
  static ASTNodeKind getFromNodeKind() {
60
783k
    return ASTNodeKind(KindToKindId<T>::Id);
61
783k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeLoc>()
Line
Count
Source
59
300k
  static ASTNodeKind getFromNodeKind() {
60
300k
    return ASTNodeKind(KindToKindId<T>::Id);
61
300k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifierLoc>()
Line
Count
Source
59
123k
  static ASTNodeKind getFromNodeKind() {
60
123k
    return ASTNodeKind(KindToKindId<T>::Id);
61
123k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Stmt>()
Line
Count
Source
59
694k
  static ASTNodeKind getFromNodeKind() {
60
694k
    return ASTNodeKind(KindToKindId<T>::Id);
61
694k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgument>()
Line
Count
Source
59
914
  static ASTNodeKind getFromNodeKind() {
60
914
    return ASTNodeKind(KindToKindId<T>::Id);
61
914
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgumentLoc>()
Line
Count
Source
59
503
  static ASTNodeKind getFromNodeKind() {
60
503
    return ASTNodeKind(KindToKindId<T>::Id);
61
503
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateName>()
Line
Count
Source
59
82
  static ASTNodeKind getFromNodeKind() {
60
82
    return ASTNodeKind(KindToKindId<T>::Id);
61
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifier>()
Line
Count
Source
59
3.65k
  static ASTNodeKind getFromNodeKind() {
60
3.65k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.65k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Type>()
Line
Count
Source
59
508k
  static ASTNodeKind getFromNodeKind() {
60
508k
    return ASTNodeKind(KindToKindId<T>::Id);
61
508k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCtorInitializer>()
Line
Count
Source
59
1.41k
  static ASTNodeKind getFromNodeKind() {
60
1.41k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.41k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPClause>()
Line
Count
Source
59
149
  static ASTNodeKind getFromNodeKind() {
60
149
    return ASTNodeKind(KindToKindId<T>::Id);
61
149
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Expr>()
Line
Count
Source
59
1.64M
  static ASTNodeKind getFromNodeKind() {
60
1.64M
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.64M
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Decl>()
Line
Count
Source
59
512k
  static ASTNodeKind getFromNodeKind() {
60
512k
    return ASTNodeKind(KindToKindId<T>::Id);
61
512k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclStmt>()
Line
Count
Source
59
20.7k
  static ASTNodeKind getFromNodeKind() {
60
20.7k
    return ASTNodeKind(KindToKindId<T>::Id);
61
20.7k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundStmt>()
Line
Count
Source
59
4.27k
  static ASTNodeKind getFromNodeKind() {
60
4.27k
    return ASTNodeKind(KindToKindId<T>::Id);
61
4.27k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockPointerType>()
Line
Count
Source
59
1.39k
  static ASTNodeKind getFromNodeKind() {
60
1.39k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.39k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefType>()
Line
Count
Source
59
1.19k
  static ASTNodeKind getFromNodeKind() {
60
1.19k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.19k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefDecl>()
Line
Count
Source
59
2.33k
  static ASTNodeKind getFromNodeKind() {
60
2.33k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.33k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordType>()
Line
Count
Source
59
657
  static ASTNodeKind getFromNodeKind() {
60
657
    return ASTNodeKind(KindToKindId<T>::Id);
61
657
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCObjectPointerType>()
Line
Count
Source
59
1.17k
  static ASTNodeKind getFromNodeKind() {
60
1.17k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.17k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAutoreleasePoolStmt>()
Line
Count
Source
59
2.73k
  static ASTNodeKind getFromNodeKind() {
60
2.73k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.73k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockDecl>()
Line
Count
Source
59
2.35k
  static ASTNodeKind getFromNodeKind() {
60
2.35k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.35k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PointerType>()
Line
Count
Source
59
2.07k
  static ASTNodeKind getFromNodeKind() {
60
2.07k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.07k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CStyleCastExpr>()
Line
Count
Source
59
219
  static ASTNodeKind getFromNodeKind() {
60
219
    return ASTNodeKind(KindToKindId<T>::Id);
61
219
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordDecl>()
Line
Count
Source
59
13.9k
  static ASTNodeKind getFromNodeKind() {
60
13.9k
    return ASTNodeKind(KindToKindId<T>::Id);
61
13.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConditionalOperator>()
Line
Count
Source
59
31.9k
  static ASTNodeKind getFromNodeKind() {
60
31.9k
    return ASTNodeKind(KindToKindId<T>::Id);
61
31.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarRefExpr>()
Line
Count
Source
59
211
  static ASTNodeKind getFromNodeKind() {
60
211
    return ASTNodeKind(KindToKindId<T>::Id);
61
211
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryOperator>()
Line
Count
Source
59
25.9k
  static ASTNodeKind getFromNodeKind() {
60
25.9k
    return ASTNodeKind(KindToKindId<T>::Id);
61
25.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IntegerLiteral>()
Line
Count
Source
59
3.51k
  static ASTNodeKind getFromNodeKind() {
60
3.51k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.51k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryOperator>()
Line
Count
Source
59
95.6k
  static ASTNodeKind getFromNodeKind() {
60
95.6k
    return ASTNodeKind(KindToKindId<T>::Id);
61
95.6k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GotoStmt>()
Line
Count
Source
59
584
  static ASTNodeKind getFromNodeKind() {
60
584
    return ASTNodeKind(KindToKindId<T>::Id);
61
584
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXOperatorCallExpr>()
Line
Count
Source
59
12.9k
  static ASTNodeKind getFromNodeKind() {
60
12.9k
    return ASTNodeKind(KindToKindId<T>::Id);
61
12.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReferenceType>()
Line
Count
Source
59
51.3k
  static ASTNodeKind getFromNodeKind() {
60
51.3k
    return ASTNodeKind(KindToKindId<T>::Id);
61
51.3k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMemberCallExpr>()
Line
Count
Source
59
3.77k
  static ASTNodeKind getFromNodeKind() {
60
3.77k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.77k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXRecordDecl>()
Line
Count
Source
59
49.5k
  static ASTNodeKind getFromNodeKind() {
60
49.5k
    return ASTNodeKind(KindToKindId<T>::Id);
61
49.5k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamedDecl>()
Line
Count
Source
59
103k
  static ASTNodeKind getFromNodeKind() {
60
103k
    return ASTNodeKind(KindToKindId<T>::Id);
61
103k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCInterfaceDecl>()
Line
Count
Source
59
9.11k
  static ASTNodeKind getFromNodeKind() {
60
9.11k
    return ASTNodeKind(KindToKindId<T>::Id);
61
9.11k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBaseSpecifier>()
Line
Count
Source
59
1.44k
  static ASTNodeKind getFromNodeKind() {
60
1.44k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.44k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CallExpr>()
Line
Count
Source
59
42.0k
  static ASTNodeKind getFromNodeKind() {
60
42.0k
    return ASTNodeKind(KindToKindId<T>::Id);
61
42.0k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionDecl>()
Line
Count
Source
59
31.4k
  static ASTNodeKind getFromNodeKind() {
60
31.4k
    return ASTNodeKind(KindToKindId<T>::Id);
61
31.4k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LambdaExpr>()
Line
Count
Source
59
2.81k
  static ASTNodeKind getFromNodeKind() {
60
2.81k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.81k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FieldDecl>()
Line
Count
Source
59
4.38k
  static ASTNodeKind getFromNodeKind() {
60
4.38k
    return ASTNodeKind(KindToKindId<T>::Id);
61
4.38k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateSpecializationDecl>()
Line
Count
Source
59
3.78k
  static ASTNodeKind getFromNodeKind() {
60
3.78k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.78k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InitListExpr>()
Line
Count
Source
59
17.1k
  static ASTNodeKind getFromNodeKind() {
60
17.1k
    return ASTNodeKind(KindToKindId<T>::Id);
61
17.1k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ForStmt>()
Line
Count
Source
59
2.78k
  static ASTNodeKind getFromNodeKind() {
60
2.78k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.78k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXForRangeStmt>()
Line
Count
Source
59
3.17k
  static ASTNodeKind getFromNodeKind() {
60
3.17k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.17k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DesignatedInitExpr>()
Line
Count
Source
59
337
  static ASTNodeKind getFromNodeKind() {
60
337
    return ASTNodeKind(KindToKindId<T>::Id);
61
337
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryExprOrTypeTraitExpr>()
Line
Count
Source
59
5.32k
  static ASTNodeKind getFromNodeKind() {
60
5.32k
    return ASTNodeKind(KindToKindId<T>::Id);
61
5.32k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDependentScopeMemberExpr>()
Line
Count
Source
59
1.89k
  static ASTNodeKind getFromNodeKind() {
60
1.89k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.89k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMessageExpr>()
Line
Count
Source
59
14.6k
  static ASTNodeKind getFromNodeKind() {
60
14.6k
    return ASTNodeKind(KindToKindId<T>::Id);
61
14.6k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMethodDecl>()
Line
Count
Source
59
2.61k
  static ASTNodeKind getFromNodeKind() {
60
2.61k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.61k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclaratorDecl>()
Line
Count
Source
59
219
  static ASTNodeKind getFromNodeKind() {
60
219
    return ASTNodeKind(KindToKindId<T>::Id);
61
219
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclRefExpr>()
Line
Count
Source
59
72.9k
  static ASTNodeKind getFromNodeKind() {
60
72.9k
    return ASTNodeKind(KindToKindId<T>::Id);
61
72.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OverloadExpr>()
Line
Count
Source
59
44
  static ASTNodeKind getFromNodeKind() {
60
44
    return ASTNodeKind(KindToKindId<T>::Id);
61
44
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VarDecl>()
Line
Count
Source
59
203k
  static ASTNodeKind getFromNodeKind() {
60
203k
    return ASTNodeKind(KindToKindId<T>::Id);
61
203k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCatchStmt>()
Line
Count
Source
59
269
  static ASTNodeKind getFromNodeKind() {
60
269
    return ASTNodeKind(KindToKindId<T>::Id);
61
269
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructorDecl>()
Line
Count
Source
59
11.5k
  static ASTNodeKind getFromNodeKind() {
60
11.5k
    return ASTNodeKind(KindToKindId<T>::Id);
61
11.5k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructExpr>()
Line
Count
Source
59
4.88k
  static ASTNodeKind getFromNodeKind() {
60
4.88k
    return ASTNodeKind(KindToKindId<T>::Id);
61
4.88k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParmVarDecl>()
Line
Count
Source
59
52.8k
  static ASTNodeKind getFromNodeKind() {
60
52.8k
    return ASTNodeKind(KindToKindId<T>::Id);
61
52.8k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IfStmt>()
Line
Count
Source
59
3.32k
  static ASTNodeKind getFromNodeKind() {
60
3.32k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.32k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArraySubscriptExpr>()
Line
Count
Source
59
2.05k
  static ASTNodeKind getFromNodeKind() {
60
2.05k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.05k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CastExpr>()
Line
Count
Source
59
42.2k
  static ASTNodeKind getFromNodeKind() {
60
42.2k
    return ASTNodeKind(KindToKindId<T>::Id);
61
42.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExplicitCastExpr>()
Line
Count
Source
59
3.30k
  static ASTNodeKind getFromNodeKind() {
60
3.30k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.30k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitCastExpr>()
Line
Count
Source
59
178k
  static ASTNodeKind getFromNodeKind() {
60
178k
    return ASTNodeKind(KindToKindId<T>::Id);
61
178k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagDecl>()
Line
Count
Source
59
568
  static ASTNodeKind getFromNodeKind() {
60
568
    return ASTNodeKind(KindToKindId<T>::Id);
61
568
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AbstractConditionalOperator>()
Line
Count
Source
59
17.2k
  static ASTNodeKind getFromNodeKind() {
60
17.2k
    return ASTNodeKind(KindToKindId<T>::Id);
61
17.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMethodDecl>()
Line
Count
Source
59
31.8k
  static ASTNodeKind getFromNodeKind() {
60
31.8k
    return ASTNodeKind(KindToKindId<T>::Id);
61
31.8k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberExpr>()
Line
Count
Source
59
3.40k
  static ASTNodeKind getFromNodeKind() {
60
3.40k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.40k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDecl>()
Line
Count
Source
59
220
  static ASTNodeKind getFromNodeKind() {
60
220
    return ASTNodeKind(KindToKindId<T>::Id);
61
220
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingShadowDecl>()
Line
Count
Source
59
118
  static ASTNodeKind getFromNodeKind() {
60
118
    return ASTNodeKind(KindToKindId<T>::Id);
61
118
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VariableArrayType>()
Line
Count
Source
59
1.20k
  static ASTNodeKind getFromNodeKind() {
60
1.20k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.20k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ElaboratedType>()
Line
Count
Source
59
228
  static ASTNodeKind getFromNodeKind() {
60
228
    return ASTNodeKind(KindToKindId<T>::Id);
61
228
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecayedType>()
Line
Count
Source
59
153
  static ASTNodeKind getFromNodeKind() {
60
153
    return ASTNodeKind(KindToKindId<T>::Id);
61
153
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchStmt>()
Line
Count
Source
59
917
  static ASTNodeKind getFromNodeKind() {
60
917
    return ASTNodeKind(KindToKindId<T>::Id);
61
917
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceDecl>()
Line
Count
Source
59
410
  static ASTNodeKind getFromNodeKind() {
60
410
    return ASTNodeKind(KindToKindId<T>::Id);
61
410
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CaseStmt>()
Line
Count
Source
59
142
  static ASTNodeKind getFromNodeKind() {
60
142
    return ASTNodeKind(KindToKindId<T>::Id);
61
142
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReturnStmt>()
Line
Count
Source
59
1.15k
  static ASTNodeKind getFromNodeKind() {
60
1.15k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.15k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNewExpr>()
Line
Count
Source
59
288
  static ASTNodeKind getFromNodeKind() {
60
288
    return ASTNodeKind(KindToKindId<T>::Id);
61
288
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumDecl>()
Line
Count
Source
59
3.27k
  static ASTNodeKind getFromNodeKind() {
60
3.27k
    return ASTNodeKind(KindToKindId<T>::Id);
61
3.27k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPExecutableDirective>()
Line
Count
Source
59
1.07k
  static ASTNodeKind getFromNodeKind() {
60
1.07k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.07k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPDefaultClause>()
Line
Count
Source
59
321
  static ASTNodeKind getFromNodeKind() {
60
321
    return ASTNodeKind(KindToKindId<T>::Id);
61
321
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TranslationUnitDecl>()
Line
Count
Source
59
2.60k
  static ASTNodeKind getFromNodeKind() {
60
2.60k
    return ASTNodeKind(KindToKindId<T>::Id);
61
2.60k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThisExpr>()
Line
Count
Source
59
304
  static ASTNodeKind getFromNodeKind() {
60
304
    return ASTNodeKind(KindToKindId<T>::Id);
61
304
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FriendDecl>()
Line
Count
Source
59
773
  static ASTNodeKind getFromNodeKind() {
60
773
    return ASTNodeKind(KindToKindId<T>::Id);
61
773
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefNameDecl>()
Line
Count
Source
59
1.46k
  static ASTNodeKind getFromNodeKind() {
60
1.46k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.46k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ValueDecl>()
Line
Count
Source
59
315
  static ASTNodeKind getFromNodeKind() {
60
315
    return ASTNodeKind(KindToKindId<T>::Id);
61
315
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CharacterLiteral>()
Line
Count
Source
59
293
  static ASTNodeKind getFromNodeKind() {
60
293
    return ASTNodeKind(KindToKindId<T>::Id);
61
293
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBoolLiteralExpr>()
Line
Count
Source
59
600
  static ASTNodeKind getFromNodeKind() {
60
600
    return ASTNodeKind(KindToKindId<T>::Id);
61
600
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FloatingLiteral>()
Line
Count
Source
59
669
  static ASTNodeKind getFromNodeKind() {
60
669
    return ASTNodeKind(KindToKindId<T>::Id);
61
669
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AccessSpecDecl>()
Line
Count
Source
59
196
  static ASTNodeKind getFromNodeKind() {
60
196
    return ASTNodeKind(KindToKindId<T>::Id);
61
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AddrLabelExpr>()
Line
Count
Source
59
130
  static ASTNodeKind getFromNodeKind() {
60
130
    return ASTNodeKind(KindToKindId<T>::Id);
61
130
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXUnresolvedConstructExpr>()
Line
Count
Source
59
495
  static ASTNodeKind getFromNodeKind() {
60
495
    return ASTNodeKind(KindToKindId<T>::Id);
61
495
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArrayType>()
Line
Count
Source
59
911
  static ASTNodeKind getFromNodeKind() {
60
911
    return ASTNodeKind(KindToKindId<T>::Id);
61
911
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AsmStmt>()
Line
Count
Source
59
88
  static ASTNodeKind getFromNodeKind() {
60
88
    return ASTNodeKind(KindToKindId<T>::Id);
61
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicExpr>()
Line
Count
Source
59
130
  static ASTNodeKind getFromNodeKind() {
60
130
    return ASTNodeKind(KindToKindId<T>::Id);
61
130
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicType>()
Line
Count
Source
59
207
  static ASTNodeKind getFromNodeKind() {
60
207
    return ASTNodeKind(KindToKindId<T>::Id);
61
207
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AutoType>()
Line
Count
Source
59
117
  static ASTNodeKind getFromNodeKind() {
60
117
    return ASTNodeKind(KindToKindId<T>::Id);
61
117
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryConditionalOperator>()
Line
Count
Source
59
28.2k
  static ASTNodeKind getFromNodeKind() {
60
28.2k
    return ASTNodeKind(KindToKindId<T>::Id);
61
28.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXRewrittenBinaryOperator>()
Line
Count
Source
59
1.72k
  static ASTNodeKind getFromNodeKind() {
60
1.72k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.72k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockExpr>()
Line
Count
Source
59
88
  static ASTNodeKind getFromNodeKind() {
60
88
    return ASTNodeKind(KindToKindId<T>::Id);
61
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BreakStmt>()
Line
Count
Source
59
88
  static ASTNodeKind getFromNodeKind() {
60
88
    return ASTNodeKind(KindToKindId<T>::Id);
61
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BuiltinType>()
Line
Count
Source
59
571
  static ASTNodeKind getFromNodeKind() {
60
571
    return ASTNodeKind(KindToKindId<T>::Id);
61
571
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ChooseExpr>()
Line
Count
Source
59
140
  static ASTNodeKind getFromNodeKind() {
60
140
    return ASTNodeKind(KindToKindId<T>::Id);
61
140
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateDecl>()
Line
Count
Source
59
5.97k
  static ASTNodeKind getFromNodeKind() {
60
5.97k
    return ASTNodeKind(KindToKindId<T>::Id);
61
5.97k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplatePartialSpecializationDecl>()
Line
Count
Source
59
138
  static ASTNodeKind getFromNodeKind() {
60
138
    return ASTNodeKind(KindToKindId<T>::Id);
61
138
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ComplexType>()
Line
Count
Source
59
196
  static ASTNodeKind getFromNodeKind() {
60
196
    return ASTNodeKind(KindToKindId<T>::Id);
61
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundLiteralExpr>()
Line
Count
Source
59
97
  static ASTNodeKind getFromNodeKind() {
60
97
    return ASTNodeKind(KindToKindId<T>::Id);
61
97
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantArrayType>()
Line
Count
Source
59
335
  static ASTNodeKind getFromNodeKind() {
60
335
    return ASTNodeKind(KindToKindId<T>::Id);
61
335
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantExpr>()
Line
Count
Source
59
82
  static ASTNodeKind getFromNodeKind() {
60
82
    return ASTNodeKind(KindToKindId<T>::Id);
61
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ContinueStmt>()
Line
Count
Source
59
88
  static ASTNodeKind getFromNodeKind() {
60
88
    return ASTNodeKind(KindToKindId<T>::Id);
61
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CUDAKernelCallExpr>()
Line
Count
Source
59
52
  static ASTNodeKind getFromNodeKind() {
60
52
    return ASTNodeKind(KindToKindId<T>::Id);
61
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBindTemporaryExpr>()
Line
Count
Source
59
76
  static ASTNodeKind getFromNodeKind() {
60
76
    return ASTNodeKind(KindToKindId<T>::Id);
61
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstCastExpr>()
Line
Count
Source
59
46
  static ASTNodeKind getFromNodeKind() {
60
46
    return ASTNodeKind(KindToKindId<T>::Id);
61
46
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConversionDecl>()
Line
Count
Source
59
153
  static ASTNodeKind getFromNodeKind() {
60
153
    return ASTNodeKind(KindToKindId<T>::Id);
61
153
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeductionGuideDecl>()
Line
Count
Source
59
305
  static ASTNodeKind getFromNodeKind() {
60
305
    return ASTNodeKind(KindToKindId<T>::Id);
61
305
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDefaultArgExpr>()
Line
Count
Source
59
85
  static ASTNodeKind getFromNodeKind() {
60
85
    return ASTNodeKind(KindToKindId<T>::Id);
61
85
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeleteExpr>()
Line
Count
Source
59
76
  static ASTNodeKind getFromNodeKind() {
60
76
    return ASTNodeKind(KindToKindId<T>::Id);
61
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDestructorDecl>()
Line
Count
Source
59
129
  static ASTNodeKind getFromNodeKind() {
60
129
    return ASTNodeKind(KindToKindId<T>::Id);
61
129
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDynamicCastExpr>()
Line
Count
Source
59
76
  static ASTNodeKind getFromNodeKind() {
60
76
    return ASTNodeKind(KindToKindId<T>::Id);
61
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXFunctionalCastExpr>()
Line
Count
Source
59
147
  static ASTNodeKind getFromNodeKind() {
60
147
    return ASTNodeKind(KindToKindId<T>::Id);
61
147
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNoexceptExpr>()
Line
Count
Source
59
1.08k
  static ASTNodeKind getFromNodeKind() {
60
1.08k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.08k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNullPtrLiteralExpr>()
Line
Count
Source
59
82
  static ASTNodeKind getFromNodeKind() {
60
82
    return ASTNodeKind(KindToKindId<T>::Id);
61
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXReinterpretCastExpr>()
Line
Count
Source
59
196
  static ASTNodeKind getFromNodeKind() {
60
196
    return ASTNodeKind(KindToKindId<T>::Id);
61
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStaticCastExpr>()
Line
Count
Source
59
198
  static ASTNodeKind getFromNodeKind() {
60
198
    return ASTNodeKind(KindToKindId<T>::Id);
61
198
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStdInitializerListExpr>()
Line
Count
Source
59
142
  static ASTNodeKind getFromNodeKind() {
60
142
    return ASTNodeKind(KindToKindId<T>::Id);
61
142
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTemporaryObjectExpr>()
Line
Count
Source
59
81
  static ASTNodeKind getFromNodeKind() {
60
81
    return ASTNodeKind(KindToKindId<T>::Id);
61
81
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThrowExpr>()
Line
Count
Source
59
166
  static ASTNodeKind getFromNodeKind() {
60
166
    return ASTNodeKind(KindToKindId<T>::Id);
61
166
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTryStmt>()
Line
Count
Source
59
76
  static ASTNodeKind getFromNodeKind() {
60
76
    return ASTNodeKind(KindToKindId<T>::Id);
61
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecompositionDecl>()
Line
Count
Source
59
46
  static ASTNodeKind getFromNodeKind() {
60
46
    return ASTNodeKind(KindToKindId<T>::Id);
61
46
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecltypeType>()
Line
Count
Source
59
117
  static ASTNodeKind getFromNodeKind() {
60
117
    return ASTNodeKind(KindToKindId<T>::Id);
61
117
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeducedTemplateSpecializationType>()
Line
Count
Source
59
58
  static ASTNodeKind getFromNodeKind() {
60
58
    return ASTNodeKind(KindToKindId<T>::Id);
61
58
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DefaultStmt>()
Line
Count
Source
59
49
  static ASTNodeKind getFromNodeKind() {
60
49
    return ASTNodeKind(KindToKindId<T>::Id);
61
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DependentSizedArrayType>()
Line
Count
Source
59
118
  static ASTNodeKind getFromNodeKind() {
60
118
    return ASTNodeKind(KindToKindId<T>::Id);
61
118
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DoStmt>()
Line
Count
Source
59
222
  static ASTNodeKind getFromNodeKind() {
60
222
    return ASTNodeKind(KindToKindId<T>::Id);
61
222
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumConstantDecl>()
Line
Count
Source
59
196
  static ASTNodeKind getFromNodeKind() {
60
196
    return ASTNodeKind(KindToKindId<T>::Id);
61
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumType>()
Line
Count
Source
59
166
  static ASTNodeKind getFromNodeKind() {
60
166
    return ASTNodeKind(KindToKindId<T>::Id);
61
166
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExprWithCleanups>()
Line
Count
Source
59
122
  static ASTNodeKind getFromNodeKind() {
60
122
    return ASTNodeKind(KindToKindId<T>::Id);
61
122
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchCase>()
Line
Count
Source
59
253
  static ASTNodeKind getFromNodeKind() {
60
253
    return ASTNodeKind(KindToKindId<T>::Id);
61
253
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionProtoType>()
Line
Count
Source
59
531
  static ASTNodeKind getFromNodeKind() {
60
531
    return ASTNodeKind(KindToKindId<T>::Id);
61
531
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionTemplateDecl>()
Line
Count
Source
59
4.42k
  static ASTNodeKind getFromNodeKind() {
60
4.42k
    return ASTNodeKind(KindToKindId<T>::Id);
61
4.42k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionType>()
Line
Count
Source
59
328
  static ASTNodeKind getFromNodeKind() {
60
328
    return ASTNodeKind(KindToKindId<T>::Id);
61
328
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GenericSelectionExpr>()
Line
Count
Source
59
494
  static ASTNodeKind getFromNodeKind() {
60
494
    return ASTNodeKind(KindToKindId<T>::Id);
61
494
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GNUNullExpr>()
Line
Count
Source
59
88
  static ASTNodeKind getFromNodeKind() {
60
88
    return ASTNodeKind(KindToKindId<T>::Id);
61
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StmtExpr>()
Line
Count
Source
59
147
  static ASTNodeKind getFromNodeKind() {
60
147
    return ASTNodeKind(KindToKindId<T>::Id);
61
147
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateSpecializationType>()
Line
Count
Source
59
281
  static ASTNodeKind getFromNodeKind() {
60
281
    return ASTNodeKind(KindToKindId<T>::Id);
61
281
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::WhileStmt>()
Line
Count
Source
59
235
  static ASTNodeKind getFromNodeKind() {
60
235
    return ASTNodeKind(KindToKindId<T>::Id);
61
235
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InjectedClassNameType>()
Line
Count
Source
59
76
  static ASTNodeKind getFromNodeKind() {
60
76
    return ASTNodeKind(KindToKindId<T>::Id);
61
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelStmt>()
Line
Count
Source
59
134
  static ASTNodeKind getFromNodeKind() {
60
134
    return ASTNodeKind(KindToKindId<T>::Id);
61
134
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagType>()
Line
Count
Source
59
70
  static ASTNodeKind getFromNodeKind() {
60
70
    return ASTNodeKind(KindToKindId<T>::Id);
61
70
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmType>()
Line
Count
Source
59
1.06k
  static ASTNodeKind getFromNodeKind() {
60
1.06k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.06k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingType>()
Line
Count
Source
59
24
  static ASTNodeKind getFromNodeKind() {
60
24
    return ASTNodeKind(KindToKindId<T>::Id);
61
24
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedMemberExpr>()
Line
Count
Source
59
1.53k
  static ASTNodeKind getFromNodeKind() {
60
1.53k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.53k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstTemplateTypeParmType>()
Line
Count
Source
59
136
  static ASTNodeKind getFromNodeKind() {
60
136
    return ASTNodeKind(KindToKindId<T>::Id);
61
136
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StringLiteral>()
Line
Count
Source
59
480
  static ASTNodeKind getFromNodeKind() {
60
480
    return ASTNodeKind(KindToKindId<T>::Id);
61
480
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OpaqueValueExpr>()
Line
Count
Source
59
143
  static ASTNodeKind getFromNodeKind() {
60
143
    return ASTNodeKind(KindToKindId<T>::Id);
61
143
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImaginaryLiteral>()
Line
Count
Source
59
58
  static ASTNodeKind getFromNodeKind() {
60
58
    return ASTNodeKind(KindToKindId<T>::Id);
61
58
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitValueInitExpr>()
Line
Count
Source
59
62
  static ASTNodeKind getFromNodeKind() {
60
62
    return ASTNodeKind(KindToKindId<T>::Id);
61
62
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IncompleteArrayType>()
Line
Count
Source
59
172
  static ASTNodeKind getFromNodeKind() {
60
172
    return ASTNodeKind(KindToKindId<T>::Id);
61
172
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IndirectFieldDecl>()
Line
Count
Source
59
62
  static ASTNodeKind getFromNodeKind() {
60
62
    return ASTNodeKind(KindToKindId<T>::Id);
61
62
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenType>()
Line
Count
Source
59
241
  static ASTNodeKind getFromNodeKind() {
60
241
    return ASTNodeKind(KindToKindId<T>::Id);
61
241
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LValueReferenceType>()
Line
Count
Source
59
202
  static ASTNodeKind getFromNodeKind() {
60
202
    return ASTNodeKind(KindToKindId<T>::Id);
61
202
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelDecl>()
Line
Count
Source
59
90
  static ASTNodeKind getFromNodeKind() {
60
90
    return ASTNodeKind(KindToKindId<T>::Id);
61
90
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LinkageSpecDecl>()
Line
Count
Source
59
106
  static ASTNodeKind getFromNodeKind() {
60
106
    return ASTNodeKind(KindToKindId<T>::Id);
61
106
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MaterializeTemporaryExpr>()
Line
Count
Source
59
100
  static ASTNodeKind getFromNodeKind() {
60
100
    return ASTNodeKind(KindToKindId<T>::Id);
61
100
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberPointerType>()
Line
Count
Source
59
196
  static ASTNodeKind getFromNodeKind() {
60
196
    return ASTNodeKind(KindToKindId<T>::Id);
61
196
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceAliasDecl>()
Line
Count
Source
59
66
  static ASTNodeKind getFromNodeKind() {
60
66
    return ASTNodeKind(KindToKindId<T>::Id);
61
66
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NonTypeTemplateParmDecl>()
Line
Count
Source
59
130
  static ASTNodeKind getFromNodeKind() {
60
130
    return ASTNodeKind(KindToKindId<T>::Id);
61
130
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NullStmt>()
Line
Count
Source
59
214
  static ASTNodeKind getFromNodeKind() {
60
214
    return ASTNodeKind(KindToKindId<T>::Id);
61
214
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtCatchStmt>()
Line
Count
Source
59
49
  static ASTNodeKind getFromNodeKind() {
60
49
    return ASTNodeKind(KindToKindId<T>::Id);
61
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryDecl>()
Line
Count
Source
59
48
  static ASTNodeKind getFromNodeKind() {
60
48
    return ASTNodeKind(KindToKindId<T>::Id);
61
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryImplDecl>()
Line
Count
Source
59
48
  static ASTNodeKind getFromNodeKind() {
60
48
    return ASTNodeKind(KindToKindId<T>::Id);
61
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtFinallyStmt>()
Line
Count
Source
59
49
  static ASTNodeKind getFromNodeKind() {
60
49
    return ASTNodeKind(KindToKindId<T>::Id);
61
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCImplementationDecl>()
Line
Count
Source
59
48
  static ASTNodeKind getFromNodeKind() {
60
48
    return ASTNodeKind(KindToKindId<T>::Id);
61
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarDecl>()
Line
Count
Source
59
48
  static ASTNodeKind getFromNodeKind() {
60
48
    return ASTNodeKind(KindToKindId<T>::Id);
61
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCPropertyDecl>()
Line
Count
Source
59
52
  static ASTNodeKind getFromNodeKind() {
60
52
    return ASTNodeKind(KindToKindId<T>::Id);
61
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCProtocolDecl>()
Line
Count
Source
59
48
  static ASTNodeKind getFromNodeKind() {
60
48
    return ASTNodeKind(KindToKindId<T>::Id);
61
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtThrowStmt>()
Line
Count
Source
59
49
  static ASTNodeKind getFromNodeKind() {
60
49
    return ASTNodeKind(KindToKindId<T>::Id);
61
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtTryStmt>()
Line
Count
Source
59
49
  static ASTNodeKind getFromNodeKind() {
60
49
    return ASTNodeKind(KindToKindId<T>::Id);
61
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenExpr>()
Line
Count
Source
59
222
  static ASTNodeKind getFromNodeKind() {
60
222
    return ASTNodeKind(KindToKindId<T>::Id);
61
222
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenListExpr>()
Line
Count
Source
59
420
  static ASTNodeKind getFromNodeKind() {
60
420
    return ASTNodeKind(KindToKindId<T>::Id);
61
420
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PredefinedExpr>()
Line
Count
Source
59
208
  static ASTNodeKind getFromNodeKind() {
60
208
    return ASTNodeKind(KindToKindId<T>::Id);
61
208
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RValueReferenceType>()
Line
Count
Source
59
202
  static ASTNodeKind getFromNodeKind() {
60
202
    return ASTNodeKind(KindToKindId<T>::Id);
61
202
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StaticAssertDecl>()
Line
Count
Source
59
68
  static ASTNodeKind getFromNodeKind() {
60
68
    return ASTNodeKind(KindToKindId<T>::Id);
61
68
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstNonTypeTemplateParmExpr>()
Line
Count
Source
59
108
  static ASTNodeKind getFromNodeKind() {
60
108
    return ASTNodeKind(KindToKindId<T>::Id);
61
108
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTemplateParmDecl>()
Line
Count
Source
59
128
  static ASTNodeKind getFromNodeKind() {
60
128
    return ASTNodeKind(KindToKindId<T>::Id);
61
128
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmDecl>()
Line
Count
Source
59
1.18k
  static ASTNodeKind getFromNodeKind() {
60
1.18k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.18k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasDecl>()
Line
Count
Source
59
138
  static ASTNodeKind getFromNodeKind() {
60
138
    return ASTNodeKind(KindToKindId<T>::Id);
61
138
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasTemplateDecl>()
Line
Count
Source
59
81
  static ASTNodeKind getFromNodeKind() {
60
81
    return ASTNodeKind(KindToKindId<T>::Id);
61
81
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryTransformType>()
Line
Count
Source
59
49
  static ASTNodeKind getFromNodeKind() {
60
49
    return ASTNodeKind(KindToKindId<T>::Id);
61
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedLookupExpr>()
Line
Count
Source
59
1.07k
  static ASTNodeKind getFromNodeKind() {
60
1.07k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.07k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingTypenameDecl>()
Line
Count
Source
59
48
  static ASTNodeKind getFromNodeKind() {
60
48
    return ASTNodeKind(KindToKindId<T>::Id);
61
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingValueDecl>()
Line
Count
Source
59
51
  static ASTNodeKind getFromNodeKind() {
60
51
    return ASTNodeKind(KindToKindId<T>::Id);
61
51
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UserDefinedLiteral>()
Line
Count
Source
59
70
  static ASTNodeKind getFromNodeKind() {
60
70
    return ASTNodeKind(KindToKindId<T>::Id);
61
70
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDirectiveDecl>()
Line
Count
Source
59
109
  static ASTNodeKind getFromNodeKind() {
60
109
    return ASTNodeKind(KindToKindId<T>::Id);
61
109
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTypeidExpr>()
Line
Count
Source
59
1.37k
  static ASTNodeKind getFromNodeKind() {
60
1.37k
    return ASTNodeKind(KindToKindId<T>::Id);
61
1.37k
  }
62
63
  /// \{
64
  /// Construct an identifier for the dynamic type of the node
65
  static ASTNodeKind getFromNode(const Decl &D);
66
  static ASTNodeKind getFromNode(const Stmt &S);
67
  static ASTNodeKind getFromNode(const Type &T);
68
  static ASTNodeKind getFromNode(const OMPClause &C);
69
  /// \}
70
71
  /// Returns \c true if \c this and \c Other represent the same kind.
72
2.22M
  bool isSame(ASTNodeKind Other) const {
73
2.22M
    return KindId != NKI_None && 
KindId == Other.KindId2.22M
;
74
2.22M
  }
75
76
  /// Returns \c true only for the default \c ASTNodeKind()
77
644
  bool isNone() const { return KindId == NKI_None; }
78
79
  /// Returns \c true if \c this is a base kind of (or same as) \c Other.
80
  /// \param Distance If non-null, used to return the distance between \c this
81
  /// and \c Other in the class hierarchy.
82
  bool isBaseOf(ASTNodeKind Other, unsigned *Distance = nullptr) const;
83
84
  /// String representation of the kind.
85
  StringRef asStringRef() const;
86
87
  /// Strict weak ordering for ASTNodeKind.
88
511k
  bool operator<(const ASTNodeKind &Other) const {
89
511k
    return KindId < Other.KindId;
90
511k
  }
91
92
  /// Return the most derived type between \p Kind1 and \p Kind2.
93
  ///
94
  /// Return ASTNodeKind() if they are not related.
95
  static ASTNodeKind getMostDerivedType(ASTNodeKind Kind1, ASTNodeKind Kind2);
96
97
  /// Return the most derived common ancestor between Kind1 and Kind2.
98
  ///
99
  /// Return ASTNodeKind() if they are not related.
100
  static ASTNodeKind getMostDerivedCommonAncestor(ASTNodeKind Kind1,
101
                                                  ASTNodeKind Kind2);
102
103
  /// Hooks for using ASTNodeKind as a key in a DenseMap.
104
  struct DenseMapInfo {
105
    // ASTNodeKind() is a good empty key because it is represented as a 0.
106
1.27M
    static inline ASTNodeKind getEmptyKey() { return ASTNodeKind(); }
107
    // NKI_NumberOfKinds is not a valid value, so it is good for a
108
    // tombstone key.
109
1.03M
    static inline ASTNodeKind getTombstoneKey() {
110
1.03M
      return ASTNodeKind(NKI_NumberOfKinds);
111
1.03M
    }
112
507k
    static unsigned getHashValue(const ASTNodeKind &Val) { return Val.KindId; }
113
5.93M
    static bool isEqual(const ASTNodeKind &LHS, const ASTNodeKind &RHS) {
114
5.93M
      return LHS.KindId == RHS.KindId;
115
5.93M
    }
116
  };
117
118
  /// Check if the given ASTNodeKind identifies a type that offers pointer
119
  /// identity. This is useful for the fast path in DynTypedNode.
120
416k
  bool hasPointerIdentity() const {
121
416k
    return KindId > NKI_LastKindWithoutPointerIdentity;
122
416k
  }
123
124
private:
125
  /// Kind ids.
126
  ///
127
  /// Includes all possible base and derived kinds.
128
  enum NodeKindId {
129
    NKI_None,
130
    NKI_TemplateArgument,
131
    NKI_TemplateArgumentLoc,
132
    NKI_TemplateName,
133
    NKI_NestedNameSpecifierLoc,
134
    NKI_QualType,
135
    NKI_TypeLoc,
136
    NKI_LastKindWithoutPointerIdentity = NKI_TypeLoc,
137
    NKI_CXXBaseSpecifier,
138
    NKI_CXXCtorInitializer,
139
    NKI_NestedNameSpecifier,
140
    NKI_Decl,
141
#define DECL(DERIVED, BASE) NKI_##DERIVED##Decl,
142
#include "clang/AST/DeclNodes.inc"
143
    NKI_Stmt,
144
#define STMT(DERIVED, BASE) NKI_##DERIVED,
145
#include "clang/AST/StmtNodes.inc"
146
    NKI_Type,
147
#define TYPE(DERIVED, BASE) NKI_##DERIVED##Type,
148
#include "clang/AST/TypeNodes.inc"
149
    NKI_OMPClause,
150
#define GEN_CLANG_CLAUSE_CLASS
151
#define CLAUSE_CLASS(Enum, Str, Class) NKI_##Class,
152
#include "llvm/Frontend/OpenMP/OMP.inc"
153
    NKI_NumberOfKinds
154
  };
155
156
  /// Use getFromNodeKind<T>() to construct the kind.
157
7.92M
  ASTNodeKind(NodeKindId KindId) : KindId(KindId) {}
158
159
  /// Returns \c true if \c Base is a base kind of (or same as) \c
160
  ///   Derived.
161
  /// \param Distance If non-null, used to return the distance between \c Base
162
  /// and \c Derived in the class hierarchy.
163
  static bool isBaseOf(NodeKindId Base, NodeKindId Derived, unsigned *Distance);
164
165
  /// Helper meta-function to convert a kind T to its enum value.
166
  ///
167
  /// This struct is specialized below for all known kinds.
168
  template <class T> struct KindToKindId {
169
    static const NodeKindId Id = NKI_None;
170
  };
171
  template <class T>
172
  struct KindToKindId<const T> : KindToKindId<T> {};
173
174
  /// Per kind info.
175
  struct KindInfo {
176
    /// The id of the parent kind, or None if it has no parent.
177
    NodeKindId ParentId;
178
    /// Name of the kind.
179
    const char *Name;
180
  };
181
  static const KindInfo AllKindInfo[NKI_NumberOfKinds];
182
183
  NodeKindId KindId;
184
};
185
186
#define KIND_TO_KIND_ID(Class)                                                 \
187
  template <> struct ASTNodeKind::KindToKindId<Class> {                        \
188
    static const NodeKindId Id = NKI_##Class;                                  \
189
  };
190
KIND_TO_KIND_ID(CXXCtorInitializer)
191
KIND_TO_KIND_ID(TemplateArgument)
192
KIND_TO_KIND_ID(TemplateArgumentLoc)
193
KIND_TO_KIND_ID(TemplateName)
194
KIND_TO_KIND_ID(NestedNameSpecifier)
195
KIND_TO_KIND_ID(NestedNameSpecifierLoc)
196
KIND_TO_KIND_ID(QualType)
197
KIND_TO_KIND_ID(TypeLoc)
198
KIND_TO_KIND_ID(Decl)
199
KIND_TO_KIND_ID(Stmt)
200
KIND_TO_KIND_ID(Type)
201
KIND_TO_KIND_ID(OMPClause)
202
KIND_TO_KIND_ID(CXXBaseSpecifier)
203
#define DECL(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Decl)
204
#include "clang/AST/DeclNodes.inc"
205
#define STMT(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED)
206
#include "clang/AST/StmtNodes.inc"
207
#define TYPE(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Type)
208
#include "clang/AST/TypeNodes.inc"
209
#define GEN_CLANG_CLAUSE_CLASS
210
#define CLAUSE_CLASS(Enum, Str, Class) KIND_TO_KIND_ID(Class)
211
#include "llvm/Frontend/OpenMP/OMP.inc"
212
#undef KIND_TO_KIND_ID
213
214
1.44k
inline raw_ostream &operator<<(raw_ostream &OS, ASTNodeKind K) {
215
1.44k
  OS << K.asStringRef();
216
1.44k
  return OS;
217
1.44k
}
218
219
/// A dynamically typed AST node container.
220
///
221
/// Stores an AST node in a type safe way. This allows writing code that
222
/// works with different kinds of AST nodes, despite the fact that they don't
223
/// have a common base class.
224
///
225
/// Use \c create(Node) to create a \c DynTypedNode from an AST node,
226
/// and \c get<T>() to retrieve the node as type T if the types match.
227
///
228
/// See \c ASTNodeKind for which node base types are currently supported;
229
/// You can create DynTypedNodes for all nodes in the inheritance hierarchy of
230
/// the supported base types.
231
class DynTypedNode {
232
public:
233
  /// Creates a \c DynTypedNode from \c Node.
234
  template <typename T>
235
1.16M
  static DynTypedNode create(const T &Node) {
236
1.16M
    return BaseConverter<T>::create(Node);
237
1.16M
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Decl>(clang::Decl const&)
Line
Count
Source
235
336k
  static DynTypedNode create(const T &Node) {
236
336k
    return BaseConverter<T>::create(Node);
237
336k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Stmt>(clang::Stmt const&)
Line
Count
Source
235
233k
  static DynTypedNode create(const T &Node) {
236
233k
    return BaseConverter<T>::create(Node);
237
233k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Expr>(clang::Expr const&)
Line
Count
Source
235
393k
  static DynTypedNode create(const T &Node) {
236
393k
    return BaseConverter<T>::create(Node);
237
393k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TypeLoc>(clang::TypeLoc const&)
Line
Count
Source
235
69.6k
  static DynTypedNode create(const T &Node) {
236
69.6k
    return BaseConverter<T>::create(Node);
237
69.6k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifierLoc>(clang::NestedNameSpecifierLoc const&)
Line
Count
Source
235
22.6k
  static DynTypedNode create(const T &Node) {
236
22.6k
    return BaseConverter<T>::create(Node);
237
22.6k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TranslationUnitDecl>(clang::TranslationUnitDecl const&)
Line
Count
Source
235
413
  static DynTypedNode create(const T &Node) {
236
413
    return BaseConverter<T>::create(Node);
237
413
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::EnumConstantDecl>(clang::EnumConstantDecl const&)
Line
Count
Source
235
15
  static DynTypedNode create(const T &Node) {
236
15
    return BaseConverter<T>::create(Node);
237
15
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclRefExpr>(clang::DeclRefExpr const&)
Line
Count
Source
235
59
  static DynTypedNode create(const T &Node) {
236
59
    return BaseConverter<T>::create(Node);
237
59
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CompoundStmt>(clang::CompoundStmt const&)
Line
Count
Source
235
444
  static DynTypedNode create(const T &Node) {
236
444
    return BaseConverter<T>::create(Node);
237
444
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::UnaryOperator>(clang::UnaryOperator const&)
Line
Count
Source
235
33
  static DynTypedNode create(const T &Node) {
236
33
    return BaseConverter<T>::create(Node);
237
33
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ExplicitCastExpr>(clang::ExplicitCastExpr const&)
Line
Count
Source
235
110
  static DynTypedNode create(const T &Node) {
236
110
    return BaseConverter<T>::create(Node);
237
110
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCAutoreleasePoolStmt>(clang::ObjCAutoreleasePoolStmt const&)
Line
Count
Source
235
25
  static DynTypedNode create(const T &Node) {
236
25
    return BaseConverter<T>::create(Node);
237
25
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMethodDecl>(clang::ObjCMethodDecl const&)
Line
Count
Source
235
18
  static DynTypedNode create(const T &Node) {
236
18
    return BaseConverter<T>::create(Node);
237
18
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::BlockDecl>(clang::BlockDecl const&)
Line
Count
Source
235
1
  static DynTypedNode create(const T &Node) {
236
1
    return BaseConverter<T>::create(Node);
237
1
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMessageExpr>(clang::ObjCMessageExpr const&)
Line
Count
Source
235
35
  static DynTypedNode create(const T &Node) {
236
35
    return BaseConverter<T>::create(Node);
237
35
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::InitListExpr>(clang::InitListExpr const&)
Line
Count
Source
235
156
  static DynTypedNode create(const T &Node) {
236
156
    return BaseConverter<T>::create(Node);
237
156
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCInterfaceDecl>(clang::ObjCInterfaceDecl const&)
Line
Count
Source
235
2.35k
  static DynTypedNode create(const T &Node) {
236
2.35k
    return BaseConverter<T>::create(Node);
237
2.35k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ClassTemplateDecl>(clang::ClassTemplateDecl const&)
Line
Count
Source
235
144
  static DynTypedNode create(const T &Node) {
236
144
    return BaseConverter<T>::create(Node);
237
144
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::QualType>(clang::QualType const&)
Line
Count
Source
235
49.0k
  static DynTypedNode create(const T &Node) {
236
49.0k
    return BaseConverter<T>::create(Node);
237
49.0k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateName>(clang::TemplateName const&)
Line
Count
Source
235
2
  static DynTypedNode create(const T &Node) {
236
2
    return BaseConverter<T>::create(Node);
237
2
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::VarDecl>(clang::VarDecl const&)
Line
Count
Source
235
990
  static DynTypedNode create(const T &Node) {
236
990
    return BaseConverter<T>::create(Node);
237
990
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXBaseSpecifier>(clang::CXXBaseSpecifier const&)
Line
Count
Source
235
520
  static DynTypedNode create(const T &Node) {
236
520
    return BaseConverter<T>::create(Node);
237
520
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NamedDecl>(clang::NamedDecl const&)
Line
Count
Source
235
5.77k
  static DynTypedNode create(const T &Node) {
236
5.77k
    return BaseConverter<T>::create(Node);
237
5.77k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Type>(clang::Type const&)
Line
Count
Source
235
40.3k
  static DynTypedNode create(const T &Node) {
236
40.3k
    return BaseConverter<T>::create(Node);
237
40.3k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMemberCallExpr>(clang::CXXMemberCallExpr const&)
Line
Count
Source
235
188
  static DynTypedNode create(const T &Node) {
236
188
    return BaseConverter<T>::create(Node);
237
188
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::UsingShadowDecl>(clang::UsingShadowDecl const&)
Line
Count
Source
235
30
  static DynTypedNode create(const T &Node) {
236
30
    return BaseConverter<T>::create(Node);
237
30
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::FieldDecl>(clang::FieldDecl const&)
Line
Count
Source
235
201
  static DynTypedNode create(const T &Node) {
236
201
    return BaseConverter<T>::create(Node);
237
201
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclStmt>(clang::DeclStmt const&)
Line
Count
Source
235
162
  static DynTypedNode create(const T &Node) {
236
162
    return BaseConverter<T>::create(Node);
237
162
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXRecordDecl>(clang::CXXRecordDecl const&)
Line
Count
Source
235
7.38k
  static DynTypedNode create(const T &Node) {
236
7.38k
    return BaseConverter<T>::create(Node);
237
7.38k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMethodDecl>(clang::CXXMethodDecl const&)
Line
Count
Source
235
662
  static DynTypedNode create(const T &Node) {
236
662
    return BaseConverter<T>::create(Node);
237
662
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ValueDecl>(clang::ValueDecl const&)
Line
Count
Source
235
73
  static DynTypedNode create(const T &Node) {
236
73
    return BaseConverter<T>::create(Node);
237
73
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifier>(clang::NestedNameSpecifier const&)
Line
Count
Source
235
940
  static DynTypedNode create(const T &Node) {
236
940
    return BaseConverter<T>::create(Node);
237
940
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NamespaceDecl>(clang::NamespaceDecl const&)
Line
Count
Source
235
73
  static DynTypedNode create(const T &Node) {
236
73
    return BaseConverter<T>::create(Node);
237
73
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::SwitchCase>(clang::SwitchCase const&)
Line
Count
Source
235
23
  static DynTypedNode create(const T &Node) {
236
23
    return BaseConverter<T>::create(Node);
237
23
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXCtorInitializer>(clang::CXXCtorInitializer const&)
Line
Count
Source
235
347
  static DynTypedNode create(const T &Node) {
236
347
    return BaseConverter<T>::create(Node);
237
347
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::FunctionDecl>(clang::FunctionDecl const&)
Line
Count
Source
235
1.89k
  static DynTypedNode create(const T &Node) {
236
1.89k
    return BaseConverter<T>::create(Node);
237
1.89k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::OMPClause>(clang::OMPClause const&)
Line
Count
Source
235
352
  static DynTypedNode create(const T &Node) {
236
352
    return BaseConverter<T>::create(Node);
237
352
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ParmVarDecl>(clang::ParmVarDecl const&)
Line
Count
Source
235
671
  static DynTypedNode create(const T &Node) {
236
671
    return BaseConverter<T>::create(Node);
237
671
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgumentLoc>(clang::TemplateArgumentLoc const&)
Line
Count
Source
235
470
  static DynTypedNode create(const T &Node) {
236
470
    return BaseConverter<T>::create(Node);
237
470
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgument>(clang::TemplateArgument const&)
Line
Count
Source
235
265
  static DynTypedNode create(const T &Node) {
236
265
    return BaseConverter<T>::create(Node);
237
265
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CastExpr>(clang::CastExpr const&)
Line
Count
Source
235
42
  static DynTypedNode create(const T &Node) {
236
42
    return BaseConverter<T>::create(Node);
237
42
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ParenListExpr>(clang::ParenListExpr const&)
Line
Count
Source
235
30
  static DynTypedNode create(const T &Node) {
236
30
    return BaseConverter<T>::create(Node);
237
30
  }
238
239
  /// Retrieve the stored node as type \c T.
240
  ///
241
  /// Returns NULL if the stored node does not have a type that is
242
  /// convertible to \c T.
243
  ///
244
  /// For types that have identity via their pointer in the AST
245
  /// (like \c Stmt, \c Decl, \c Type and \c NestedNameSpecifier) the returned
246
  /// pointer points to the referenced AST node.
247
  /// For other types (like \c QualType) the value is stored directly
248
  /// in the \c DynTypedNode, and the returned pointer points at
249
  /// the storage inside DynTypedNode. For those nodes, do not
250
  /// use the pointer outside the scope of the DynTypedNode.
251
954k
  template <typename T> const T *get() const {
252
954k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
954k
  }
clang::Stmt const* clang::DynTypedNode::get<clang::Stmt>() const
Line
Count
Source
251
56.2k
  template <typename T> const T *get() const {
252
56.2k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
56.2k
  }
clang::TemplateArgument const* clang::DynTypedNode::get<clang::TemplateArgument>() const
Line
Count
Source
251
9
  template <typename T> const T *get() const {
252
9
    return BaseConverter<T>::get(NodeKind, &Storage);
253
9
  }
clang::TemplateArgumentLoc const* clang::DynTypedNode::get<clang::TemplateArgumentLoc>() const
Line
Count
Source
251
26
  template <typename T> const T *get() const {
252
26
    return BaseConverter<T>::get(NodeKind, &Storage);
253
26
  }
clang::TemplateName const* clang::DynTypedNode::get<clang::TemplateName>() const
Line
Count
Source
251
8
  template <typename T> const T *get() const {
252
8
    return BaseConverter<T>::get(NodeKind, &Storage);
253
8
  }
clang::NestedNameSpecifier const* clang::DynTypedNode::get<clang::NestedNameSpecifier>() const
Line
Count
Source
251
347
  template <typename T> const T *get() const {
252
347
    return BaseConverter<T>::get(NodeKind, &Storage);
253
347
  }
clang::NestedNameSpecifierLoc const* clang::DynTypedNode::get<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
251
5.62k
  template <typename T> const T *get() const {
252
5.62k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
5.62k
  }
clang::QualType const* clang::DynTypedNode::get<clang::QualType>() const
Line
Count
Source
251
264
  template <typename T> const T *get() const {
252
264
    return BaseConverter<T>::get(NodeKind, &Storage);
253
264
  }
clang::TypeLoc const* clang::DynTypedNode::get<clang::TypeLoc>() const
Line
Count
Source
251
5.53k
  template <typename T> const T *get() const {
252
5.53k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
5.53k
  }
clang::Type const* clang::DynTypedNode::get<clang::Type>() const
Line
Count
Source
251
62
  template <typename T> const T *get() const {
252
62
    return BaseConverter<T>::get(NodeKind, &Storage);
253
62
  }
clang::CXXCtorInitializer const* clang::DynTypedNode::get<clang::CXXCtorInitializer>() const
Line
Count
Source
251
360
  template <typename T> const T *get() const {
252
360
    return BaseConverter<T>::get(NodeKind, &Storage);
253
360
  }
clang::OMPClause const* clang::DynTypedNode::get<clang::OMPClause>() const
Line
Count
Source
251
1
  template <typename T> const T *get() const {
252
1
    return BaseConverter<T>::get(NodeKind, &Storage);
253
1
  }
clang::Expr const* clang::DynTypedNode::get<clang::Expr>() const
Line
Count
Source
251
765k
  template <typename T> const T *get() const {
252
765k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
765k
  }
clang::Decl const* clang::DynTypedNode::get<clang::Decl>() const
Line
Count
Source
251
107k
  template <typename T> const T *get() const {
252
107k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
107k
  }
clang::DeclStmt const* clang::DynTypedNode::get<clang::DeclStmt>() const
Line
Count
Source
251
300
  template <typename T> const T *get() const {
252
300
    return BaseConverter<T>::get(NodeKind, &Storage);
253
300
  }
clang::CompoundStmt const* clang::DynTypedNode::get<clang::CompoundStmt>() const
Line
Count
Source
251
104
  template <typename T> const T *get() const {
252
104
    return BaseConverter<T>::get(NodeKind, &Storage);
253
104
  }
clang::CallExpr const* clang::DynTypedNode::get<clang::CallExpr>() const
Line
Count
Source
251
129
  template <typename T> const T *get() const {
252
129
    return BaseConverter<T>::get(NodeKind, &Storage);
253
129
  }
clang::ParmVarDecl const* clang::DynTypedNode::get<clang::ParmVarDecl>() const
Line
Count
Source
251
88
  template <typename T> const T *get() const {
252
88
    return BaseConverter<T>::get(NodeKind, &Storage);
253
88
  }
clang::ObjCMethodDecl const* clang::DynTypedNode::get<clang::ObjCMethodDecl>() const
Line
Count
Source
251
17
  template <typename T> const T *get() const {
252
17
    return BaseConverter<T>::get(NodeKind, &Storage);
253
17
  }
clang::ObjCAutoreleasePoolStmt const* clang::DynTypedNode::get<clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
251
17
  template <typename T> const T *get() const {
252
17
    return BaseConverter<T>::get(NodeKind, &Storage);
253
17
  }
clang::CastExpr const* clang::DynTypedNode::get<clang::CastExpr>() const
Line
Count
Source
251
1
  template <typename T> const T *get() const {
252
1
    return BaseConverter<T>::get(NodeKind, &Storage);
253
1
  }
clang::CXXRecordDecl const* clang::DynTypedNode::get<clang::CXXRecordDecl>() const
Line
Count
Source
251
853
  template <typename T> const T *get() const {
252
853
    return BaseConverter<T>::get(NodeKind, &Storage);
253
853
  }
clang::ObjCMessageExpr const* clang::DynTypedNode::get<clang::ObjCMessageExpr>() const
Line
Count
Source
251
18
  template <typename T> const T *get() const {
252
18
    return BaseConverter<T>::get(NodeKind, &Storage);
253
18
  }
clang::MemberExpr const* clang::DynTypedNode::get<clang::MemberExpr>() const
Line
Count
Source
251
27
  template <typename T> const T *get() const {
252
27
    return BaseConverter<T>::get(NodeKind, &Storage);
253
27
  }
clang::ForStmt const* clang::DynTypedNode::get<clang::ForStmt>() const
Line
Count
Source
251
24
  template <typename T> const T *get() const {
252
24
    return BaseConverter<T>::get(NodeKind, &Storage);
253
24
  }
clang::IfStmt const* clang::DynTypedNode::get<clang::IfStmt>() const
Line
Count
Source
251
175
  template <typename T> const T *get() const {
252
175
    return BaseConverter<T>::get(NodeKind, &Storage);
253
175
  }
clang::CXXForRangeStmt const* clang::DynTypedNode::get<clang::CXXForRangeStmt>() const
Line
Count
Source
251
22
  template <typename T> const T *get() const {
252
22
    return BaseConverter<T>::get(NodeKind, &Storage);
253
22
  }
clang::ObjCIvarRefExpr const* clang::DynTypedNode::get<clang::ObjCIvarRefExpr>() const
Line
Count
Source
251
2
  template <typename T> const T *get() const {
252
2
    return BaseConverter<T>::get(NodeKind, &Storage);
253
2
  }
clang::IntegerLiteral const* clang::DynTypedNode::get<clang::IntegerLiteral>() const
Line
Count
Source
251
245
  template <typename T> const T *get() const {
252
245
    return BaseConverter<T>::get(NodeKind, &Storage);
253
245
  }
clang::BinaryOperator const* clang::DynTypedNode::get<clang::BinaryOperator>() const
Line
Count
Source
251
114
  template <typename T> const T *get() const {
252
114
    return BaseConverter<T>::get(NodeKind, &Storage);
253
114
  }
clang::VarDecl const* clang::DynTypedNode::get<clang::VarDecl>() const
Line
Count
Source
251
1.45k
  template <typename T> const T *get() const {
252
1.45k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
1.45k
  }
clang::NamedDecl const* clang::DynTypedNode::get<clang::NamedDecl>() const
Line
Count
Source
251
1.15k
  template <typename T> const T *get() const {
252
1.15k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
1.15k
  }
clang::FunctionDecl const* clang::DynTypedNode::get<clang::FunctionDecl>() const
Line
Count
Source
251
5.07k
  template <typename T> const T *get() const {
252
5.07k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
5.07k
  }
clang::LambdaExpr const* clang::DynTypedNode::get<clang::LambdaExpr>() const
Line
Count
Source
251
2.17k
  template <typename T> const T *get() const {
252
2.17k
    return BaseConverter<T>::get(NodeKind, &Storage);
253
2.17k
  }
clang::TranslationUnitDecl const* clang::DynTypedNode::get<clang::TranslationUnitDecl>() const
Line
Count
Source
251
887
  template <typename T> const T *get() const {
252
887
    return BaseConverter<T>::get(NodeKind, &Storage);
253
887
  }
clang::CXXThisExpr const* clang::DynTypedNode::get<clang::CXXThisExpr>() const
Line
Count
Source
251
146
  template <typename T> const T *get() const {
252
146
    return BaseConverter<T>::get(NodeKind, &Storage);
253
146
  }
clang::DeclRefExpr const* clang::DynTypedNode::get<clang::DeclRefExpr>() const
Line
Count
Source
251
117
  template <typename T> const T *get() const {
252
117
    return BaseConverter<T>::get(NodeKind, &Storage);
253
117
  }
clang::InitListExpr const* clang::DynTypedNode::get<clang::InitListExpr>() const
Line
Count
Source
251
5
  template <typename T> const T *get() const {
252
5
    return BaseConverter<T>::get(NodeKind, &Storage);
253
5
  }
254
255
  /// Retrieve the stored node as type \c T.
256
  ///
257
  /// Similar to \c get(), but asserts that the type is what we are expecting.
258
  template <typename T>
259
339k
  const T &getUnchecked() const {
260
339k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
339k
  }
clang::QualType const& clang::DynTypedNode::getUnchecked<clang::QualType>() const
Line
Count
Source
259
33.0k
  const T &getUnchecked() const {
260
33.0k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
33.0k
  }
clang::TypeLoc const& clang::DynTypedNode::getUnchecked<clang::TypeLoc>() const
Line
Count
Source
259
76.1k
  const T &getUnchecked() const {
260
76.1k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
76.1k
  }
clang::NestedNameSpecifierLoc const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
259
1.44k
  const T &getUnchecked() const {
260
1.44k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
1.44k
  }
clang::IntegerLiteral const& clang::DynTypedNode::getUnchecked<clang::IntegerLiteral>() const
Line
Count
Source
259
799
  const T &getUnchecked() const {
260
799
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
799
  }
clang::TypedefType const& clang::DynTypedNode::getUnchecked<clang::TypedefType>() const
Line
Count
Source
259
305
  const T &getUnchecked() const {
260
305
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
305
  }
clang::RecordType const& clang::DynTypedNode::getUnchecked<clang::RecordType>() const
Line
Count
Source
259
255
  const T &getUnchecked() const {
260
255
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
255
  }
clang::ObjCObjectPointerType const& clang::DynTypedNode::getUnchecked<clang::ObjCObjectPointerType>() const
Line
Count
Source
259
120
  const T &getUnchecked() const {
260
120
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
120
  }
clang::ConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::ConditionalOperator>() const
Line
Count
Source
259
79
  const T &getUnchecked() const {
260
79
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
79
  }
clang::ObjCAutoreleasePoolStmt const& clang::DynTypedNode::getUnchecked<clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
259
25
  const T &getUnchecked() const {
260
25
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
25
  }
clang::BlockDecl const& clang::DynTypedNode::getUnchecked<clang::BlockDecl>() const
Line
Count
Source
259
29
  const T &getUnchecked() const {
260
29
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
29
  }
clang::PointerType const& clang::DynTypedNode::getUnchecked<clang::PointerType>() const
Line
Count
Source
259
698
  const T &getUnchecked() const {
260
698
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
698
  }
clang::CStyleCastExpr const& clang::DynTypedNode::getUnchecked<clang::CStyleCastExpr>() const
Line
Count
Source
259
40
  const T &getUnchecked() const {
260
40
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
40
  }
clang::ObjCIvarRefExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCIvarRefExpr>() const
Line
Count
Source
259
58
  const T &getUnchecked() const {
260
58
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
58
  }
clang::BinaryOperator const& clang::DynTypedNode::getUnchecked<clang::BinaryOperator>() const
Line
Count
Source
259
5.26k
  const T &getUnchecked() const {
260
5.26k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
5.26k
  }
clang::UnaryOperator const& clang::DynTypedNode::getUnchecked<clang::UnaryOperator>() const
Line
Count
Source
259
2.98k
  const T &getUnchecked() const {
260
2.98k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
2.98k
  }
clang::ObjCInterfaceDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCInterfaceDecl>() const
Line
Count
Source
259
4.31k
  const T &getUnchecked() const {
260
4.31k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
4.31k
  }
clang::FieldDecl const& clang::DynTypedNode::getUnchecked<clang::FieldDecl>() const
Line
Count
Source
259
839
  const T &getUnchecked() const {
260
839
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
839
  }
clang::FunctionDecl const& clang::DynTypedNode::getUnchecked<clang::FunctionDecl>() const
Line
Count
Source
259
4.87k
  const T &getUnchecked() const {
260
4.87k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
4.87k
  }
clang::ClassTemplateSpecializationDecl const& clang::DynTypedNode::getUnchecked<clang::ClassTemplateSpecializationDecl>() const
Line
Count
Source
259
353
  const T &getUnchecked() const {
260
353
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
353
  }
clang::Decl const& clang::DynTypedNode::getUnchecked<clang::Decl>() const
Line
Count
Source
259
10.4k
  const T &getUnchecked() const {
260
10.4k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
10.4k
  }
clang::Expr const& clang::DynTypedNode::getUnchecked<clang::Expr>() const
Line
Count
Source
259
33.7k
  const T &getUnchecked() const {
260
33.7k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
33.7k
  }
clang::TemplateArgument const& clang::DynTypedNode::getUnchecked<clang::TemplateArgument>() const
Line
Count
Source
259
238
  const T &getUnchecked() const {
260
238
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
238
  }
clang::CallExpr const& clang::DynTypedNode::getUnchecked<clang::CallExpr>() const
Line
Count
Source
259
6.02k
  const T &getUnchecked() const {
260
6.02k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
6.02k
  }
clang::InitListExpr const& clang::DynTypedNode::getUnchecked<clang::InitListExpr>() const
Line
Count
Source
259
294
  const T &getUnchecked() const {
260
294
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
294
  }
clang::ForStmt const& clang::DynTypedNode::getUnchecked<clang::ForStmt>() const
Line
Count
Source
259
693
  const T &getUnchecked() const {
260
693
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
693
  }
clang::CXXForRangeStmt const& clang::DynTypedNode::getUnchecked<clang::CXXForRangeStmt>() const
Line
Count
Source
259
165
  const T &getUnchecked() const {
260
165
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
165
  }
clang::DesignatedInitExpr const& clang::DynTypedNode::getUnchecked<clang::DesignatedInitExpr>() const
Line
Count
Source
259
160
  const T &getUnchecked() const {
260
160
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
160
  }
clang::UnaryExprOrTypeTraitExpr const& clang::DynTypedNode::getUnchecked<clang::UnaryExprOrTypeTraitExpr>() const
Line
Count
Source
259
291
  const T &getUnchecked() const {
260
291
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
291
  }
clang::NamedDecl const& clang::DynTypedNode::getUnchecked<clang::NamedDecl>() const
Line
Count
Source
259
76.8k
  const T &getUnchecked() const {
260
76.8k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
76.8k
  }
clang::CXXDependentScopeMemberExpr const& clang::DynTypedNode::getUnchecked<clang::CXXDependentScopeMemberExpr>() const
Line
Count
Source
259
99
  const T &getUnchecked() const {
260
99
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
99
  }
clang::CXXRecordDecl const& clang::DynTypedNode::getUnchecked<clang::CXXRecordDecl>() const
Line
Count
Source
259
16.2k
  const T &getUnchecked() const {
260
16.2k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
16.2k
  }
clang::CXXMemberCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXMemberCallExpr>() const
Line
Count
Source
259
753
  const T &getUnchecked() const {
260
753
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
753
  }
clang::ObjCMessageExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCMessageExpr>() const
Line
Count
Source
259
262
  const T &getUnchecked() const {
260
262
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
262
  }
clang::ObjCMethodDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCMethodDecl>() const
Line
Count
Source
259
111
  const T &getUnchecked() const {
260
111
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
111
  }
clang::DeclaratorDecl const& clang::DynTypedNode::getUnchecked<clang::DeclaratorDecl>() const
Line
Count
Source
259
30
  const T &getUnchecked() const {
260
30
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
30
  }
clang::Type const& clang::DynTypedNode::getUnchecked<clang::Type>() const
Line
Count
Source
259
1.51k
  const T &getUnchecked() const {
260
1.51k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
1.51k
  }
clang::DeclRefExpr const& clang::DynTypedNode::getUnchecked<clang::DeclRefExpr>() const
Line
Count
Source
259
3.33k
  const T &getUnchecked() const {
260
3.33k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
3.33k
  }
clang::OverloadExpr const& clang::DynTypedNode::getUnchecked<clang::OverloadExpr>() const
Line
Count
Source
259
14
  const T &getUnchecked() const {
260
14
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
14
  }
clang::DeclStmt const& clang::DynTypedNode::getUnchecked<clang::DeclStmt>() const
Line
Count
Source
259
644
  const T &getUnchecked() const {
260
644
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
644
  }
clang::VarDecl const& clang::DynTypedNode::getUnchecked<clang::VarDecl>() const
Line
Count
Source
259
6.35k
  const T &getUnchecked() const {
260
6.35k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
6.35k
  }
clang::CXXCatchStmt const& clang::DynTypedNode::getUnchecked<clang::CXXCatchStmt>() const
Line
Count
Source
259
100
  const T &getUnchecked() const {
260
100
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
100
  }
clang::CXXConstructorDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConstructorDecl>() const
Line
Count
Source
259
1.05k
  const T &getUnchecked() const {
260
1.05k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
1.05k
  }
clang::CXXCtorInitializer const& clang::DynTypedNode::getUnchecked<clang::CXXCtorInitializer>() const
Line
Count
Source
259
206
  const T &getUnchecked() const {
260
206
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
206
  }
clang::LambdaExpr const& clang::DynTypedNode::getUnchecked<clang::LambdaExpr>() const
Line
Count
Source
259
52
  const T &getUnchecked() const {
260
52
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
52
  }
clang::CXXConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXConstructExpr>() const
Line
Count
Source
259
691
  const T &getUnchecked() const {
260
691
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
691
  }
clang::ParmVarDecl const& clang::DynTypedNode::getUnchecked<clang::ParmVarDecl>() const
Line
Count
Source
259
1.73k
  const T &getUnchecked() const {
260
1.73k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
1.73k
  }
clang::IfStmt const& clang::DynTypedNode::getUnchecked<clang::IfStmt>() const
Line
Count
Source
259
417
  const T &getUnchecked() const {
260
417
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
417
  }
clang::ArraySubscriptExpr const& clang::DynTypedNode::getUnchecked<clang::ArraySubscriptExpr>() const
Line
Count
Source
259
22
  const T &getUnchecked() const {
260
22
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
22
  }
clang::CompoundStmt const& clang::DynTypedNode::getUnchecked<clang::CompoundStmt>() const
Line
Count
Source
259
1.05k
  const T &getUnchecked() const {
260
1.05k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
1.05k
  }
clang::CastExpr const& clang::DynTypedNode::getUnchecked<clang::CastExpr>() const
Line
Count
Source
259
3.62k
  const T &getUnchecked() const {
260
3.62k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
3.62k
  }
clang::ExplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ExplicitCastExpr>() const
Line
Count
Source
259
351
  const T &getUnchecked() const {
260
351
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
351
  }
clang::ImplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ImplicitCastExpr>() const
Line
Count
Source
259
239
  const T &getUnchecked() const {
260
239
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
239
  }
clang::TagDecl const& clang::DynTypedNode::getUnchecked<clang::TagDecl>() const
Line
Count
Source
259
270
  const T &getUnchecked() const {
260
270
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
270
  }
clang::AbstractConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::AbstractConditionalOperator>() const
Line
Count
Source
259
583
  const T &getUnchecked() const {
260
583
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
583
  }
clang::CXXMethodDecl const& clang::DynTypedNode::getUnchecked<clang::CXXMethodDecl>() const
Line
Count
Source
259
3.47k
  const T &getUnchecked() const {
260
3.47k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
3.47k
  }
clang::MemberExpr const& clang::DynTypedNode::getUnchecked<clang::MemberExpr>() const
Line
Count
Source
259
464
  const T &getUnchecked() const {
260
464
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
464
  }
clang::UsingDecl const& clang::DynTypedNode::getUnchecked<clang::UsingDecl>() const
Line
Count
Source
259
26
  const T &getUnchecked() const {
260
26
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
26
  }
clang::UsingShadowDecl const& clang::DynTypedNode::getUnchecked<clang::UsingShadowDecl>() const
Line
Count
Source
259
8
  const T &getUnchecked() const {
260
8
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
8
  }
clang::VariableArrayType const& clang::DynTypedNode::getUnchecked<clang::VariableArrayType>() const
Line
Count
Source
259
28
  const T &getUnchecked() const {
260
28
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
28
  }
clang::ElaboratedType const& clang::DynTypedNode::getUnchecked<clang::ElaboratedType>() const
Line
Count
Source
259
12
  const T &getUnchecked() const {
260
12
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
12
  }
clang::DecayedType const& clang::DynTypedNode::getUnchecked<clang::DecayedType>() const
Line
Count
Source
259
28
  const T &getUnchecked() const {
260
28
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
28
  }
clang::NestedNameSpecifier const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifier>() const
Line
Count
Source
259
292
  const T &getUnchecked() const {
260
292
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
292
  }
clang::Stmt const& clang::DynTypedNode::getUnchecked<clang::Stmt>() const
Line
Count
Source
259
28.9k
  const T &getUnchecked() const {
260
28.9k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
28.9k
  }
clang::SwitchStmt const& clang::DynTypedNode::getUnchecked<clang::SwitchStmt>() const
Line
Count
Source
259
63
  const T &getUnchecked() const {
260
63
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
63
  }
clang::NamespaceDecl const& clang::DynTypedNode::getUnchecked<clang::NamespaceDecl>() const
Line
Count
Source
259
69
  const T &getUnchecked() const {
260
69
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
69
  }
clang::CaseStmt const& clang::DynTypedNode::getUnchecked<clang::CaseStmt>() const
Line
Count
Source
259
10
  const T &getUnchecked() const {
260
10
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
10
  }
clang::ReturnStmt const& clang::DynTypedNode::getUnchecked<clang::ReturnStmt>() const
Line
Count
Source
259
61
  const T &getUnchecked() const {
260
61
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
61
  }
clang::CXXNewExpr const& clang::DynTypedNode::getUnchecked<clang::CXXNewExpr>() const
Line
Count
Source
259
56
  const T &getUnchecked() const {
260
56
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
56
  }
clang::EnumDecl const& clang::DynTypedNode::getUnchecked<clang::EnumDecl>() const
Line
Count
Source
259
53
  const T &getUnchecked() const {
260
53
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
53
  }
clang::OMPExecutableDirective const& clang::DynTypedNode::getUnchecked<clang::OMPExecutableDirective>() const
Line
Count
Source
259
804
  const T &getUnchecked() const {
260
804
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
804
  }
clang::OMPDefaultClause const& clang::DynTypedNode::getUnchecked<clang::OMPDefaultClause>() const
Line
Count
Source
259
174
  const T &getUnchecked() const {
260
174
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
174
  }
clang::FriendDecl const& clang::DynTypedNode::getUnchecked<clang::FriendDecl>() const
Line
Count
Source
259
58
  const T &getUnchecked() const {
260
58
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
58
  }
clang::TypedefNameDecl const& clang::DynTypedNode::getUnchecked<clang::TypedefNameDecl>() const
Line
Count
Source
259
26
  const T &getUnchecked() const {
260
26
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
26
  }
clang::ValueDecl const& clang::DynTypedNode::getUnchecked<clang::ValueDecl>() const
Line
Count
Source
259
102
  const T &getUnchecked() const {
260
102
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
102
  }
clang::CXXBaseSpecifier const& clang::DynTypedNode::getUnchecked<clang::CXXBaseSpecifier>() const
Line
Count
Source
259
520
  const T &getUnchecked() const {
260
520
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
520
  }
clang::CharacterLiteral const& clang::DynTypedNode::getUnchecked<clang::CharacterLiteral>() const
Line
Count
Source
259
8
  const T &getUnchecked() const {
260
8
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
8
  }
clang::CXXBoolLiteralExpr const& clang::DynTypedNode::getUnchecked<clang::CXXBoolLiteralExpr>() const
Line
Count
Source
259
362
  const T &getUnchecked() const {
260
362
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
362
  }
clang::FloatingLiteral const& clang::DynTypedNode::getUnchecked<clang::FloatingLiteral>() const
Line
Count
Source
259
336
  const T &getUnchecked() const {
260
336
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
336
  }
clang::CXXUnresolvedConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXUnresolvedConstructExpr>() const
Line
Count
Source
259
16
  const T &getUnchecked() const {
260
16
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
16
  }
clang::CXXOperatorCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXOperatorCallExpr>() const
Line
Count
Source
259
1.45k
  const T &getUnchecked() const {
260
1.45k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
1.45k
  }
clang::CXXRewrittenBinaryOperator const& clang::DynTypedNode::getUnchecked<clang::CXXRewrittenBinaryOperator>() const
Line
Count
Source
259
512
  const T &getUnchecked() const {
260
512
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
512
  }
clang::StmtExpr const& clang::DynTypedNode::getUnchecked<clang::StmtExpr>() const
Line
Count
Source
259
16
  const T &getUnchecked() const {
260
16
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
16
  }
clang::TemplateSpecializationType const& clang::DynTypedNode::getUnchecked<clang::TemplateSpecializationType>() const
Line
Count
Source
259
72
  const T &getUnchecked() const {
260
72
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
72
  }
clang::DoStmt const& clang::DynTypedNode::getUnchecked<clang::DoStmt>() const
Line
Count
Source
259
2
  const T &getUnchecked() const {
260
2
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
2
  }
clang::WhileStmt const& clang::DynTypedNode::getUnchecked<clang::WhileStmt>() const
Line
Count
Source
259
6
  const T &getUnchecked() const {
260
6
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
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
259
36
  const T &getUnchecked() const {
260
36
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
36
  }
clang::AddrLabelExpr const& clang::DynTypedNode::getUnchecked<clang::AddrLabelExpr>() const
Line
Count
Source
259
8
  const T &getUnchecked() const {
260
8
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
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
259
212
  const T &getUnchecked() const {
260
212
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
212
  }
clang::ArrayType const& clang::DynTypedNode::getUnchecked<clang::ArrayType>() const
Line
Count
Source
259
144
  const T &getUnchecked() const {
260
144
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
144
  }
clang::ComplexType const& clang::DynTypedNode::getUnchecked<clang::ComplexType>() const
Line
Count
Source
259
56
  const T &getUnchecked() const {
260
56
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
56
  }
clang::UnresolvedMemberExpr const& clang::DynTypedNode::getUnchecked<clang::UnresolvedMemberExpr>() const
Line
Count
Source
259
42
  const T &getUnchecked() const {
260
42
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
42
  }
clang::SubstTemplateTypeParmType const& clang::DynTypedNode::getUnchecked<clang::SubstTemplateTypeParmType>() const
Line
Count
Source
259
4
  const T &getUnchecked() const {
260
4
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
4
  }
clang::ConstantArrayType const& clang::DynTypedNode::getUnchecked<clang::ConstantArrayType>() const
Line
Count
Source
259
148
  const T &getUnchecked() const {
260
148
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
148
  }
clang::StringLiteral const& clang::DynTypedNode::getUnchecked<clang::StringLiteral>() const
Line
Count
Source
259
144
  const T &getUnchecked() const {
260
144
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
144
  }
clang::OpaqueValueExpr const& clang::DynTypedNode::getUnchecked<clang::OpaqueValueExpr>() const
Line
Count
Source
259
46
  const T &getUnchecked() const {
260
46
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
46
  }
clang::DecltypeType const& clang::DynTypedNode::getUnchecked<clang::DecltypeType>() const
Line
Count
Source
259
16
  const T &getUnchecked() const {
260
16
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
16
  }
clang::AtomicType const& clang::DynTypedNode::getUnchecked<clang::AtomicType>() const
Line
Count
Source
259
56
  const T &getUnchecked() const {
260
56
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
56
  }
clang::ParenType const& clang::DynTypedNode::getUnchecked<clang::ParenType>() const
Line
Count
Source
259
58
  const T &getUnchecked() const {
260
58
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
58
  }
clang::CXXConversionDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConversionDecl>() const
Line
Count
Source
259
44
  const T &getUnchecked() const {
260
44
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
44
  }
clang::CXXDeductionGuideDecl const& clang::DynTypedNode::getUnchecked<clang::CXXDeductionGuideDecl>() const
Line
Count
Source
259
96
  const T &getUnchecked() const {
260
96
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
96
  }
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
259
306
  const T &getUnchecked() const {
260
306
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
306
  }
clang::CXXTypeidExpr const& clang::DynTypedNode::getUnchecked<clang::CXXTypeidExpr>() const
Line
Count
Source
259
2
  const T &getUnchecked() const {
260
2
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
2
  }
clang::GenericSelectionExpr const& clang::DynTypedNode::getUnchecked<clang::GenericSelectionExpr>() const
Line
Count
Source
259
1
  const T &getUnchecked() const {
260
1
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
1
  }
clang::ParenListExpr const& clang::DynTypedNode::getUnchecked<clang::ParenListExpr>() const
Line
Count
Source
259
30
  const T &getUnchecked() const {
260
30
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
261
30
  }
262
263
1.17M
  ASTNodeKind getNodeKind() const { return NodeKind; }
264
265
  /// Returns a pointer that identifies the stored AST node.
266
  ///
267
  /// Note that this is not supported by all AST nodes. For AST nodes
268
  /// that don't have a pointer-defined identity inside the AST, this
269
  /// method returns NULL.
270
398k
  const void *getMemoizationData() const {
271
398k
    return NodeKind.hasPointerIdentity()
272
398k
               ? *reinterpret_cast<void *const *>(&Storage)
273
793
               : nullptr;
274
398k
  }
275
276
  /// Prints the node to the given output stream.
277
  void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const;
278
279
  /// Dumps the node to the given output stream.
280
  void dump(llvm::raw_ostream &OS, const ASTContext &Context) const;
281
282
  /// For nodes which represent textual entities in the source code,
283
  /// return their SourceRange.  For all other nodes, return SourceRange().
284
  SourceRange getSourceRange() const;
285
286
  /// @{
287
  /// Imposes an order on \c DynTypedNode.
288
  ///
289
  /// Supports comparison of nodes that support memoization.
290
  /// FIXME: Implement comparison for other node types (currently
291
  /// only Stmt, Decl, Type and NestedNameSpecifier return memoization data).
292
132k
  bool operator<(const DynTypedNode &Other) const {
293
132k
    if (!NodeKind.isSame(Other.NodeKind))
294
42.8k
      return NodeKind < Other.NodeKind;
295
296
89.6k
    if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind))
297
1
      return getUnchecked<QualType>().getAsOpaquePtr() <
298
1
             Other.getUnchecked<QualType>().getAsOpaquePtr();
299
300
89.6k
    if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(NodeKind)) {
301
4
      auto TLA = getUnchecked<TypeLoc>();
302
4
      auto TLB = Other.getUnchecked<TypeLoc>();
303
4
      return std::make_pair(TLA.getType().getAsOpaquePtr(),
304
4
                            TLA.getOpaqueData()) <
305
4
             std::make_pair(TLB.getType().getAsOpaquePtr(),
306
4
                            TLB.getOpaqueData());
307
4
    }
308
309
89.6k
    if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(
310
0
            NodeKind)) {
311
0
      auto NNSLA = getUnchecked<NestedNameSpecifierLoc>();
312
0
      auto NNSLB = Other.getUnchecked<NestedNameSpecifierLoc>();
313
0
      return std::make_pair(NNSLA.getNestedNameSpecifier(),
314
0
                            NNSLA.getOpaqueData()) <
315
0
             std::make_pair(NNSLB.getNestedNameSpecifier(),
316
0
                            NNSLB.getOpaqueData());
317
0
    }
318
319
89.6k
    assert(getMemoizationData() && Other.getMemoizationData());
320
89.6k
    return getMemoizationData() < Other.getMemoizationData();
321
89.6k
  }
322
254k
  bool operator==(const DynTypedNode &Other) const {
323
    // DynTypedNode::create() stores the exact kind of the node in NodeKind.
324
    // If they contain the same node, their NodeKind must be the same.
325
254k
    if (!NodeKind.isSame(Other.NodeKind))
326
232k
      return false;
327
328
    // FIXME: Implement for other types.
329
21.9k
    if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind))
330
141
      return getUnchecked<QualType>() == Other.getUnchecked<QualType>();
331
332
21.8k
    if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(NodeKind))
333
20.2k
      return getUnchecked<TypeLoc>() == Other.getUnchecked<TypeLoc>();
334
335
1.57k
    if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(NodeKind))
336
134
      return getUnchecked<NestedNameSpecifierLoc>() ==
337
134
             Other.getUnchecked<NestedNameSpecifierLoc>();
338
339
1.43k
    assert(getMemoizationData() && Other.getMemoizationData());
340
1.43k
    return getMemoizationData() == Other.getMemoizationData();
341
1.43k
  }
342
1.16k
  bool operator!=(const DynTypedNode &Other) const {
343
1.16k
    return !operator==(Other);
344
1.16k
  }
345
  /// @}
346
347
  /// Hooks for using DynTypedNode as a key in a DenseMap.
348
  struct DenseMapInfo {
349
85.3k
    static inline DynTypedNode getEmptyKey() {
350
85.3k
      DynTypedNode Node;
351
85.3k
      Node.NodeKind = ASTNodeKind::DenseMapInfo::getEmptyKey();
352
85.3k
      return Node;
353
85.3k
    }
354
60.4k
    static inline DynTypedNode getTombstoneKey() {
355
60.4k
      DynTypedNode Node;
356
60.4k
      Node.NodeKind = ASTNodeKind::DenseMapInfo::getTombstoneKey();
357
60.4k
      return Node;
358
60.4k
    }
359
34.4k
    static unsigned getHashValue(const DynTypedNode &Val) {
360
      // FIXME: Add hashing support for the remaining types.
361
34.4k
      if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(Val.NodeKind)) {
362
33.5k
        auto TL = Val.getUnchecked<TypeLoc>();
363
33.5k
        return llvm::hash_combine(TL.getType().getAsOpaquePtr(),
364
33.5k
                                  TL.getOpaqueData());
365
33.5k
      }
366
367
962
      if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(
368
962
              Val.NodeKind)) {
369
962
        auto NNSL = Val.getUnchecked<NestedNameSpecifierLoc>();
370
962
        return llvm::hash_combine(NNSL.getNestedNameSpecifier(),
371
962
                                  NNSL.getOpaqueData());
372
962
      }
373
374
0
      assert(Val.getMemoizationData());
375
0
      return llvm::hash_value(Val.getMemoizationData());
376
0
    }
377
418k
    static bool isEqual(const DynTypedNode &LHS, const DynTypedNode &RHS) {
378
418k
      auto Empty = ASTNodeKind::DenseMapInfo::getEmptyKey();
379
418k
      auto TombStone = ASTNodeKind::DenseMapInfo::getTombstoneKey();
380
418k
      return (ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, Empty) &&
381
166k
              ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, Empty)) ||
382
252k
             (ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, TombStone) &&
383
0
              ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, TombStone)) ||
384
252k
             LHS == RHS;
385
418k
    }
386
  };
387
388
private:
389
  /// Takes care of converting from and to \c T.
390
  template <typename T, typename EnablerT = void> struct BaseConverter;
391
392
  /// Converter that uses dyn_cast<T> from a stored BaseT*.
393
  template <typename T, typename BaseT> struct DynCastPtrConverter {
394
942k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
942k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
466k
        return &getUnchecked(NodeKind, Storage);
397
476k
      return nullptr;
398
476k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
56.2k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
56.2k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
44.8k
        return &getUnchecked(NodeKind, Storage);
397
11.4k
      return nullptr;
398
11.4k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
62
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
62
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
52
        return &getUnchecked(NodeKind, Storage);
397
10
      return nullptr;
398
10
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
1
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
1
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
0
        return &getUnchecked(NodeKind, Storage);
397
1
      return nullptr;
398
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
765k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
765k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
357k
        return &getUnchecked(NodeKind, Storage);
397
408k
      return nullptr;
398
408k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
107k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
107k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
56.1k
        return &getUnchecked(NodeKind, Storage);
397
51.1k
      return nullptr;
398
51.1k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
300
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
300
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
36
        return &getUnchecked(NodeKind, Storage);
397
264
      return nullptr;
398
264
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
104
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
104
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
56
        return &getUnchecked(NodeKind, Storage);
397
48
      return nullptr;
398
48
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
129
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
129
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
128
        return &getUnchecked(NodeKind, Storage);
397
1
      return nullptr;
398
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
88
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
88
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
88
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
17
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
17
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
17
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
17
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
17
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
17
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
1
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
1
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
1
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
853
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
853
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
853
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
18
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
18
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
18
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
27
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
27
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
27
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ForStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
24
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
24
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
1
        return &getUnchecked(NodeKind, Storage);
397
23
      return nullptr;
398
23
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
175
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
175
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
125
        return &getUnchecked(NodeKind, Storage);
397
50
      return nullptr;
398
50
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXForRangeStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
22
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
22
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
1
        return &getUnchecked(NodeKind, Storage);
397
21
      return nullptr;
398
21
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
2
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
2
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
2
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
245
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
245
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
245
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
114
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
114
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
114
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
1.45k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
1.45k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
1.45k
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
1.15k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
1.15k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
909
        return &getUnchecked(NodeKind, Storage);
397
247
      return nullptr;
398
247
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
5.07k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
5.07k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
2.91k
        return &getUnchecked(NodeKind, Storage);
397
2.15k
      return nullptr;
398
2.15k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
2.17k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
2.17k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
32
        return &getUnchecked(NodeKind, Storage);
397
2.14k
      return nullptr;
398
2.14k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
887
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
887
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
887
        return &getUnchecked(NodeKind, Storage);
397
0
      return nullptr;
398
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
146
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
146
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
0
        return &getUnchecked(NodeKind, Storage);
397
146
      return nullptr;
398
146
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
117
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
117
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
115
        return &getUnchecked(NodeKind, Storage);
397
2
      return nullptr;
398
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
394
5
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
395
5
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
396
4
        return &getUnchecked(NodeKind, Storage);
397
1
      return nullptr;
398
1
    }
399
697k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
697k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
697k
      return *cast<T>(static_cast<const BaseT *>(
402
697k
          *reinterpret_cast<const void *const *>(Storage)));
403
697k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
73.7k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
73.7k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
73.7k
      return *cast<T>(static_cast<const BaseT *>(
402
73.7k
          *reinterpret_cast<const void *const *>(Storage)));
403
73.7k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
1.56k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
1.56k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
1.56k
      return *cast<T>(static_cast<const BaseT *>(
402
1.56k
          *reinterpret_cast<const void *const *>(Storage)));
403
1.56k
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
391k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
391k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
391k
      return *cast<T>(static_cast<const BaseT *>(
402
391k
          *reinterpret_cast<const void *const *>(Storage)));
403
391k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
66.6k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
66.6k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
66.6k
      return *cast<T>(static_cast<const BaseT *>(
402
66.6k
          *reinterpret_cast<const void *const *>(Storage)));
403
66.6k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
680
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
680
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
680
      return *cast<T>(static_cast<const BaseT *>(
402
680
          *reinterpret_cast<const void *const *>(Storage)));
403
680
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
1.10k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
1.10k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
1.10k
      return *cast<T>(static_cast<const BaseT *>(
402
1.10k
          *reinterpret_cast<const void *const *>(Storage)));
403
1.10k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
305
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
305
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
305
      return *cast<T>(static_cast<const BaseT *>(
402
305
          *reinterpret_cast<const void *const *>(Storage)));
403
305
    }
clang::DynTypedNode::DynCastPtrConverter<clang::RecordType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
255
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
255
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
255
      return *cast<T>(static_cast<const BaseT *>(
402
255
          *reinterpret_cast<const void *const *>(Storage)));
403
255
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCObjectPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
120
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
120
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
120
      return *cast<T>(static_cast<const BaseT *>(
402
120
          *reinterpret_cast<const void *const *>(Storage)));
403
120
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
79
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
79
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
79
      return *cast<T>(static_cast<const BaseT *>(
402
79
          *reinterpret_cast<const void *const *>(Storage)));
403
79
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
42
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
42
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
42
      return *cast<T>(static_cast<const BaseT *>(
402
42
          *reinterpret_cast<const void *const *>(Storage)));
403
42
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
29
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
29
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
29
      return *cast<T>(static_cast<const BaseT *>(
402
29
          *reinterpret_cast<const void *const *>(Storage)));
403
29
    }
clang::DynTypedNode::DynCastPtrConverter<clang::PointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
699
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
699
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
699
      return *cast<T>(static_cast<const BaseT *>(
402
699
          *reinterpret_cast<const void *const *>(Storage)));
403
699
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CStyleCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
40
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
40
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
40
      return *cast<T>(static_cast<const BaseT *>(
402
40
          *reinterpret_cast<const void *const *>(Storage)));
403
40
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
60
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
60
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
60
      return *cast<T>(static_cast<const BaseT *>(
402
60
          *reinterpret_cast<const void *const *>(Storage)));
403
60
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
5.38k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
5.38k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
5.38k
      return *cast<T>(static_cast<const BaseT *>(
402
5.38k
          *reinterpret_cast<const void *const *>(Storage)));
403
5.38k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
2.98k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
2.98k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
2.98k
      return *cast<T>(static_cast<const BaseT *>(
402
2.98k
          *reinterpret_cast<const void *const *>(Storage)));
403
2.98k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
1.04k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
1.04k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
1.04k
      return *cast<T>(static_cast<const BaseT *>(
402
1.04k
          *reinterpret_cast<const void *const *>(Storage)));
403
1.04k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
4.31k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
4.31k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
4.31k
      return *cast<T>(static_cast<const BaseT *>(
402
4.31k
          *reinterpret_cast<const void *const *>(Storage)));
403
4.31k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
77.7k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
77.7k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
77.7k
      return *cast<T>(static_cast<const BaseT *>(
402
77.7k
          *reinterpret_cast<const void *const *>(Storage)));
403
77.7k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
7.78k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
7.78k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
7.78k
      return *cast<T>(static_cast<const BaseT *>(
402
7.78k
          *reinterpret_cast<const void *const *>(Storage)));
403
7.78k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
84
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
84
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
84
      return *cast<T>(static_cast<const BaseT *>(
402
84
          *reinterpret_cast<const void *const *>(Storage)));
403
84
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
1.46k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
1.46k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
1.46k
      return *cast<T>(static_cast<const BaseT *>(
402
1.46k
          *reinterpret_cast<const void *const *>(Storage)));
403
1.46k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateSpecializationDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
735
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
735
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
735
      return *cast<T>(static_cast<const BaseT *>(
402
735
          *reinterpret_cast<const void *const *>(Storage)));
403
735
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
6.15k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
6.15k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
6.15k
      return *cast<T>(static_cast<const BaseT *>(
402
6.15k
          *reinterpret_cast<const void *const *>(Storage)));
403
6.15k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
298
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
298
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
298
      return *cast<T>(static_cast<const BaseT *>(
402
298
          *reinterpret_cast<const void *const *>(Storage)));
403
298
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ForStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
694
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
694
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
694
      return *cast<T>(static_cast<const BaseT *>(
402
694
          *reinterpret_cast<const void *const *>(Storage)));
403
694
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXForRangeStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
166
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
166
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
166
      return *cast<T>(static_cast<const BaseT *>(
402
166
          *reinterpret_cast<const void *const *>(Storage)));
403
166
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DesignatedInitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
160
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
160
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
160
      return *cast<T>(static_cast<const BaseT *>(
402
160
          *reinterpret_cast<const void *const *>(Storage)));
403
160
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryExprOrTypeTraitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
291
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
291
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
291
      return *cast<T>(static_cast<const BaseT *>(
402
291
          *reinterpret_cast<const void *const *>(Storage)));
403
291
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDependentScopeMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
99
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
99
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
99
      return *cast<T>(static_cast<const BaseT *>(
402
99
          *reinterpret_cast<const void *const *>(Storage)));
403
99
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
17.0k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
17.0k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
17.0k
      return *cast<T>(static_cast<const BaseT *>(
402
17.0k
          *reinterpret_cast<const void *const *>(Storage)));
403
17.0k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
837
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
837
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
837
      return *cast<T>(static_cast<const BaseT *>(
402
837
          *reinterpret_cast<const void *const *>(Storage)));
403
837
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
280
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
280
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
280
      return *cast<T>(static_cast<const BaseT *>(
402
280
          *reinterpret_cast<const void *const *>(Storage)));
403
280
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
128
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
128
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
128
      return *cast<T>(static_cast<const BaseT *>(
402
128
          *reinterpret_cast<const void *const *>(Storage)));
403
128
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclaratorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
30
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
30
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
30
      return *cast<T>(static_cast<const BaseT *>(
402
30
          *reinterpret_cast<const void *const *>(Storage)));
403
30
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
3.44k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
3.44k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
3.44k
      return *cast<T>(static_cast<const BaseT *>(
402
3.44k
          *reinterpret_cast<const void *const *>(Storage)));
403
3.44k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OverloadExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
14
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
14
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
14
      return *cast<T>(static_cast<const BaseT *>(
402
14
          *reinterpret_cast<const void *const *>(Storage)));
403
14
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
7.80k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
7.80k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
7.80k
      return *cast<T>(static_cast<const BaseT *>(
402
7.80k
          *reinterpret_cast<const void *const *>(Storage)));
403
7.80k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXCatchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
100
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
100
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
100
      return *cast<T>(static_cast<const BaseT *>(
402
100
          *reinterpret_cast<const void *const *>(Storage)));
403
100
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
1.12k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
1.12k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
1.12k
      return *cast<T>(static_cast<const BaseT *>(
402
1.12k
          *reinterpret_cast<const void *const *>(Storage)));
403
1.12k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
692
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
692
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
692
      return *cast<T>(static_cast<const BaseT *>(
402
692
          *reinterpret_cast<const void *const *>(Storage)));
403
692
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
1.82k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
1.82k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
1.82k
      return *cast<T>(static_cast<const BaseT *>(
402
1.82k
          *reinterpret_cast<const void *const *>(Storage)));
403
1.82k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
542
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
542
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
542
      return *cast<T>(static_cast<const BaseT *>(
402
542
          *reinterpret_cast<const void *const *>(Storage)));
403
542
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ArraySubscriptExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
22
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
22
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
22
      return *cast<T>(static_cast<const BaseT *>(
402
22
          *reinterpret_cast<const void *const *>(Storage)));
403
22
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
3.62k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
3.62k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
3.62k
      return *cast<T>(static_cast<const BaseT *>(
402
3.62k
          *reinterpret_cast<const void *const *>(Storage)));
403
3.62k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
351
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
351
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
351
      return *cast<T>(static_cast<const BaseT *>(
402
351
          *reinterpret_cast<const void *const *>(Storage)));
403
351
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ImplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
239
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
239
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
239
      return *cast<T>(static_cast<const BaseT *>(
402
239
          *reinterpret_cast<const void *const *>(Storage)));
403
239
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TagDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
270
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
270
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
270
      return *cast<T>(static_cast<const BaseT *>(
402
270
          *reinterpret_cast<const void *const *>(Storage)));
403
270
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AbstractConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
583
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
583
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
583
      return *cast<T>(static_cast<const BaseT *>(
402
583
          *reinterpret_cast<const void *const *>(Storage)));
403
583
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
3.73k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
3.73k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
3.73k
      return *cast<T>(static_cast<const BaseT *>(
402
3.73k
          *reinterpret_cast<const void *const *>(Storage)));
403
3.73k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
491
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
491
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
491
      return *cast<T>(static_cast<const BaseT *>(
402
491
          *reinterpret_cast<const void *const *>(Storage)));
403
491
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
27
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
27
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
27
      return *cast<T>(static_cast<const BaseT *>(
402
27
          *reinterpret_cast<const void *const *>(Storage)));
403
27
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
8
      return *cast<T>(static_cast<const BaseT *>(
402
8
          *reinterpret_cast<const void *const *>(Storage)));
403
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VariableArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
28
      return *cast<T>(static_cast<const BaseT *>(
402
28
          *reinterpret_cast<const void *const *>(Storage)));
403
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ElaboratedType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
12
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
12
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
12
      return *cast<T>(static_cast<const BaseT *>(
402
12
          *reinterpret_cast<const void *const *>(Storage)));
403
12
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecayedType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
28
      return *cast<T>(static_cast<const BaseT *>(
402
28
          *reinterpret_cast<const void *const *>(Storage)));
403
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
63
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
63
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
63
      return *cast<T>(static_cast<const BaseT *>(
402
63
          *reinterpret_cast<const void *const *>(Storage)));
403
63
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
90
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
90
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
90
      return *cast<T>(static_cast<const BaseT *>(
402
90
          *reinterpret_cast<const void *const *>(Storage)));
403
90
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CaseStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
28
      return *cast<T>(static_cast<const BaseT *>(
402
28
          *reinterpret_cast<const void *const *>(Storage)));
403
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ReturnStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
67
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
67
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
67
      return *cast<T>(static_cast<const BaseT *>(
402
67
          *reinterpret_cast<const void *const *>(Storage)));
403
67
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXNewExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
59
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
59
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
59
      return *cast<T>(static_cast<const BaseT *>(
402
59
          *reinterpret_cast<const void *const *>(Storage)));
403
59
    }
clang::DynTypedNode::DynCastPtrConverter<clang::EnumDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
485
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
485
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
485
      return *cast<T>(static_cast<const BaseT *>(
402
485
          *reinterpret_cast<const void *const *>(Storage)));
403
485
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPExecutableDirective, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
804
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
804
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
804
      return *cast<T>(static_cast<const BaseT *>(
402
804
          *reinterpret_cast<const void *const *>(Storage)));
403
804
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPDefaultClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
174
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
174
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
174
      return *cast<T>(static_cast<const BaseT *>(
402
174
          *reinterpret_cast<const void *const *>(Storage)));
403
174
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
1.21k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
1.21k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
1.21k
      return *cast<T>(static_cast<const BaseT *>(
402
1.21k
          *reinterpret_cast<const void *const *>(Storage)));
403
1.21k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
8
      return *cast<T>(static_cast<const BaseT *>(
402
8
          *reinterpret_cast<const void *const *>(Storage)));
403
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FriendDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
181
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
181
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
181
      return *cast<T>(static_cast<const BaseT *>(
402
181
          *reinterpret_cast<const void *const *>(Storage)));
403
181
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefNameDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
358
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
358
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
358
      return *cast<T>(static_cast<const BaseT *>(
402
358
          *reinterpret_cast<const void *const *>(Storage)));
403
358
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
102
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
102
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
102
      return *cast<T>(static_cast<const BaseT *>(
402
102
          *reinterpret_cast<const void *const *>(Storage)));
403
102
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CharacterLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
8
      return *cast<T>(static_cast<const BaseT *>(
402
8
          *reinterpret_cast<const void *const *>(Storage)));
403
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXBoolLiteralExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
362
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
362
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
362
      return *cast<T>(static_cast<const BaseT *>(
402
362
          *reinterpret_cast<const void *const *>(Storage)));
403
362
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FloatingLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
336
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
336
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
336
      return *cast<T>(static_cast<const BaseT *>(
402
336
          *reinterpret_cast<const void *const *>(Storage)));
403
336
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXUnresolvedConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
17
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
17
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
17
      return *cast<T>(static_cast<const BaseT *>(
402
17
          *reinterpret_cast<const void *const *>(Storage)));
403
17
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXOperatorCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
1.57k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
1.57k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
1.57k
      return *cast<T>(static_cast<const BaseT *>(
402
1.57k
          *reinterpret_cast<const void *const *>(Storage)));
403
1.57k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRewrittenBinaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
512
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
512
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
512
      return *cast<T>(static_cast<const BaseT *>(
402
512
          *reinterpret_cast<const void *const *>(Storage)));
403
512
    }
clang::DynTypedNode::DynCastPtrConverter<clang::StmtExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
16
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
16
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
16
      return *cast<T>(static_cast<const BaseT *>(
402
16
          *reinterpret_cast<const void *const *>(Storage)));
403
16
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TemplateSpecializationType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
72
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
72
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
72
      return *cast<T>(static_cast<const BaseT *>(
402
72
          *reinterpret_cast<const void *const *>(Storage)));
403
72
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DoStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
2
      return *cast<T>(static_cast<const BaseT *>(
402
2
          *reinterpret_cast<const void *const *>(Storage)));
403
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::WhileStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
7
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
7
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
7
      return *cast<T>(static_cast<const BaseT *>(
402
7
          *reinterpret_cast<const void *const *>(Storage)));
403
7
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::EnumType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::InjectedClassNameType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::LabelStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
38
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
38
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
38
      return *cast<T>(static_cast<const BaseT *>(
402
38
          *reinterpret_cast<const void *const *>(Storage)));
403
38
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AddrLabelExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
8
      return *cast<T>(static_cast<const BaseT *>(
402
8
          *reinterpret_cast<const void *const *>(Storage)));
403
8
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TagType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedUsingType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::AutoType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionProtoType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
212
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
212
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
212
      return *cast<T>(static_cast<const BaseT *>(
402
212
          *reinterpret_cast<const void *const *>(Storage)));
403
212
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
144
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
144
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
144
      return *cast<T>(static_cast<const BaseT *>(
402
144
          *reinterpret_cast<const void *const *>(Storage)));
403
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ComplexType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
56
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
56
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
56
      return *cast<T>(static_cast<const BaseT *>(
402
56
          *reinterpret_cast<const void *const *>(Storage)));
403
56
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
42
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
42
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
42
      return *cast<T>(static_cast<const BaseT *>(
402
42
          *reinterpret_cast<const void *const *>(Storage)));
403
42
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SubstTemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
4
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
4
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
4
      return *cast<T>(static_cast<const BaseT *>(
402
4
          *reinterpret_cast<const void *const *>(Storage)));
403
4
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ConstantArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
148
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
148
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
148
      return *cast<T>(static_cast<const BaseT *>(
402
148
          *reinterpret_cast<const void *const *>(Storage)));
403
148
    }
clang::DynTypedNode::DynCastPtrConverter<clang::StringLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
144
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
144
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
144
      return *cast<T>(static_cast<const BaseT *>(
402
144
          *reinterpret_cast<const void *const *>(Storage)));
403
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OpaqueValueExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
46
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
46
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
46
      return *cast<T>(static_cast<const BaseT *>(
402
46
          *reinterpret_cast<const void *const *>(Storage)));
403
46
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecltypeType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
16
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
16
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
16
      return *cast<T>(static_cast<const BaseT *>(
402
16
          *reinterpret_cast<const void *const *>(Storage)));
403
16
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AtomicType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
56
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
56
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
56
      return *cast<T>(static_cast<const BaseT *>(
402
56
          *reinterpret_cast<const void *const *>(Storage)));
403
56
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParenType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
58
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
58
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
58
      return *cast<T>(static_cast<const BaseT *>(
402
58
          *reinterpret_cast<const void *const *>(Storage)));
403
58
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConversionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
46
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
46
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
46
      return *cast<T>(static_cast<const BaseT *>(
402
46
          *reinterpret_cast<const void *const *>(Storage)));
403
46
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDeductionGuideDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
120
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
120
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
120
      return *cast<T>(static_cast<const BaseT *>(
402
120
          *reinterpret_cast<const void *const *>(Storage)));
403
120
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::BlockPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::MemberPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::ReferenceType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
306
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
306
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
306
      return *cast<T>(static_cast<const BaseT *>(
402
306
          *reinterpret_cast<const void *const *>(Storage)));
403
306
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXTypeidExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
2
      return *cast<T>(static_cast<const BaseT *>(
402
2
          *reinterpret_cast<const void *const *>(Storage)));
403
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::GenericSelectionExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
9
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
9
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
9
      return *cast<T>(static_cast<const BaseT *>(
402
9
          *reinterpret_cast<const void *const *>(Storage)));
403
9
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParenListExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
399
30
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
400
30
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
401
30
      return *cast<T>(static_cast<const BaseT *>(
402
30
          *reinterpret_cast<const void *const *>(Storage)));
403
30
    }
404
1.02M
    static DynTypedNode create(const BaseT &Node) {
405
1.02M
      DynTypedNode Result;
406
1.02M
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
1.02M
      new (&Result.Storage) const void *(&Node);
408
1.02M
      return Result;
409
1.02M
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
336k
    static DynTypedNode create(const BaseT &Node) {
405
336k
      DynTypedNode Result;
406
336k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
336k
      new (&Result.Storage) const void *(&Node);
408
336k
      return Result;
409
336k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
233k
    static DynTypedNode create(const BaseT &Node) {
405
233k
      DynTypedNode Result;
406
233k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
233k
      new (&Result.Storage) const void *(&Node);
408
233k
      return Result;
409
233k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
393k
    static DynTypedNode create(const BaseT &Node) {
405
393k
      DynTypedNode Result;
406
393k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
393k
      new (&Result.Storage) const void *(&Node);
408
393k
      return Result;
409
393k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
413
    static DynTypedNode create(const BaseT &Node) {
405
413
      DynTypedNode Result;
406
413
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
413
      new (&Result.Storage) const void *(&Node);
408
413
      return Result;
409
413
    }
clang::DynTypedNode::DynCastPtrConverter<clang::EnumConstantDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
15
    static DynTypedNode create(const BaseT &Node) {
405
15
      DynTypedNode Result;
406
15
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
15
      new (&Result.Storage) const void *(&Node);
408
15
      return Result;
409
15
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
59
    static DynTypedNode create(const BaseT &Node) {
405
59
      DynTypedNode Result;
406
59
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
59
      new (&Result.Storage) const void *(&Node);
408
59
      return Result;
409
59
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
444
    static DynTypedNode create(const BaseT &Node) {
405
444
      DynTypedNode Result;
406
444
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
444
      new (&Result.Storage) const void *(&Node);
408
444
      return Result;
409
444
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
33
    static DynTypedNode create(const BaseT &Node) {
405
33
      DynTypedNode Result;
406
33
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
33
      new (&Result.Storage) const void *(&Node);
408
33
      return Result;
409
33
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
110
    static DynTypedNode create(const BaseT &Node) {
405
110
      DynTypedNode Result;
406
110
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
110
      new (&Result.Storage) const void *(&Node);
408
110
      return Result;
409
110
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
25
    static DynTypedNode create(const BaseT &Node) {
405
25
      DynTypedNode Result;
406
25
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
25
      new (&Result.Storage) const void *(&Node);
408
25
      return Result;
409
25
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
18
    static DynTypedNode create(const BaseT &Node) {
405
18
      DynTypedNode Result;
406
18
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
18
      new (&Result.Storage) const void *(&Node);
408
18
      return Result;
409
18
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
1
    static DynTypedNode create(const BaseT &Node) {
405
1
      DynTypedNode Result;
406
1
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
1
      new (&Result.Storage) const void *(&Node);
408
1
      return Result;
409
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
35
    static DynTypedNode create(const BaseT &Node) {
405
35
      DynTypedNode Result;
406
35
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
35
      new (&Result.Storage) const void *(&Node);
408
35
      return Result;
409
35
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
156
    static DynTypedNode create(const BaseT &Node) {
405
156
      DynTypedNode Result;
406
156
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
156
      new (&Result.Storage) const void *(&Node);
408
156
      return Result;
409
156
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
2.35k
    static DynTypedNode create(const BaseT &Node) {
405
2.35k
      DynTypedNode Result;
406
2.35k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
2.35k
      new (&Result.Storage) const void *(&Node);
408
2.35k
      return Result;
409
2.35k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
144
    static DynTypedNode create(const BaseT &Node) {
405
144
      DynTypedNode Result;
406
144
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
144
      new (&Result.Storage) const void *(&Node);
408
144
      return Result;
409
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
990
    static DynTypedNode create(const BaseT &Node) {
405
990
      DynTypedNode Result;
406
990
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
990
      new (&Result.Storage) const void *(&Node);
408
990
      return Result;
409
990
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
5.77k
    static DynTypedNode create(const BaseT &Node) {
405
5.77k
      DynTypedNode Result;
406
5.77k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
5.77k
      new (&Result.Storage) const void *(&Node);
408
5.77k
      return Result;
409
5.77k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::create(clang::Type const&)
Line
Count
Source
404
40.3k
    static DynTypedNode create(const BaseT &Node) {
405
40.3k
      DynTypedNode Result;
406
40.3k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
40.3k
      new (&Result.Storage) const void *(&Node);
408
40.3k
      return Result;
409
40.3k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
188
    static DynTypedNode create(const BaseT &Node) {
405
188
      DynTypedNode Result;
406
188
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
188
      new (&Result.Storage) const void *(&Node);
408
188
      return Result;
409
188
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
30
    static DynTypedNode create(const BaseT &Node) {
405
30
      DynTypedNode Result;
406
30
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
30
      new (&Result.Storage) const void *(&Node);
408
30
      return Result;
409
30
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
201
    static DynTypedNode create(const BaseT &Node) {
405
201
      DynTypedNode Result;
406
201
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
201
      new (&Result.Storage) const void *(&Node);
408
201
      return Result;
409
201
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
162
    static DynTypedNode create(const BaseT &Node) {
405
162
      DynTypedNode Result;
406
162
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
162
      new (&Result.Storage) const void *(&Node);
408
162
      return Result;
409
162
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
7.38k
    static DynTypedNode create(const BaseT &Node) {
405
7.38k
      DynTypedNode Result;
406
7.38k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
7.38k
      new (&Result.Storage) const void *(&Node);
408
7.38k
      return Result;
409
7.38k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
662
    static DynTypedNode create(const BaseT &Node) {
405
662
      DynTypedNode Result;
406
662
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
662
      new (&Result.Storage) const void *(&Node);
408
662
      return Result;
409
662
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
73
    static DynTypedNode create(const BaseT &Node) {
405
73
      DynTypedNode Result;
406
73
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
73
      new (&Result.Storage) const void *(&Node);
408
73
      return Result;
409
73
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
73
    static DynTypedNode create(const BaseT &Node) {
405
73
      DynTypedNode Result;
406
73
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
73
      new (&Result.Storage) const void *(&Node);
408
73
      return Result;
409
73
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchCase, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
23
    static DynTypedNode create(const BaseT &Node) {
405
23
      DynTypedNode Result;
406
23
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
23
      new (&Result.Storage) const void *(&Node);
408
23
      return Result;
409
23
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
1.89k
    static DynTypedNode create(const BaseT &Node) {
405
1.89k
      DynTypedNode Result;
406
1.89k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
1.89k
      new (&Result.Storage) const void *(&Node);
408
1.89k
      return Result;
409
1.89k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::create(clang::OMPClause const&)
Line
Count
Source
404
352
    static DynTypedNode create(const BaseT &Node) {
405
352
      DynTypedNode Result;
406
352
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
352
      new (&Result.Storage) const void *(&Node);
408
352
      return Result;
409
352
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
404
671
    static DynTypedNode create(const BaseT &Node) {
405
671
      DynTypedNode Result;
406
671
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
671
      new (&Result.Storage) const void *(&Node);
408
671
      return Result;
409
671
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
42
    static DynTypedNode create(const BaseT &Node) {
405
42
      DynTypedNode Result;
406
42
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
42
      new (&Result.Storage) const void *(&Node);
408
42
      return Result;
409
42
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParenListExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
404
30
    static DynTypedNode create(const BaseT &Node) {
405
30
      DynTypedNode Result;
406
30
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
407
30
      new (&Result.Storage) const void *(&Node);
408
30
      return Result;
409
30
    }
410
  };
411
412
  /// Converter that stores T* (by pointer).
413
  template <typename T> struct PtrConverter {
414
707
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
415
707
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
416
62
        return &getUnchecked(NodeKind, Storage);
417
645
      return nullptr;
418
645
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
414
347
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
415
347
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
416
45
        return &getUnchecked(NodeKind, Storage);
417
302
      return nullptr;
418
302
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
414
360
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
415
360
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
416
17
        return &getUnchecked(NodeKind, Storage);
417
343
      return nullptr;
418
343
    }
419
1.08k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
420
1.08k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
421
1.08k
      return *static_cast<const T *>(
422
1.08k
          *reinterpret_cast<const void *const *>(Storage));
423
1.08k
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
419
337
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
420
337
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
421
337
      return *static_cast<const T *>(
422
337
          *reinterpret_cast<const void *const *>(Storage));
423
337
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
419
223
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
420
223
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
421
223
      return *static_cast<const T *>(
422
223
          *reinterpret_cast<const void *const *>(Storage));
423
223
    }
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
419
520
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
420
520
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
421
520
      return *static_cast<const T *>(
422
520
          *reinterpret_cast<const void *const *>(Storage));
423
520
    }
424
1.80k
    static DynTypedNode create(const T &Node) {
425
1.80k
      DynTypedNode Result;
426
1.80k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
427
1.80k
      new (&Result.Storage) const void *(&Node);
428
1.80k
      return Result;
429
1.80k
    }
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::create(clang::CXXBaseSpecifier const&)
Line
Count
Source
424
520
    static DynTypedNode create(const T &Node) {
425
520
      DynTypedNode Result;
426
520
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
427
520
      new (&Result.Storage) const void *(&Node);
428
520
      return Result;
429
520
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::create(clang::NestedNameSpecifier const&)
Line
Count
Source
424
940
    static DynTypedNode create(const T &Node) {
425
940
      DynTypedNode Result;
426
940
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
427
940
      new (&Result.Storage) const void *(&Node);
428
940
      return Result;
429
940
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::create(clang::CXXCtorInitializer const&)
Line
Count
Source
424
347
    static DynTypedNode create(const T &Node) {
425
347
      DynTypedNode Result;
426
347
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
427
347
      new (&Result.Storage) const void *(&Node);
428
347
      return Result;
429
347
    }
430
  };
431
432
  /// Converter that stores T (by value).
433
  template <typename T> struct ValueConverter {
434
11.4k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
435
11.4k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
436
2.90k
        return reinterpret_cast<const T *>(Storage);
437
8.56k
      return nullptr;
438
8.56k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
434
9
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
435
9
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
436
1
        return reinterpret_cast<const T *>(Storage);
437
8
      return nullptr;
438
8
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
434
26
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
435
26
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
436
18
        return reinterpret_cast<const T *>(Storage);
437
8
      return nullptr;
438
8
    }
clang::DynTypedNode::ValueConverter<clang::TemplateName>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
434
8
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
435
8
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
436
0
        return reinterpret_cast<const T *>(Storage);
437
8
      return nullptr;
438
8
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
434
5.62k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
435
5.62k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
436
174
        return reinterpret_cast<const T *>(Storage);
437
5.45k
      return nullptr;
438
5.45k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
434
264
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
435
264
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
436
238
        return reinterpret_cast<const T *>(Storage);
437
26
      return nullptr;
438
26
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
434
5.53k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
435
5.53k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
436
2.47k
        return reinterpret_cast<const T *>(Storage);
437
3.06k
      return nullptr;
438
3.06k
    }
439
110k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
440
110k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
441
110k
      return *reinterpret_cast<const T *>(Storage);
442
110k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
439
33.0k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
440
33.0k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
441
33.0k
      return *reinterpret_cast<const T *>(Storage);
442
33.0k
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
439
76.1k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
440
76.1k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
441
76.1k
      return *reinterpret_cast<const T *>(Storage);
442
76.1k
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
439
1.44k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
440
1.44k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
441
1.44k
      return *reinterpret_cast<const T *>(Storage);
442
1.44k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
439
238
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
440
238
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
441
238
      return *reinterpret_cast<const T *>(Storage);
442
238
    }
443
142k
    static DynTypedNode create(const T &Node) {
444
142k
      DynTypedNode Result;
445
142k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
446
142k
      new (&Result.Storage) T(Node);
447
142k
      return Result;
448
142k
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::create(clang::TypeLoc const&)
Line
Count
Source
443
69.6k
    static DynTypedNode create(const T &Node) {
444
69.6k
      DynTypedNode Result;
445
69.6k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
446
69.6k
      new (&Result.Storage) T(Node);
447
69.6k
      return Result;
448
69.6k
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::create(clang::NestedNameSpecifierLoc const&)
Line
Count
Source
443
22.6k
    static DynTypedNode create(const T &Node) {
444
22.6k
      DynTypedNode Result;
445
22.6k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
446
22.6k
      new (&Result.Storage) T(Node);
447
22.6k
      return Result;
448
22.6k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::create(clang::QualType const&)
Line
Count
Source
443
49.0k
    static DynTypedNode create(const T &Node) {
444
49.0k
      DynTypedNode Result;
445
49.0k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
446
49.0k
      new (&Result.Storage) T(Node);
447
49.0k
      return Result;
448
49.0k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateName>::create(clang::TemplateName const&)
Line
Count
Source
443
2
    static DynTypedNode create(const T &Node) {
444
2
      DynTypedNode Result;
445
2
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
446
2
      new (&Result.Storage) T(Node);
447
2
      return Result;
448
2
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::create(clang::TemplateArgumentLoc const&)
Line
Count
Source
443
470
    static DynTypedNode create(const T &Node) {
444
470
      DynTypedNode Result;
445
470
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
446
470
      new (&Result.Storage) T(Node);
447
470
      return Result;
448
470
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::create(clang::TemplateArgument const&)
Line
Count
Source
443
265
    static DynTypedNode create(const T &Node) {
444
265
      DynTypedNode Result;
445
265
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
446
265
      new (&Result.Storage) T(Node);
447
265
      return Result;
448
265
    }
449
  };
450
451
  ASTNodeKind NodeKind;
452
453
  /// Stores the data of the node.
454
  ///
455
  /// Note that we can store \c Decls, \c Stmts, \c Types,
456
  /// \c NestedNameSpecifiers and \c CXXCtorInitializer by pointer as they are
457
  /// guaranteed to be unique pointers pointing to dedicated storage in the AST.
458
  /// \c QualTypes, \c NestedNameSpecifierLocs, \c TypeLocs,
459
  /// \c TemplateArguments and \c TemplateArgumentLocs on the other hand do not
460
  /// have storage or unique pointers and thus need to be stored by value.
461
  llvm::AlignedCharArrayUnion<const void *, TemplateArgument,
462
                              TemplateArgumentLoc, NestedNameSpecifierLoc,
463
                              QualType, TypeLoc>
464
      Storage;
465
};
466
467
template <typename T>
468
struct DynTypedNode::BaseConverter<
469
    T, std::enable_if_t<std::is_base_of<Decl, T>::value>>
470
    : public DynCastPtrConverter<T, Decl> {};
471
472
template <typename T>
473
struct DynTypedNode::BaseConverter<
474
    T, std::enable_if_t<std::is_base_of<Stmt, T>::value>>
475
    : public DynCastPtrConverter<T, Stmt> {};
476
477
template <typename T>
478
struct DynTypedNode::BaseConverter<
479
    T, std::enable_if_t<std::is_base_of<Type, T>::value>>
480
    : public DynCastPtrConverter<T, Type> {};
481
482
template <typename T>
483
struct DynTypedNode::BaseConverter<
484
    T, std::enable_if_t<std::is_base_of<OMPClause, T>::value>>
485
    : public DynCastPtrConverter<T, OMPClause> {};
486
487
template <>
488
struct DynTypedNode::BaseConverter<
489
    NestedNameSpecifier, void> : public PtrConverter<NestedNameSpecifier> {};
490
491
template <>
492
struct DynTypedNode::BaseConverter<
493
    CXXCtorInitializer, void> : public PtrConverter<CXXCtorInitializer> {};
494
495
template <>
496
struct DynTypedNode::BaseConverter<
497
    TemplateArgument, void> : public ValueConverter<TemplateArgument> {};
498
499
template <>
500
struct DynTypedNode::BaseConverter<TemplateArgumentLoc, void>
501
    : public ValueConverter<TemplateArgumentLoc> {};
502
503
template <>
504
struct DynTypedNode::BaseConverter<
505
    TemplateName, void> : public ValueConverter<TemplateName> {};
506
507
template <>
508
struct DynTypedNode::BaseConverter<
509
    NestedNameSpecifierLoc,
510
    void> : public ValueConverter<NestedNameSpecifierLoc> {};
511
512
template <>
513
struct DynTypedNode::BaseConverter<QualType,
514
                                   void> : public ValueConverter<QualType> {};
515
516
template <>
517
struct DynTypedNode::BaseConverter<
518
    TypeLoc, void> : public ValueConverter<TypeLoc> {};
519
520
template <>
521
struct DynTypedNode::BaseConverter<CXXBaseSpecifier, void>
522
    : public PtrConverter<CXXBaseSpecifier> {};
523
524
// The only operation we allow on unsupported types is \c get.
525
// This allows to conveniently use \c DynTypedNode when having an arbitrary
526
// AST node that is not supported, but prevents misuse - a user cannot create
527
// a DynTypedNode from arbitrary types.
528
template <typename T, typename EnablerT> struct DynTypedNode::BaseConverter {
529
  static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
530
    return NULL;
531
  }
532
};
533
534
} // end namespace clang
535
536
namespace llvm {
537
538
template <>
539
struct DenseMapInfo<clang::ASTNodeKind> : clang::ASTNodeKind::DenseMapInfo {};
540
541
template <>
542
struct DenseMapInfo<clang::DynTypedNode> : clang::DynTypedNode::DenseMapInfo {};
543
544
}  // end namespace llvm
545
546
#endif