Coverage Report

Created: 2020-02-25 14:32

/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/NestedNameSpecifier.h"
20
#include "clang/AST/TemplateBase.h"
21
#include "clang/AST/TypeLoc.h"
22
#include "clang/Basic/LLVM.h"
23
#include "llvm/ADT/DenseMapInfo.h"
24
#include "llvm/Support/AlignOf.h"
25
26
namespace llvm {
27
28
class raw_ostream;
29
30
}
31
32
namespace clang {
33
34
struct PrintingPolicy;
35
36
/// Defines how we descend a level in the AST when we pass
37
/// through expressions.
38
enum TraversalKind {
39
  /// Will traverse all child nodes.
40
  TK_AsIs,
41
42
  /// Will not traverse implicit casts and parentheses.
43
  /// Corresponds to Expr::IgnoreParenImpCasts()
44
  TK_IgnoreImplicitCastsAndParentheses,
45
46
  /// Ignore AST nodes not written in the source
47
  TK_IgnoreUnlessSpelledInSource
48
};
49
50
/// Kind identifier.
51
///
52
/// It can be constructed from any node kind and allows for runtime type
53
/// hierarchy checks.
54
/// Use getFromNodeKind<T>() to construct them.
55
class ASTNodeKind {
56
public:
57
  /// Empty identifier. It matches nothing.
58
1.48M
  ASTNodeKind() : KindId(NKI_None) {}
59
60
  /// Construct an identifier for T.
61
  template <class T>
62
3.52M
  static ASTNodeKind getFromNodeKind() {
63
3.52M
    return ASTNodeKind(KindToKindId<T>::Id);
64
3.52M
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::QualType>()
Line
Count
Source
62
451k
  static ASTNodeKind getFromNodeKind() {
63
451k
    return ASTNodeKind(KindToKindId<T>::Id);
64
451k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeLoc>()
Line
Count
Source
62
188k
  static ASTNodeKind getFromNodeKind() {
63
188k
    return ASTNodeKind(KindToKindId<T>::Id);
64
188k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifierLoc>()
Line
Count
Source
62
45.6k
  static ASTNodeKind getFromNodeKind() {
63
45.6k
    return ASTNodeKind(KindToKindId<T>::Id);
64
45.6k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Stmt>()
Line
Count
Source
62
507k
  static ASTNodeKind getFromNodeKind() {
63
507k
    return ASTNodeKind(KindToKindId<T>::Id);
64
507k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgument>()
Line
Count
Source
62
400
  static ASTNodeKind getFromNodeKind() {
63
400
    return ASTNodeKind(KindToKindId<T>::Id);
64
400
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateName>()
Line
Count
Source
62
76
  static ASTNodeKind getFromNodeKind() {
63
76
    return ASTNodeKind(KindToKindId<T>::Id);
64
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifier>()
Line
Count
Source
62
2.15k
  static ASTNodeKind getFromNodeKind() {
63
2.15k
    return ASTNodeKind(KindToKindId<T>::Id);
64
2.15k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Decl>()
Line
Count
Source
62
397k
  static ASTNodeKind getFromNodeKind() {
63
397k
    return ASTNodeKind(KindToKindId<T>::Id);
64
397k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Type>()
Line
Count
Source
62
304k
  static ASTNodeKind getFromNodeKind() {
63
304k
    return ASTNodeKind(KindToKindId<T>::Id);
64
304k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCtorInitializer>()
Line
Count
Source
62
950
  static ASTNodeKind getFromNodeKind() {
63
950
    return ASTNodeKind(KindToKindId<T>::Id);
64
950
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPClause>()
Line
Count
Source
62
56
  static ASTNodeKind getFromNodeKind() {
63
56
    return ASTNodeKind(KindToKindId<T>::Id);
64
56
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Expr>()
Line
Count
Source
62
849k
  static ASTNodeKind getFromNodeKind() {
63
849k
    return ASTNodeKind(KindToKindId<T>::Id);
64
849k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclStmt>()
Line
Count
Source
62
19.3k
  static ASTNodeKind getFromNodeKind() {
63
19.3k
    return ASTNodeKind(KindToKindId<T>::Id);
64
19.3k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundStmt>()
Line
Count
Source
62
3.06k
  static ASTNodeKind getFromNodeKind() {
63
3.06k
    return ASTNodeKind(KindToKindId<T>::Id);
64
3.06k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMemberCallExpr>()
Line
Count
Source
62
1.92k
  static ASTNodeKind getFromNodeKind() {
63
1.92k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.92k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CallExpr>()
Line
Count
Source
62
36.0k
  static ASTNodeKind getFromNodeKind() {
63
36.0k
    return ASTNodeKind(KindToKindId<T>::Id);
64
36.0k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionDecl>()
Line
Count
Source
62
21.7k
  static ASTNodeKind getFromNodeKind() {
63
21.7k
    return ASTNodeKind(KindToKindId<T>::Id);
64
21.7k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LambdaExpr>()
Line
Count
Source
62
891
  static ASTNodeKind getFromNodeKind() {
63
891
    return ASTNodeKind(KindToKindId<T>::Id);
64
891
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamedDecl>()
Line
Count
Source
62
39.9k
  static ASTNodeKind getFromNodeKind() {
63
39.9k
    return ASTNodeKind(KindToKindId<T>::Id);
64
39.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IntegerLiteral>()
Line
Count
Source
62
2.82k
  static ASTNodeKind getFromNodeKind() {
63
2.82k
    return ASTNodeKind(KindToKindId<T>::Id);
64
2.82k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VarDecl>()
Line
Count
Source
62
191k
  static ASTNodeKind getFromNodeKind() {
63
191k
    return ASTNodeKind(KindToKindId<T>::Id);
64
191k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryOperator>()
Line
Count
Source
62
22.2k
  static ASTNodeKind getFromNodeKind() {
63
22.2k
    return ASTNodeKind(KindToKindId<T>::Id);
64
22.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclRefExpr>()
Line
Count
Source
62
68.1k
  static ASTNodeKind getFromNodeKind() {
63
68.1k
    return ASTNodeKind(KindToKindId<T>::Id);
64
68.1k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockPointerType>()
Line
Count
Source
62
1.21k
  static ASTNodeKind getFromNodeKind() {
63
1.21k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.21k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMessageExpr>()
Line
Count
Source
62
13.7k
  static ASTNodeKind getFromNodeKind() {
63
13.7k
    return ASTNodeKind(KindToKindId<T>::Id);
64
13.7k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FieldDecl>()
Line
Count
Source
62
1.12k
  static ASTNodeKind getFromNodeKind() {
63
1.12k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.12k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateSpecializationDecl>()
Line
Count
Source
62
3.18k
  static ASTNodeKind getFromNodeKind() {
63
3.18k
    return ASTNodeKind(KindToKindId<T>::Id);
64
3.18k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InitListExpr>()
Line
Count
Source
62
16.5k
  static ASTNodeKind getFromNodeKind() {
63
16.5k
    return ASTNodeKind(KindToKindId<T>::Id);
64
16.5k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ForStmt>()
Line
Count
Source
62
2.41k
  static ASTNodeKind getFromNodeKind() {
63
2.41k
    return ASTNodeKind(KindToKindId<T>::Id);
64
2.41k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXForRangeStmt>()
Line
Count
Source
62
1.09k
  static ASTNodeKind getFromNodeKind() {
63
1.09k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.09k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DesignatedInitExpr>()
Line
Count
Source
62
303
  static ASTNodeKind getFromNodeKind() {
63
303
    return ASTNodeKind(KindToKindId<T>::Id);
64
303
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryExprOrTypeTraitExpr>()
Line
Count
Source
62
3.60k
  static ASTNodeKind getFromNodeKind() {
63
3.60k
    return ASTNodeKind(KindToKindId<T>::Id);
64
3.60k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXRecordDecl>()
Line
Count
Source
62
22.7k
  static ASTNodeKind getFromNodeKind() {
63
22.7k
    return ASTNodeKind(KindToKindId<T>::Id);
64
22.7k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMethodDecl>()
Line
Count
Source
62
1.41k
  static ASTNodeKind getFromNodeKind() {
63
1.41k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.41k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclaratorDecl>()
Line
Count
Source
62
107
  static ASTNodeKind getFromNodeKind() {
63
107
    return ASTNodeKind(KindToKindId<T>::Id);
64
107
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OverloadExpr>()
Line
Count
Source
62
44
  static ASTNodeKind getFromNodeKind() {
63
44
    return ASTNodeKind(KindToKindId<T>::Id);
64
44
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCatchStmt>()
Line
Count
Source
62
89
  static ASTNodeKind getFromNodeKind() {
63
89
    return ASTNodeKind(KindToKindId<T>::Id);
64
89
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructorDecl>()
Line
Count
Source
62
8.55k
  static ASTNodeKind getFromNodeKind() {
63
8.55k
    return ASTNodeKind(KindToKindId<T>::Id);
64
8.55k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructExpr>()
Line
Count
Source
62
3.69k
  static ASTNodeKind getFromNodeKind() {
63
3.69k
    return ASTNodeKind(KindToKindId<T>::Id);
64
3.69k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IfStmt>()
Line
Count
Source
62
2.56k
  static ASTNodeKind getFromNodeKind() {
63
2.56k
    return ASTNodeKind(KindToKindId<T>::Id);
64
2.56k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArraySubscriptExpr>()
Line
Count
Source
62
1.09k
  static ASTNodeKind getFromNodeKind() {
63
1.09k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.09k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryOperator>()
Line
Count
Source
62
93.4k
  static ASTNodeKind getFromNodeKind() {
63
93.4k
    return ASTNodeKind(KindToKindId<T>::Id);
64
93.4k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CastExpr>()
Line
Count
Source
62
5.04k
  static ASTNodeKind getFromNodeKind() {
63
5.04k
    return ASTNodeKind(KindToKindId<T>::Id);
64
5.04k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExplicitCastExpr>()
Line
Count
Source
62
3.00k
  static ASTNodeKind getFromNodeKind() {
63
3.00k
    return ASTNodeKind(KindToKindId<T>::Id);
64
3.00k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitCastExpr>()
Line
Count
Source
62
953
  static ASTNodeKind getFromNodeKind() {
63
953
    return ASTNodeKind(KindToKindId<T>::Id);
64
953
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagDecl>()
Line
Count
Source
62
183
  static ASTNodeKind getFromNodeKind() {
63
183
    return ASTNodeKind(KindToKindId<T>::Id);
64
183
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AbstractConditionalOperator>()
Line
Count
Source
62
926
  static ASTNodeKind getFromNodeKind() {
63
926
    return ASTNodeKind(KindToKindId<T>::Id);
64
926
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMethodDecl>()
Line
Count
Source
62
21.4k
  static ASTNodeKind getFromNodeKind() {
63
21.4k
    return ASTNodeKind(KindToKindId<T>::Id);
64
21.4k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberExpr>()
Line
Count
Source
62
640
  static ASTNodeKind getFromNodeKind() {
63
640
    return ASTNodeKind(KindToKindId<T>::Id);
64
640
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDecl>()
Line
Count
Source
62
112
  static ASTNodeKind getFromNodeKind() {
63
112
    return ASTNodeKind(KindToKindId<T>::Id);
64
112
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingShadowDecl>()
Line
Count
Source
62
100
  static ASTNodeKind getFromNodeKind() {
63
100
    return ASTNodeKind(KindToKindId<T>::Id);
64
100
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VariableArrayType>()
Line
Count
Source
62
867
  static ASTNodeKind getFromNodeKind() {
63
867
    return ASTNodeKind(KindToKindId<T>::Id);
64
867
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ElaboratedType>()
Line
Count
Source
62
147
  static ASTNodeKind getFromNodeKind() {
63
147
    return ASTNodeKind(KindToKindId<T>::Id);
64
147
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecayedType>()
Line
Count
Source
62
75
  static ASTNodeKind getFromNodeKind() {
63
75
    return ASTNodeKind(KindToKindId<T>::Id);
64
75
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchStmt>()
Line
Count
Source
62
703
  static ASTNodeKind getFromNodeKind() {
63
703
    return ASTNodeKind(KindToKindId<T>::Id);
64
703
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceDecl>()
Line
Count
Source
62
287
  static ASTNodeKind getFromNodeKind() {
63
287
    return ASTNodeKind(KindToKindId<T>::Id);
64
287
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CaseStmt>()
Line
Count
Source
62
142
  static ASTNodeKind getFromNodeKind() {
63
142
    return ASTNodeKind(KindToKindId<T>::Id);
64
142
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReturnStmt>()
Line
Count
Source
62
1.01k
  static ASTNodeKind getFromNodeKind() {
63
1.01k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.01k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParmVarDecl>()
Line
Count
Source
62
51.5k
  static ASTNodeKind getFromNodeKind() {
63
51.5k
    return ASTNodeKind(KindToKindId<T>::Id);
64
51.5k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNewExpr>()
Line
Count
Source
62
207
  static ASTNodeKind getFromNodeKind() {
63
207
    return ASTNodeKind(KindToKindId<T>::Id);
64
207
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumDecl>()
Line
Count
Source
62
3.16k
  static ASTNodeKind getFromNodeKind() {
63
3.16k
    return ASTNodeKind(KindToKindId<T>::Id);
64
3.16k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPExecutableDirective>()
Line
Count
Source
62
234
  static ASTNodeKind getFromNodeKind() {
63
234
    return ASTNodeKind(KindToKindId<T>::Id);
64
234
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPDefaultClause>()
Line
Count
Source
62
105
  static ASTNodeKind getFromNodeKind() {
63
105
    return ASTNodeKind(KindToKindId<T>::Id);
64
105
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXOperatorCallExpr>()
Line
Count
Source
62
8.07k
  static ASTNodeKind getFromNodeKind() {
63
8.07k
    return ASTNodeKind(KindToKindId<T>::Id);
64
8.07k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefType>()
Line
Count
Source
62
1.10k
  static ASTNodeKind getFromNodeKind() {
63
1.10k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.10k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefDecl>()
Line
Count
Source
62
2.16k
  static ASTNodeKind getFromNodeKind() {
63
2.16k
    return ASTNodeKind(KindToKindId<T>::Id);
64
2.16k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PointerType>()
Line
Count
Source
62
1.14k
  static ASTNodeKind getFromNodeKind() {
63
1.14k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.14k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordType>()
Line
Count
Source
62
393
  static ASTNodeKind getFromNodeKind() {
63
393
    return ASTNodeKind(KindToKindId<T>::Id);
64
393
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCObjectPointerType>()
Line
Count
Source
62
1.09k
  static ASTNodeKind getFromNodeKind() {
63
1.09k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.09k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCInterfaceDecl>()
Line
Count
Source
62
1.27k
  static ASTNodeKind getFromNodeKind() {
63
1.27k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.27k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConditionalOperator>()
Line
Count
Source
62
4.55k
  static ASTNodeKind getFromNodeKind() {
63
4.55k
    return ASTNodeKind(KindToKindId<T>::Id);
64
4.55k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockDecl>()
Line
Count
Source
62
1.26k
  static ASTNodeKind getFromNodeKind() {
63
1.26k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.26k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CStyleCastExpr>()
Line
Count
Source
62
153
  static ASTNodeKind getFromNodeKind() {
63
153
    return ASTNodeKind(KindToKindId<T>::Id);
64
153
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordDecl>()
Line
Count
Source
62
2.37k
  static ASTNodeKind getFromNodeKind() {
63
2.37k
    return ASTNodeKind(KindToKindId<T>::Id);
64
2.37k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAutoreleasePoolStmt>()
Line
Count
Source
62
2.31k
  static ASTNodeKind getFromNodeKind() {
63
2.31k
    return ASTNodeKind(KindToKindId<T>::Id);
64
2.31k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarRefExpr>()
Line
Count
Source
62
94
  static ASTNodeKind getFromNodeKind() {
63
94
    return ASTNodeKind(KindToKindId<T>::Id);
64
94
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GotoStmt>()
Line
Count
Source
62
533
  static ASTNodeKind getFromNodeKind() {
63
533
    return ASTNodeKind(KindToKindId<T>::Id);
64
533
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReferenceType>()
Line
Count
Source
62
50.0k
  static ASTNodeKind getFromNodeKind() {
63
50.0k
    return ASTNodeKind(KindToKindId<T>::Id);
64
50.0k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TranslationUnitDecl>()
Line
Count
Source
62
1.90k
  static ASTNodeKind getFromNodeKind() {
63
1.90k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.90k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThisExpr>()
Line
Count
Source
62
250
  static ASTNodeKind getFromNodeKind() {
63
250
    return ASTNodeKind(KindToKindId<T>::Id);
64
250
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FriendDecl>()
Line
Count
Source
62
500
  static ASTNodeKind getFromNodeKind() {
63
500
    return ASTNodeKind(KindToKindId<T>::Id);
64
500
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefNameDecl>()
Line
Count
Source
62
1.38k
  static ASTNodeKind getFromNodeKind() {
63
1.38k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.38k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ValueDecl>()
Line
Count
Source
62
142
  static ASTNodeKind getFromNodeKind() {
63
142
    return ASTNodeKind(KindToKindId<T>::Id);
64
142
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CharacterLiteral>()
Line
Count
Source
62
146
  static ASTNodeKind getFromNodeKind() {
63
146
    return ASTNodeKind(KindToKindId<T>::Id);
64
146
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBoolLiteralExpr>()
Line
Count
Source
62
276
  static ASTNodeKind getFromNodeKind() {
63
276
    return ASTNodeKind(KindToKindId<T>::Id);
64
276
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FloatingLiteral>()
Line
Count
Source
62
376
  static ASTNodeKind getFromNodeKind() {
63
376
    return ASTNodeKind(KindToKindId<T>::Id);
64
376
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AccessSpecDecl>()
Line
Count
Source
62
58
  static ASTNodeKind getFromNodeKind() {
63
58
    return ASTNodeKind(KindToKindId<T>::Id);
64
58
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AddrLabelExpr>()
Line
Count
Source
62
85
  static ASTNodeKind getFromNodeKind() {
63
85
    return ASTNodeKind(KindToKindId<T>::Id);
64
85
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArrayType>()
Line
Count
Source
62
115
  static ASTNodeKind getFromNodeKind() {
63
115
    return ASTNodeKind(KindToKindId<T>::Id);
64
115
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AsmStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicExpr>()
Line
Count
Source
62
85
  static ASTNodeKind getFromNodeKind() {
63
85
    return ASTNodeKind(KindToKindId<T>::Id);
64
85
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicType>()
Line
Count
Source
62
90
  static ASTNodeKind getFromNodeKind() {
63
90
    return ASTNodeKind(KindToKindId<T>::Id);
64
90
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AutoType>()
Line
Count
Source
62
75
  static ASTNodeKind getFromNodeKind() {
63
75
    return ASTNodeKind(KindToKindId<T>::Id);
64
75
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryConditionalOperator>()
Line
Count
Source
62
101
  static ASTNodeKind getFromNodeKind() {
63
101
    return ASTNodeKind(KindToKindId<T>::Id);
64
101
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockExpr>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BreakStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BuiltinType>()
Line
Count
Source
62
124
  static ASTNodeKind getFromNodeKind() {
63
124
    return ASTNodeKind(KindToKindId<T>::Id);
64
124
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ChooseExpr>()
Line
Count
Source
62
101
  static ASTNodeKind getFromNodeKind() {
63
101
    return ASTNodeKind(KindToKindId<T>::Id);
64
101
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateDecl>()
Line
Count
Source
62
5.66k
  static ASTNodeKind getFromNodeKind() {
63
5.66k
    return ASTNodeKind(KindToKindId<T>::Id);
64
5.66k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ComplexType>()
Line
Count
Source
62
79
  static ASTNodeKind getFromNodeKind() {
63
79
    return ASTNodeKind(KindToKindId<T>::Id);
64
79
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundLiteralExpr>()
Line
Count
Source
62
92
  static ASTNodeKind getFromNodeKind() {
63
92
    return ASTNodeKind(KindToKindId<T>::Id);
64
92
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantArrayType>()
Line
Count
Source
62
101
  static ASTNodeKind getFromNodeKind() {
63
101
    return ASTNodeKind(KindToKindId<T>::Id);
64
101
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantExpr>()
Line
Count
Source
62
82
  static ASTNodeKind getFromNodeKind() {
63
82
    return ASTNodeKind(KindToKindId<T>::Id);
64
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ContinueStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CUDAKernelCallExpr>()
Line
Count
Source
62
52
  static ASTNodeKind getFromNodeKind() {
63
52
    return ASTNodeKind(KindToKindId<T>::Id);
64
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBindTemporaryExpr>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstCastExpr>()
Line
Count
Source
62
46
  static ASTNodeKind getFromNodeKind() {
63
46
    return ASTNodeKind(KindToKindId<T>::Id);
64
46
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConversionDecl>()
Line
Count
Source
62
102
  static ASTNodeKind getFromNodeKind() {
63
102
    return ASTNodeKind(KindToKindId<T>::Id);
64
102
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeductionGuideDecl>()
Line
Count
Source
62
110
  static ASTNodeKind getFromNodeKind() {
63
110
    return ASTNodeKind(KindToKindId<T>::Id);
64
110
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDefaultArgExpr>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeleteExpr>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDependentScopeMemberExpr>()
Line
Count
Source
62
1.36k
  static ASTNodeKind getFromNodeKind() {
63
1.36k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.36k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDestructorDecl>()
Line
Count
Source
62
73
  static ASTNodeKind getFromNodeKind() {
63
73
    return ASTNodeKind(KindToKindId<T>::Id);
64
73
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDynamicCastExpr>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXFunctionalCastExpr>()
Line
Count
Source
62
71
  static ASTNodeKind getFromNodeKind() {
63
71
    return ASTNodeKind(KindToKindId<T>::Id);
64
71
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNoexceptExpr>()
Line
Count
Source
62
838
  static ASTNodeKind getFromNodeKind() {
63
838
    return ASTNodeKind(KindToKindId<T>::Id);
64
838
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNullPtrLiteralExpr>()
Line
Count
Source
62
61
  static ASTNodeKind getFromNodeKind() {
63
61
    return ASTNodeKind(KindToKindId<T>::Id);
64
61
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXReinterpretCastExpr>()
Line
Count
Source
62
61
  static ASTNodeKind getFromNodeKind() {
63
61
    return ASTNodeKind(KindToKindId<T>::Id);
64
61
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStaticCastExpr>()
Line
Count
Source
62
63
  static ASTNodeKind getFromNodeKind() {
63
63
    return ASTNodeKind(KindToKindId<T>::Id);
64
63
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStdInitializerListExpr>()
Line
Count
Source
62
58
  static ASTNodeKind getFromNodeKind() {
63
58
    return ASTNodeKind(KindToKindId<T>::Id);
64
58
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTemporaryObjectExpr>()
Line
Count
Source
62
80
  static ASTNodeKind getFromNodeKind() {
63
80
    return ASTNodeKind(KindToKindId<T>::Id);
64
80
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThrowExpr>()
Line
Count
Source
62
55
  static ASTNodeKind getFromNodeKind() {
63
55
    return ASTNodeKind(KindToKindId<T>::Id);
64
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTryStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXUnresolvedConstructExpr>()
Line
Count
Source
62
361
  static ASTNodeKind getFromNodeKind() {
63
361
    return ASTNodeKind(KindToKindId<T>::Id);
64
361
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecltypeType>()
Line
Count
Source
62
75
  static ASTNodeKind getFromNodeKind() {
63
75
    return ASTNodeKind(KindToKindId<T>::Id);
64
75
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeducedTemplateSpecializationType>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DefaultStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DependentSizedArrayType>()
Line
Count
Source
62
64
  static ASTNodeKind getFromNodeKind() {
63
64
    return ASTNodeKind(KindToKindId<T>::Id);
64
64
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DoStmt>()
Line
Count
Source
62
105
  static ASTNodeKind getFromNodeKind() {
63
105
    return ASTNodeKind(KindToKindId<T>::Id);
64
105
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumConstantDecl>()
Line
Count
Source
62
176
  static ASTNodeKind getFromNodeKind() {
63
176
    return ASTNodeKind(KindToKindId<T>::Id);
64
176
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumType>()
Line
Count
Source
62
76
  static ASTNodeKind getFromNodeKind() {
63
76
    return ASTNodeKind(KindToKindId<T>::Id);
64
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExprWithCleanups>()
Line
Count
Source
62
68
  static ASTNodeKind getFromNodeKind() {
63
68
    return ASTNodeKind(KindToKindId<T>::Id);
64
68
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchCase>()
Line
Count
Source
62
97
  static ASTNodeKind getFromNodeKind() {
63
97
    return ASTNodeKind(KindToKindId<T>::Id);
64
97
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionProtoType>()
Line
Count
Source
62
168
  static ASTNodeKind getFromNodeKind() {
63
168
    return ASTNodeKind(KindToKindId<T>::Id);
64
168
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionTemplateDecl>()
Line
Count
Source
62
4.27k
  static ASTNodeKind getFromNodeKind() {
63
4.27k
    return ASTNodeKind(KindToKindId<T>::Id);
64
4.27k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionType>()
Line
Count
Source
62
94
  static ASTNodeKind getFromNodeKind() {
63
94
    return ASTNodeKind(KindToKindId<T>::Id);
64
94
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GNUNullExpr>()
Line
Count
Source
62
61
  static ASTNodeKind getFromNodeKind() {
63
61
    return ASTNodeKind(KindToKindId<T>::Id);
64
61
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StmtExpr>()
Line
Count
Source
62
108
  static ASTNodeKind getFromNodeKind() {
63
108
    return ASTNodeKind(KindToKindId<T>::Id);
64
108
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateSpecializationType>()
Line
Count
Source
62
191
  static ASTNodeKind getFromNodeKind() {
63
191
    return ASTNodeKind(KindToKindId<T>::Id);
64
191
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::WhileStmt>()
Line
Count
Source
62
113
  static ASTNodeKind getFromNodeKind() {
63
113
    return ASTNodeKind(KindToKindId<T>::Id);
64
113
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InjectedClassNameType>()
Line
Count
Source
62
76
  static ASTNodeKind getFromNodeKind() {
63
76
    return ASTNodeKind(KindToKindId<T>::Id);
64
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelStmt>()
Line
Count
Source
62
95
  static ASTNodeKind getFromNodeKind() {
63
95
    return ASTNodeKind(KindToKindId<T>::Id);
64
95
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagType>()
Line
Count
Source
62
70
  static ASTNodeKind getFromNodeKind() {
63
70
    return ASTNodeKind(KindToKindId<T>::Id);
64
70
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmType>()
Line
Count
Source
62
838
  static ASTNodeKind getFromNodeKind() {
63
838
    return ASTNodeKind(KindToKindId<T>::Id);
64
838
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingType>()
Line
Count
Source
62
24
  static ASTNodeKind getFromNodeKind() {
63
24
    return ASTNodeKind(KindToKindId<T>::Id);
64
24
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedMemberExpr>()
Line
Count
Source
62
1.14k
  static ASTNodeKind getFromNodeKind() {
63
1.14k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.14k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstTemplateTypeParmType>()
Line
Count
Source
62
82
  static ASTNodeKind getFromNodeKind() {
63
82
    return ASTNodeKind(KindToKindId<T>::Id);
64
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StringLiteral>()
Line
Count
Source
62
154
  static ASTNodeKind getFromNodeKind() {
63
154
    return ASTNodeKind(KindToKindId<T>::Id);
64
154
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OpaqueValueExpr>()
Line
Count
Source
62
98
  static ASTNodeKind getFromNodeKind() {
63
98
    return ASTNodeKind(KindToKindId<T>::Id);
64
98
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImaginaryLiteral>()
Line
Count
Source
62
58
  static ASTNodeKind getFromNodeKind() {
63
58
    return ASTNodeKind(KindToKindId<T>::Id);
64
58
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitValueInitExpr>()
Line
Count
Source
62
60
  static ASTNodeKind getFromNodeKind() {
63
60
    return ASTNodeKind(KindToKindId<T>::Id);
64
60
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IncompleteArrayType>()
Line
Count
Source
62
55
  static ASTNodeKind getFromNodeKind() {
63
55
    return ASTNodeKind(KindToKindId<T>::Id);
64
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IndirectFieldDecl>()
Line
Count
Source
62
62
  static ASTNodeKind getFromNodeKind() {
63
62
    return ASTNodeKind(KindToKindId<T>::Id);
64
62
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenType>()
Line
Count
Source
62
85
  static ASTNodeKind getFromNodeKind() {
63
85
    return ASTNodeKind(KindToKindId<T>::Id);
64
85
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LValueReferenceType>()
Line
Count
Source
62
64
  static ASTNodeKind getFromNodeKind() {
63
64
    return ASTNodeKind(KindToKindId<T>::Id);
64
64
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelDecl>()
Line
Count
Source
62
64
  static ASTNodeKind getFromNodeKind() {
63
64
    return ASTNodeKind(KindToKindId<T>::Id);
64
64
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LinkageSpecDecl>()
Line
Count
Source
62
52
  static ASTNodeKind getFromNodeKind() {
63
52
    return ASTNodeKind(KindToKindId<T>::Id);
64
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MaterializeTemporaryExpr>()
Line
Count
Source
62
70
  static ASTNodeKind getFromNodeKind() {
63
70
    return ASTNodeKind(KindToKindId<T>::Id);
64
70
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberPointerType>()
Line
Count
Source
62
82
  static ASTNodeKind getFromNodeKind() {
63
82
    return ASTNodeKind(KindToKindId<T>::Id);
64
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceAliasDecl>()
Line
Count
Source
62
48
  static ASTNodeKind getFromNodeKind() {
63
48
    return ASTNodeKind(KindToKindId<T>::Id);
64
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NonTypeTemplateParmDecl>()
Line
Count
Source
62
51
  static ASTNodeKind getFromNodeKind() {
63
51
    return ASTNodeKind(KindToKindId<T>::Id);
64
51
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NullStmt>()
Line
Count
Source
62
64
  static ASTNodeKind getFromNodeKind() {
63
64
    return ASTNodeKind(KindToKindId<T>::Id);
64
64
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtCatchStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryDecl>()
Line
Count
Source
62
48
  static ASTNodeKind getFromNodeKind() {
63
48
    return ASTNodeKind(KindToKindId<T>::Id);
64
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryImplDecl>()
Line
Count
Source
62
48
  static ASTNodeKind getFromNodeKind() {
63
48
    return ASTNodeKind(KindToKindId<T>::Id);
64
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtFinallyStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCImplementationDecl>()
Line
Count
Source
62
48
  static ASTNodeKind getFromNodeKind() {
63
48
    return ASTNodeKind(KindToKindId<T>::Id);
64
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarDecl>()
Line
Count
Source
62
48
  static ASTNodeKind getFromNodeKind() {
63
48
    return ASTNodeKind(KindToKindId<T>::Id);
64
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCPropertyDecl>()
Line
Count
Source
62
52
  static ASTNodeKind getFromNodeKind() {
63
52
    return ASTNodeKind(KindToKindId<T>::Id);
64
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCProtocolDecl>()
Line
Count
Source
62
48
  static ASTNodeKind getFromNodeKind() {
63
48
    return ASTNodeKind(KindToKindId<T>::Id);
64
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtThrowStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtTryStmt>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenExpr>()
Line
Count
Source
62
61
  static ASTNodeKind getFromNodeKind() {
63
61
    return ASTNodeKind(KindToKindId<T>::Id);
64
61
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenListExpr>()
Line
Count
Source
62
61
  static ASTNodeKind getFromNodeKind() {
63
61
    return ASTNodeKind(KindToKindId<T>::Id);
64
61
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PredefinedExpr>()
Line
Count
Source
62
91
  static ASTNodeKind getFromNodeKind() {
63
91
    return ASTNodeKind(KindToKindId<T>::Id);
64
91
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RValueReferenceType>()
Line
Count
Source
62
64
  static ASTNodeKind getFromNodeKind() {
63
64
    return ASTNodeKind(KindToKindId<T>::Id);
64
64
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StaticAssertDecl>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstNonTypeTemplateParmExpr>()
Line
Count
Source
62
52
  static ASTNodeKind getFromNodeKind() {
63
52
    return ASTNodeKind(KindToKindId<T>::Id);
64
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmDecl>()
Line
Count
Source
62
649
  static ASTNodeKind getFromNodeKind() {
63
649
    return ASTNodeKind(KindToKindId<T>::Id);
64
649
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasDecl>()
Line
Count
Source
62
98
  static ASTNodeKind getFromNodeKind() {
63
98
    return ASTNodeKind(KindToKindId<T>::Id);
64
98
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasTemplateDecl>()
Line
Count
Source
62
53
  static ASTNodeKind getFromNodeKind() {
63
53
    return ASTNodeKind(KindToKindId<T>::Id);
64
53
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryTransformType>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedLookupExpr>()
Line
Count
Source
62
840
  static ASTNodeKind getFromNodeKind() {
63
840
    return ASTNodeKind(KindToKindId<T>::Id);
64
840
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingTypenameDecl>()
Line
Count
Source
62
48
  static ASTNodeKind getFromNodeKind() {
63
48
    return ASTNodeKind(KindToKindId<T>::Id);
64
48
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingValueDecl>()
Line
Count
Source
62
51
  static ASTNodeKind getFromNodeKind() {
63
51
    return ASTNodeKind(KindToKindId<T>::Id);
64
51
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UserDefinedLiteral>()
Line
Count
Source
62
49
  static ASTNodeKind getFromNodeKind() {
63
49
    return ASTNodeKind(KindToKindId<T>::Id);
64
49
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDirectiveDecl>()
Line
Count
Source
62
52
  static ASTNodeKind getFromNodeKind() {
63
52
    return ASTNodeKind(KindToKindId<T>::Id);
64
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTypeidExpr>()
Line
Count
Source
62
1.07k
  static ASTNodeKind getFromNodeKind() {
63
1.07k
    return ASTNodeKind(KindToKindId<T>::Id);
64
1.07k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GenericSelectionExpr>()
Line
Count
Source
62
264
  static ASTNodeKind getFromNodeKind() {
63
264
    return ASTNodeKind(KindToKindId<T>::Id);
64
264
  }
65
66
  /// \{
67
  /// Construct an identifier for the dynamic type of the node
68
  static ASTNodeKind getFromNode(const Decl &D);
69
  static ASTNodeKind getFromNode(const Stmt &S);
70
  static ASTNodeKind getFromNode(const Type &T);
71
  static ASTNodeKind getFromNode(const OMPClause &C);
72
  /// \}
73
74
  /// Returns \c true if \c this and \c Other represent the same kind.
75
1.36M
  bool isSame(ASTNodeKind Other) const {
76
1.36M
    return KindId != NKI_None && 
KindId == Other.KindId1.36M
;
77
1.36M
  }
78
79
  /// Returns \c true only for the default \c ASTNodeKind()
80
644
  bool isNone() const { return KindId == NKI_None; }
81
82
  /// Returns \c true if \c this is a base kind of (or same as) \c Other.
83
  /// \param Distance If non-null, used to return the distance between \c this
84
  /// and \c Other in the class hierarchy.
85
  bool isBaseOf(ASTNodeKind Other, unsigned *Distance = nullptr) const;
86
87
  /// String representation of the kind.
88
  StringRef asStringRef() const;
89
90
  /// Strict weak ordering for ASTNodeKind.
91
241k
  bool operator<(const ASTNodeKind &Other) const {
92
241k
    return KindId < Other.KindId;
93
241k
  }
94
95
  /// Return the most derived type between \p Kind1 and \p Kind2.
96
  ///
97
  /// Return ASTNodeKind() if they are not related.
98
  static ASTNodeKind getMostDerivedType(ASTNodeKind Kind1, ASTNodeKind Kind2);
99
100
  /// Return the most derived common ancestor between Kind1 and Kind2.
101
  ///
102
  /// Return ASTNodeKind() if they are not related.
103
  static ASTNodeKind getMostDerivedCommonAncestor(ASTNodeKind Kind1,
104
                                                  ASTNodeKind Kind2);
105
106
  /// Hooks for using ASTNodeKind as a key in a DenseMap.
107
  struct DenseMapInfo {
108
    // ASTNodeKind() is a good empty key because it is represented as a 0.
109
714k
    static inline ASTNodeKind getEmptyKey() { return ASTNodeKind(); }
110
    // NKI_NumberOfKinds is not a valid value, so it is good for a
111
    // tombstone key.
112
586k
    static inline ASTNodeKind getTombstoneKey() {
113
586k
      return ASTNodeKind(NKI_NumberOfKinds);
114
586k
    }
115
210k
    static unsigned getHashValue(const ASTNodeKind &Val) { return Val.KindId; }
116
3.41M
    static bool isEqual(const ASTNodeKind &LHS, const ASTNodeKind &RHS) {
117
3.41M
      return LHS.KindId == RHS.KindId;
118
3.41M
    }
119
  };
120
121
  /// Check if the given ASTNodeKind identifies a type that offers pointer
122
  /// identity. This is useful for the fast path in DynTypedNode.
123
115k
  bool hasPointerIdentity() const {
124
115k
    return KindId > NKI_LastKindWithoutPointerIdentity;
125
115k
  }
126
127
private:
128
  /// Kind ids.
129
  ///
130
  /// Includes all possible base and derived kinds.
131
  enum NodeKindId {
132
    NKI_None,
133
    NKI_TemplateArgument,
134
    NKI_TemplateName,
135
    NKI_NestedNameSpecifierLoc,
136
    NKI_QualType,
137
    NKI_TypeLoc,
138
    NKI_LastKindWithoutPointerIdentity = NKI_TypeLoc,
139
    NKI_CXXCtorInitializer,
140
    NKI_NestedNameSpecifier,
141
    NKI_Decl,
142
#define DECL(DERIVED, BASE) NKI_##DERIVED##Decl,
143
#include "clang/AST/DeclNodes.inc"
144
    NKI_Stmt,
145
#define STMT(DERIVED, BASE) NKI_##DERIVED,
146
#include "clang/AST/StmtNodes.inc"
147
    NKI_Type,
148
#define TYPE(DERIVED, BASE) NKI_##DERIVED##Type,
149
#include "clang/AST/TypeNodes.inc"
150
    NKI_OMPClause,
151
#define OPENMP_CLAUSE(TextualSpelling, Class) NKI_##Class,
152
#include "clang/Basic/OpenMPKinds.def"
153
    NKI_NumberOfKinds
154
  };
155
156
  /// Use getFromNodeKind<T>() to construct the kind.
157
4.64M
  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(TemplateName)
193
KIND_TO_KIND_ID(NestedNameSpecifier)
194
KIND_TO_KIND_ID(NestedNameSpecifierLoc)
195
KIND_TO_KIND_ID(QualType)
196
KIND_TO_KIND_ID(TypeLoc)
197
KIND_TO_KIND_ID(Decl)
198
KIND_TO_KIND_ID(Stmt)
199
KIND_TO_KIND_ID(Type)
200
KIND_TO_KIND_ID(OMPClause)
201
#define DECL(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Decl)
202
#include "clang/AST/DeclNodes.inc"
203
#define STMT(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED)
204
#include "clang/AST/StmtNodes.inc"
205
#define TYPE(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Type)
206
#include "clang/AST/TypeNodes.inc"
207
#define OPENMP_CLAUSE(TextualSpelling, Class) KIND_TO_KIND_ID(Class)
208
#include "clang/Basic/OpenMPKinds.def"
209
#undef KIND_TO_KIND_ID
210
211
1.40k
inline raw_ostream &operator<<(raw_ostream &OS, ASTNodeKind K) {
212
1.40k
  OS << K.asStringRef();
213
1.40k
  return OS;
214
1.40k
}
215
216
/// A dynamically typed AST node container.
217
///
218
/// Stores an AST node in a type safe way. This allows writing code that
219
/// works with different kinds of AST nodes, despite the fact that they don't
220
/// have a common base class.
221
///
222
/// Use \c create(Node) to create a \c DynTypedNode from an AST node,
223
/// and \c get<T>() to retrieve the node as type T if the types match.
224
///
225
/// See \c ASTNodeKind for which node base types are currently supported;
226
/// You can create DynTypedNodes for all nodes in the inheritance hierarchy of
227
/// the supported base types.
228
class DynTypedNode {
229
public:
230
  /// Creates a \c DynTypedNode from \c Node.
231
  template <typename T>
232
617k
  static DynTypedNode create(const T &Node) {
233
617k
    return BaseConverter<T>::create(Node);
234
617k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Decl>(clang::Decl const&)
Line
Count
Source
232
148k
  static DynTypedNode create(const T &Node) {
233
148k
    return BaseConverter<T>::create(Node);
234
148k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Stmt>(clang::Stmt const&)
Line
Count
Source
232
136k
  static DynTypedNode create(const T &Node) {
233
136k
    return BaseConverter<T>::create(Node);
234
136k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Expr>(clang::Expr const&)
Line
Count
Source
232
215k
  static DynTypedNode create(const T &Node) {
233
215k
    return BaseConverter<T>::create(Node);
234
215k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TypeLoc>(clang::TypeLoc const&)
Line
Count
Source
232
49.7k
  static DynTypedNode create(const T &Node) {
233
49.7k
    return BaseConverter<T>::create(Node);
234
49.7k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifierLoc>(clang::NestedNameSpecifierLoc const&)
Line
Count
Source
232
14.9k
  static DynTypedNode create(const T &Node) {
233
14.9k
    return BaseConverter<T>::create(Node);
234
14.9k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TranslationUnitDecl>(clang::TranslationUnitDecl const&)
Line
Count
Source
232
393
  static DynTypedNode create(const T &Node) {
233
393
    return BaseConverter<T>::create(Node);
234
393
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::EnumConstantDecl>(clang::EnumConstantDecl const&)
Line
Count
Source
232
15
  static DynTypedNode create(const T &Node) {
233
15
    return BaseConverter<T>::create(Node);
234
15
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclRefExpr>(clang::DeclRefExpr const&)
Line
Count
Source
232
45
  static DynTypedNode create(const T &Node) {
233
45
    return BaseConverter<T>::create(Node);
234
45
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ClassTemplateDecl>(clang::ClassTemplateDecl const&)
Line
Count
Source
232
102
  static DynTypedNode create(const T &Node) {
233
102
    return BaseConverter<T>::create(Node);
234
102
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::QualType>(clang::QualType const&)
Line
Count
Source
232
23.1k
  static DynTypedNode create(const T &Node) {
233
23.1k
    return BaseConverter<T>::create(Node);
234
23.1k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateName>(clang::TemplateName const&)
Line
Count
Source
232
2
  static DynTypedNode create(const T &Node) {
233
2
    return BaseConverter<T>::create(Node);
234
2
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::VarDecl>(clang::VarDecl const&)
Line
Count
Source
232
653
  static DynTypedNode create(const T &Node) {
233
653
    return BaseConverter<T>::create(Node);
234
653
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NamedDecl>(clang::NamedDecl const&)
Line
Count
Source
232
1.39k
  static DynTypedNode create(const T &Node) {
233
1.39k
    return BaseConverter<T>::create(Node);
234
1.39k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Type>(clang::Type const&)
Line
Count
Source
232
20.2k
  static DynTypedNode create(const T &Node) {
233
20.2k
    return BaseConverter<T>::create(Node);
234
20.2k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMemberCallExpr>(clang::CXXMemberCallExpr const&)
Line
Count
Source
232
18
  static DynTypedNode create(const T &Node) {
233
18
    return BaseConverter<T>::create(Node);
234
18
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::UsingShadowDecl>(clang::UsingShadowDecl const&)
Line
Count
Source
232
12
  static DynTypedNode create(const T &Node) {
233
12
    return BaseConverter<T>::create(Node);
234
12
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::FieldDecl>(clang::FieldDecl const&)
Line
Count
Source
232
74
  static DynTypedNode create(const T &Node) {
233
74
    return BaseConverter<T>::create(Node);
234
74
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclStmt>(clang::DeclStmt const&)
Line
Count
Source
232
129
  static DynTypedNode create(const T &Node) {
233
129
    return BaseConverter<T>::create(Node);
234
129
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXRecordDecl>(clang::CXXRecordDecl const&)
Line
Count
Source
232
2.30k
  static DynTypedNode create(const T &Node) {
233
2.30k
    return BaseConverter<T>::create(Node);
234
2.30k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMethodDecl>(clang::CXXMethodDecl const&)
Line
Count
Source
232
524
  static DynTypedNode create(const T &Node) {
233
524
    return BaseConverter<T>::create(Node);
234
524
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ValueDecl>(clang::ValueDecl const&)
Line
Count
Source
232
19
  static DynTypedNode create(const T &Node) {
233
19
    return BaseConverter<T>::create(Node);
234
19
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifier>(clang::NestedNameSpecifier const&)
Line
Count
Source
232
591
  static DynTypedNode create(const T &Node) {
233
591
    return BaseConverter<T>::create(Node);
234
591
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NamespaceDecl>(clang::NamespaceDecl const&)
Line
Count
Source
232
36
  static DynTypedNode create(const T &Node) {
233
36
    return BaseConverter<T>::create(Node);
234
36
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::SwitchCase>(clang::SwitchCase const&)
Line
Count
Source
232
23
  static DynTypedNode create(const T &Node) {
233
23
    return BaseConverter<T>::create(Node);
234
23
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXCtorInitializer>(clang::CXXCtorInitializer const&)
Line
Count
Source
232
192
  static DynTypedNode create(const T &Node) {
233
192
    return BaseConverter<T>::create(Node);
234
192
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::FunctionDecl>(clang::FunctionDecl const&)
Line
Count
Source
232
787
  static DynTypedNode create(const T &Node) {
233
787
    return BaseConverter<T>::create(Node);
234
787
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::OMPClause>(clang::OMPClause const&)
Line
Count
Source
232
24
  static DynTypedNode create(const T &Node) {
233
24
    return BaseConverter<T>::create(Node);
234
24
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CompoundStmt>(clang::CompoundStmt const&)
Line
Count
Source
232
434
  static DynTypedNode create(const T &Node) {
233
434
    return BaseConverter<T>::create(Node);
234
434
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::UnaryOperator>(clang::UnaryOperator const&)
Line
Count
Source
232
27
  static DynTypedNode create(const T &Node) {
233
27
    return BaseConverter<T>::create(Node);
234
27
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ExplicitCastExpr>(clang::ExplicitCastExpr const&)
Line
Count
Source
232
110
  static DynTypedNode create(const T &Node) {
233
110
    return BaseConverter<T>::create(Node);
234
110
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ParmVarDecl>(clang::ParmVarDecl const&)
Line
Count
Source
232
462
  static DynTypedNode create(const T &Node) {
233
462
    return BaseConverter<T>::create(Node);
234
462
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMethodDecl>(clang::ObjCMethodDecl const&)
Line
Count
Source
232
6
  static DynTypedNode create(const T &Node) {
233
6
    return BaseConverter<T>::create(Node);
234
6
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::BlockDecl>(clang::BlockDecl const&)
Line
Count
Source
232
1
  static DynTypedNode create(const T &Node) {
233
1
    return BaseConverter<T>::create(Node);
234
1
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCInterfaceDecl>(clang::ObjCInterfaceDecl const&)
Line
Count
Source
232
168
  static DynTypedNode create(const T &Node) {
233
168
    return BaseConverter<T>::create(Node);
234
168
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMessageExpr>(clang::ObjCMessageExpr const&)
Line
Count
Source
232
35
  static DynTypedNode create(const T &Node) {
233
35
    return BaseConverter<T>::create(Node);
234
35
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCAutoreleasePoolStmt>(clang::ObjCAutoreleasePoolStmt const&)
Line
Count
Source
232
19
  static DynTypedNode create(const T &Node) {
233
19
    return BaseConverter<T>::create(Node);
234
19
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::InitListExpr>(clang::InitListExpr const&)
Line
Count
Source
232
135
  static DynTypedNode create(const T &Node) {
233
135
    return BaseConverter<T>::create(Node);
234
135
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgument>(clang::TemplateArgument const&)
Line
Count
Source
232
55
  static DynTypedNode create(const T &Node) {
233
55
    return BaseConverter<T>::create(Node);
234
55
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CastExpr>(clang::CastExpr const&)
Line
Count
Source
232
54
  static DynTypedNode create(const T &Node) {
233
54
    return BaseConverter<T>::create(Node);
234
54
  }
235
236
  /// Retrieve the stored node as type \c T.
237
  ///
238
  /// Returns NULL if the stored node does not have a type that is
239
  /// convertible to \c T.
240
  ///
241
  /// For types that have identity via their pointer in the AST
242
  /// (like \c Stmt, \c Decl, \c Type and \c NestedNameSpecifier) the returned
243
  /// pointer points to the referenced AST node.
244
  /// For other types (like \c QualType) the value is stored directly
245
  /// in the \c DynTypedNode, and the returned pointer points at
246
  /// the storage inside DynTypedNode. For those nodes, do not
247
  /// use the pointer outside the scope of the DynTypedNode.
248
  template <typename T>
249
520k
  const T *get() const {
250
520k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
520k
  }
clang::Stmt const* clang::DynTypedNode::get<clang::Stmt>() const
Line
Count
Source
249
44.1k
  const T *get() const {
250
44.1k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
44.1k
  }
clang::TemplateArgument const* clang::DynTypedNode::get<clang::TemplateArgument>() const
Line
Count
Source
249
3
  const T *get() const {
250
3
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
3
  }
clang::TemplateName const* clang::DynTypedNode::get<clang::TemplateName>() const
Line
Count
Source
249
2
  const T *get() const {
250
2
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
2
  }
clang::NestedNameSpecifier const* clang::DynTypedNode::get<clang::NestedNameSpecifier>() const
Line
Count
Source
249
177
  const T *get() const {
250
177
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
177
  }
clang::NestedNameSpecifierLoc const* clang::DynTypedNode::get<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
249
5.49k
  const T *get() const {
250
5.49k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
5.49k
  }
clang::QualType const* clang::DynTypedNode::get<clang::QualType>() const
Line
Count
Source
249
200
  const T *get() const {
250
200
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
200
  }
clang::TypeLoc const* clang::DynTypedNode::get<clang::TypeLoc>() const
Line
Count
Source
249
5.40k
  const T *get() const {
250
5.40k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
5.40k
  }
clang::Decl const* clang::DynTypedNode::get<clang::Decl>() const
Line
Count
Source
249
75.3k
  const T *get() const {
250
75.3k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
75.3k
  }
clang::Type const* clang::DynTypedNode::get<clang::Type>() const
Line
Count
Source
249
18
  const T *get() const {
250
18
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
18
  }
clang::CXXCtorInitializer const* clang::DynTypedNode::get<clang::CXXCtorInitializer>() const
Line
Count
Source
249
236
  const T *get() const {
250
236
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
236
  }
clang::OMPClause const* clang::DynTypedNode::get<clang::OMPClause>() const
Line
Count
Source
249
1
  const T *get() const {
250
1
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
1
  }
clang::Expr const* clang::DynTypedNode::get<clang::Expr>() const
Line
Count
Source
249
383k
  const T *get() const {
250
383k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
383k
  }
clang::DeclStmt const* clang::DynTypedNode::get<clang::DeclStmt>() const
Line
Count
Source
249
276
  const T *get() const {
250
276
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
276
  }
clang::CompoundStmt const* clang::DynTypedNode::get<clang::CompoundStmt>() const
Line
Count
Source
249
66
  const T *get() const {
250
66
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
66
  }
clang::FunctionDecl const* clang::DynTypedNode::get<clang::FunctionDecl>() const
Line
Count
Source
249
2.30k
  const T *get() const {
250
2.30k
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
2.30k
  }
clang::LambdaExpr const* clang::DynTypedNode::get<clang::LambdaExpr>() const
Line
Count
Source
249
352
  const T *get() const {
250
352
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
352
  }
clang::CallExpr const* clang::DynTypedNode::get<clang::CallExpr>() const
Line
Count
Source
249
49
  const T *get() const {
250
49
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
49
  }
clang::ParmVarDecl const* clang::DynTypedNode::get<clang::ParmVarDecl>() const
Line
Count
Source
249
82
  const T *get() const {
250
82
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
82
  }
clang::ObjCMethodDecl const* clang::DynTypedNode::get<clang::ObjCMethodDecl>() const
Line
Count
Source
249
13
  const T *get() const {
250
13
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
13
  }
clang::CastExpr const* clang::DynTypedNode::get<clang::CastExpr>() const
Line
Count
Source
249
1
  const T *get() const {
250
1
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
1
  }
clang::ObjCMessageExpr const* clang::DynTypedNode::get<clang::ObjCMessageExpr>() const
Line
Count
Source
249
18
  const T *get() const {
250
18
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
18
  }
clang::ObjCAutoreleasePoolStmt const* clang::DynTypedNode::get<clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
249
12
  const T *get() const {
250
12
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
12
  }
clang::MemberExpr const* clang::DynTypedNode::get<clang::MemberExpr>() const
Line
Count
Source
249
27
  const T *get() const {
250
27
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
27
  }
clang::ObjCIvarRefExpr const* clang::DynTypedNode::get<clang::ObjCIvarRefExpr>() const
Line
Count
Source
249
2
  const T *get() const {
250
2
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
2
  }
clang::VarDecl const* clang::DynTypedNode::get<clang::VarDecl>() const
Line
Count
Source
249
867
  const T *get() const {
250
867
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
867
  }
clang::IntegerLiteral const* clang::DynTypedNode::get<clang::IntegerLiteral>() const
Line
Count
Source
249
240
  const T *get() const {
250
240
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
240
  }
clang::BinaryOperator const* clang::DynTypedNode::get<clang::BinaryOperator>() const
Line
Count
Source
249
112
  const T *get() const {
250
112
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
112
  }
clang::TranslationUnitDecl const* clang::DynTypedNode::get<clang::TranslationUnitDecl>() const
Line
Count
Source
249
602
  const T *get() const {
250
602
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
602
  }
clang::NamedDecl const* clang::DynTypedNode::get<clang::NamedDecl>() const
Line
Count
Source
249
449
  const T *get() const {
250
449
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
449
  }
clang::CXXThisExpr const* clang::DynTypedNode::get<clang::CXXThisExpr>() const
Line
Count
Source
249
146
  const T *get() const {
250
146
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
146
  }
clang::DeclRefExpr const* clang::DynTypedNode::get<clang::DeclRefExpr>() const
Line
Count
Source
249
41
  const T *get() const {
250
41
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
41
  }
clang::InitListExpr const* clang::DynTypedNode::get<clang::InitListExpr>() const
Line
Count
Source
249
5
  const T *get() const {
250
5
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
5
  }
clang::IfStmt const* clang::DynTypedNode::get<clang::IfStmt>() const
Line
Count
Source
249
48
  const T *get() const {
250
48
    return BaseConverter<T>::get(NodeKind, Storage.buffer);
251
48
  }
252
253
  /// Retrieve the stored node as type \c T.
254
  ///
255
  /// Similar to \c get(), but asserts that the type is what we are expecting.
256
  template <typename T>
257
157k
  const T &getUnchecked() const {
258
157k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
157k
  }
clang::QualType const& clang::DynTypedNode::getUnchecked<clang::QualType>() const
Line
Count
Source
257
11.2k
  const T &getUnchecked() const {
258
11.2k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
11.2k
  }
clang::TypeLoc const& clang::DynTypedNode::getUnchecked<clang::TypeLoc>() const
Line
Count
Source
257
63.5k
  const T &getUnchecked() const {
258
63.5k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
63.5k
  }
clang::NestedNameSpecifierLoc const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
257
1.29k
  const T &getUnchecked() const {
258
1.29k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
1.29k
  }
clang::IntegerLiteral const& clang::DynTypedNode::getUnchecked<clang::IntegerLiteral>() const
Line
Count
Source
257
387
  const T &getUnchecked() const {
258
387
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
387
  }
clang::BinaryOperator const& clang::DynTypedNode::getUnchecked<clang::BinaryOperator>() const
Line
Count
Source
257
2.82k
  const T &getUnchecked() const {
258
2.82k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2.82k
  }
clang::Stmt const& clang::DynTypedNode::getUnchecked<clang::Stmt>() const
Line
Count
Source
257
12.1k
  const T &getUnchecked() const {
258
12.1k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
12.1k
  }
clang::Decl const& clang::DynTypedNode::getUnchecked<clang::Decl>() const
Line
Count
Source
257
4.69k
  const T &getUnchecked() const {
258
4.69k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
4.69k
  }
clang::FieldDecl const& clang::DynTypedNode::getUnchecked<clang::FieldDecl>() const
Line
Count
Source
257
116
  const T &getUnchecked() const {
258
116
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
116
  }
clang::FunctionDecl const& clang::DynTypedNode::getUnchecked<clang::FunctionDecl>() const
Line
Count
Source
257
2.41k
  const T &getUnchecked() const {
258
2.41k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2.41k
  }
clang::ClassTemplateSpecializationDecl const& clang::DynTypedNode::getUnchecked<clang::ClassTemplateSpecializationDecl>() const
Line
Count
Source
257
78
  const T &getUnchecked() const {
258
78
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
78
  }
clang::Expr const& clang::DynTypedNode::getUnchecked<clang::Expr>() const
Line
Count
Source
257
6.66k
  const T &getUnchecked() const {
258
6.66k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
6.66k
  }
clang::TemplateArgument const& clang::DynTypedNode::getUnchecked<clang::TemplateArgument>() const
Line
Count
Source
257
46
  const T &getUnchecked() const {
258
46
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
46
  }
clang::CallExpr const& clang::DynTypedNode::getUnchecked<clang::CallExpr>() const
Line
Count
Source
257
4.59k
  const T &getUnchecked() const {
258
4.59k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
4.59k
  }
clang::InitListExpr const& clang::DynTypedNode::getUnchecked<clang::InitListExpr>() const
Line
Count
Source
257
184
  const T &getUnchecked() const {
258
184
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
184
  }
clang::ForStmt const& clang::DynTypedNode::getUnchecked<clang::ForStmt>() const
Line
Count
Source
257
621
  const T &getUnchecked() const {
258
621
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
621
  }
clang::CXXForRangeStmt const& clang::DynTypedNode::getUnchecked<clang::CXXForRangeStmt>() const
Line
Count
Source
257
46
  const T &getUnchecked() const {
258
46
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
46
  }
clang::DesignatedInitExpr const& clang::DynTypedNode::getUnchecked<clang::DesignatedInitExpr>() const
Line
Count
Source
257
144
  const T &getUnchecked() const {
258
144
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
144
  }
clang::UnaryExprOrTypeTraitExpr const& clang::DynTypedNode::getUnchecked<clang::UnaryExprOrTypeTraitExpr>() const
Line
Count
Source
257
27
  const T &getUnchecked() const {
258
27
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
27
  }
clang::NamedDecl const& clang::DynTypedNode::getUnchecked<clang::NamedDecl>() const
Line
Count
Source
257
26.5k
  const T &getUnchecked() const {
258
26.5k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
26.5k
  }
clang::CXXRecordDecl const& clang::DynTypedNode::getUnchecked<clang::CXXRecordDecl>() const
Line
Count
Source
257
3.50k
  const T &getUnchecked() const {
258
3.50k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
3.50k
  }
clang::CXXMemberCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXMemberCallExpr>() const
Line
Count
Source
257
112
  const T &getUnchecked() const {
258
112
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
112
  }
clang::ObjCMessageExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCMessageExpr>() const
Line
Count
Source
257
246
  const T &getUnchecked() const {
258
246
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
246
  }
clang::ObjCMethodDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCMethodDecl>() const
Line
Count
Source
257
58
  const T &getUnchecked() const {
258
58
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
58
  }
clang::DeclaratorDecl const& clang::DynTypedNode::getUnchecked<clang::DeclaratorDecl>() const
Line
Count
Source
257
28
  const T &getUnchecked() const {
258
28
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
28
  }
clang::Type const& clang::DynTypedNode::getUnchecked<clang::Type>() const
Line
Count
Source
257
1.29k
  const T &getUnchecked() const {
258
1.29k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
1.29k
  }
clang::DeclRefExpr const& clang::DynTypedNode::getUnchecked<clang::DeclRefExpr>() const
Line
Count
Source
257
1.45k
  const T &getUnchecked() const {
258
1.45k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
1.45k
  }
clang::OverloadExpr const& clang::DynTypedNode::getUnchecked<clang::OverloadExpr>() const
Line
Count
Source
257
14
  const T &getUnchecked() const {
258
14
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
14
  }
clang::DeclStmt const& clang::DynTypedNode::getUnchecked<clang::DeclStmt>() const
Line
Count
Source
257
432
  const T &getUnchecked() const {
258
432
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
432
  }
clang::VarDecl const& clang::DynTypedNode::getUnchecked<clang::VarDecl>() const
Line
Count
Source
257
2.65k
  const T &getUnchecked() const {
258
2.65k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2.65k
  }
clang::CXXCatchStmt const& clang::DynTypedNode::getUnchecked<clang::CXXCatchStmt>() const
Line
Count
Source
257
10
  const T &getUnchecked() const {
258
10
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
10
  }
clang::CXXConstructorDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConstructorDecl>() const
Line
Count
Source
257
502
  const T &getUnchecked() const {
258
502
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
502
  }
clang::CXXCtorInitializer const& clang::DynTypedNode::getUnchecked<clang::CXXCtorInitializer>() const
Line
Count
Source
257
88
  const T &getUnchecked() const {
258
88
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
88
  }
clang::LambdaExpr const& clang::DynTypedNode::getUnchecked<clang::LambdaExpr>() const
Line
Count
Source
257
51
  const T &getUnchecked() const {
258
51
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
51
  }
clang::CXXConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXConstructExpr>() const
Line
Count
Source
257
372
  const T &getUnchecked() const {
258
372
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
372
  }
clang::IfStmt const& clang::DynTypedNode::getUnchecked<clang::IfStmt>() const
Line
Count
Source
257
209
  const T &getUnchecked() const {
258
209
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
209
  }
clang::ArraySubscriptExpr const& clang::DynTypedNode::getUnchecked<clang::ArraySubscriptExpr>() const
Line
Count
Source
257
17
  const T &getUnchecked() const {
258
17
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
17
  }
clang::CompoundStmt const& clang::DynTypedNode::getUnchecked<clang::CompoundStmt>() const
Line
Count
Source
257
557
  const T &getUnchecked() const {
258
557
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
557
  }
clang::UnaryOperator const& clang::DynTypedNode::getUnchecked<clang::UnaryOperator>() const
Line
Count
Source
257
2.77k
  const T &getUnchecked() const {
258
2.77k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2.77k
  }
clang::CastExpr const& clang::DynTypedNode::getUnchecked<clang::CastExpr>() const
Line
Count
Source
257
645
  const T &getUnchecked() const {
258
645
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
645
  }
clang::ExplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ExplicitCastExpr>() const
Line
Count
Source
257
351
  const T &getUnchecked() const {
258
351
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
351
  }
clang::ImplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ImplicitCastExpr>() const
Line
Count
Source
257
119
  const T &getUnchecked() const {
258
119
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
119
  }
clang::TagDecl const& clang::DynTypedNode::getUnchecked<clang::TagDecl>() const
Line
Count
Source
257
28
  const T &getUnchecked() const {
258
28
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
28
  }
clang::AbstractConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::AbstractConditionalOperator>() const
Line
Count
Source
257
65
  const T &getUnchecked() const {
258
65
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
65
  }
clang::CXXMethodDecl const& clang::DynTypedNode::getUnchecked<clang::CXXMethodDecl>() const
Line
Count
Source
257
1.26k
  const T &getUnchecked() const {
258
1.26k
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
1.26k
  }
clang::MemberExpr const& clang::DynTypedNode::getUnchecked<clang::MemberExpr>() const
Line
Count
Source
257
149
  const T &getUnchecked() const {
258
149
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
149
  }
clang::UsingDecl const& clang::DynTypedNode::getUnchecked<clang::UsingDecl>() const
Line
Count
Source
257
8
  const T &getUnchecked() const {
258
8
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
8
  }
clang::UsingShadowDecl const& clang::DynTypedNode::getUnchecked<clang::UsingShadowDecl>() const
Line
Count
Source
257
8
  const T &getUnchecked() const {
258
8
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
8
  }
clang::VariableArrayType const& clang::DynTypedNode::getUnchecked<clang::VariableArrayType>() const
Line
Count
Source
257
2
  const T &getUnchecked() const {
258
2
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2
  }
clang::ElaboratedType const& clang::DynTypedNode::getUnchecked<clang::ElaboratedType>() const
Line
Count
Source
257
12
  const T &getUnchecked() const {
258
12
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
12
  }
clang::DecayedType const& clang::DynTypedNode::getUnchecked<clang::DecayedType>() const
Line
Count
Source
257
2
  const T &getUnchecked() const {
258
2
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2
  }
clang::NestedNameSpecifier const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifier>() const
Line
Count
Source
257
112
  const T &getUnchecked() const {
258
112
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
112
  }
clang::SwitchStmt const& clang::DynTypedNode::getUnchecked<clang::SwitchStmt>() const
Line
Count
Source
257
33
  const T &getUnchecked() const {
258
33
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
33
  }
clang::NamespaceDecl const& clang::DynTypedNode::getUnchecked<clang::NamespaceDecl>() const
Line
Count
Source
257
32
  const T &getUnchecked() const {
258
32
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
32
  }
clang::CaseStmt const& clang::DynTypedNode::getUnchecked<clang::CaseStmt>() const
Line
Count
Source
257
10
  const T &getUnchecked() const {
258
10
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
10
  }
clang::ReturnStmt const& clang::DynTypedNode::getUnchecked<clang::ReturnStmt>() const
Line
Count
Source
257
63
  const T &getUnchecked() const {
258
63
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
63
  }
clang::ParmVarDecl const& clang::DynTypedNode::getUnchecked<clang::ParmVarDecl>() const
Line
Count
Source
257
376
  const T &getUnchecked() const {
258
376
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
376
  }
clang::CXXNewExpr const& clang::DynTypedNode::getUnchecked<clang::CXXNewExpr>() const
Line
Count
Source
257
20
  const T &getUnchecked() const {
258
20
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
20
  }
clang::EnumDecl const& clang::DynTypedNode::getUnchecked<clang::EnumDecl>() const
Line
Count
Source
257
12
  const T &getUnchecked() const {
258
12
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
12
  }
clang::OMPExecutableDirective const& clang::DynTypedNode::getUnchecked<clang::OMPExecutableDirective>() const
Line
Count
Source
257
69
  const T &getUnchecked() const {
258
69
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
69
  }
clang::OMPDefaultClause const& clang::DynTypedNode::getUnchecked<clang::OMPDefaultClause>() const
Line
Count
Source
257
8
  const T &getUnchecked() const {
258
8
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
8
  }
clang::TypedefType const& clang::DynTypedNode::getUnchecked<clang::TypedefType>() const
Line
Count
Source
257
301
  const T &getUnchecked() const {
258
301
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
301
  }
clang::RecordType const& clang::DynTypedNode::getUnchecked<clang::RecordType>() const
Line
Count
Source
257
68
  const T &getUnchecked() const {
258
68
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
68
  }
clang::PointerType const& clang::DynTypedNode::getUnchecked<clang::PointerType>() const
Line
Count
Source
257
236
  const T &getUnchecked() const {
258
236
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
236
  }
clang::ObjCObjectPointerType const& clang::DynTypedNode::getUnchecked<clang::ObjCObjectPointerType>() const
Line
Count
Source
257
120
  const T &getUnchecked() const {
258
120
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
120
  }
clang::ConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::ConditionalOperator>() const
Line
Count
Source
257
25
  const T &getUnchecked() const {
258
25
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
25
  }
clang::BlockDecl const& clang::DynTypedNode::getUnchecked<clang::BlockDecl>() const
Line
Count
Source
257
27
  const T &getUnchecked() const {
258
27
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
27
  }
clang::ObjCInterfaceDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCInterfaceDecl>() const
Line
Count
Source
257
308
  const T &getUnchecked() const {
258
308
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
308
  }
clang::CStyleCastExpr const& clang::DynTypedNode::getUnchecked<clang::CStyleCastExpr>() const
Line
Count
Source
257
40
  const T &getUnchecked() const {
258
40
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
40
  }
clang::ObjCAutoreleasePoolStmt const& clang::DynTypedNode::getUnchecked<clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
257
19
  const T &getUnchecked() const {
258
19
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
19
  }
clang::ObjCIvarRefExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCIvarRefExpr>() const
Line
Count
Source
257
6
  const T &getUnchecked() const {
258
6
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
6
  }
clang::FriendDecl const& clang::DynTypedNode::getUnchecked<clang::FriendDecl>() const
Line
Count
Source
257
22
  const T &getUnchecked() const {
258
22
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
22
  }
clang::TypedefNameDecl const& clang::DynTypedNode::getUnchecked<clang::TypedefNameDecl>() const
Line
Count
Source
257
26
  const T &getUnchecked() const {
258
26
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
26
  }
clang::ValueDecl const& clang::DynTypedNode::getUnchecked<clang::ValueDecl>() const
Line
Count
Source
257
14
  const T &getUnchecked() const {
258
14
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
14
  }
clang::CharacterLiteral const& clang::DynTypedNode::getUnchecked<clang::CharacterLiteral>() const
Line
Count
Source
257
8
  const T &getUnchecked() const {
258
8
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
8
  }
clang::CXXBoolLiteralExpr const& clang::DynTypedNode::getUnchecked<clang::CXXBoolLiteralExpr>() const
Line
Count
Source
257
84
  const T &getUnchecked() const {
258
84
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
84
  }
clang::FloatingLiteral const& clang::DynTypedNode::getUnchecked<clang::FloatingLiteral>() const
Line
Count
Source
257
169
  const T &getUnchecked() const {
258
169
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
169
  }
clang::CXXUnresolvedConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXUnresolvedConstructExpr>() const
Line
Count
Source
257
7
  const T &getUnchecked() const {
258
7
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
7
  }
clang::StmtExpr const& clang::DynTypedNode::getUnchecked<clang::StmtExpr>() const
Line
Count
Source
257
16
  const T &getUnchecked() const {
258
16
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
16
  }
clang::TemplateSpecializationType const& clang::DynTypedNode::getUnchecked<clang::TemplateSpecializationType>() const
Line
Count
Source
257
30
  const T &getUnchecked() const {
258
30
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
30
  }
clang::DoStmt const& clang::DynTypedNode::getUnchecked<clang::DoStmt>() const
Line
Count
Source
257
2
  const T &getUnchecked() const {
258
2
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2
  }
clang::WhileStmt const& clang::DynTypedNode::getUnchecked<clang::WhileStmt>() const
Line
Count
Source
257
6
  const T &getUnchecked() const {
258
6
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
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
257
10
  const T &getUnchecked() const {
258
10
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
10
  }
clang::AddrLabelExpr const& clang::DynTypedNode::getUnchecked<clang::AddrLabelExpr>() const
Line
Count
Source
257
8
  const T &getUnchecked() const {
258
8
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
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
257
28
  const T &getUnchecked() const {
258
28
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
28
  }
clang::ArrayType const& clang::DynTypedNode::getUnchecked<clang::ArrayType>() const
Line
Count
Source
257
14
  const T &getUnchecked() const {
258
14
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
14
  }
clang::ComplexType const& clang::DynTypedNode::getUnchecked<clang::ComplexType>() const
Line
Count
Source
257
4
  const T &getUnchecked() const {
258
4
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
4
  }
clang::UnresolvedMemberExpr const& clang::DynTypedNode::getUnchecked<clang::UnresolvedMemberExpr>() const
Line
Count
Source
257
10
  const T &getUnchecked() const {
258
10
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
10
  }
clang::CXXDependentScopeMemberExpr const& clang::DynTypedNode::getUnchecked<clang::CXXDependentScopeMemberExpr>() const
Line
Count
Source
257
37
  const T &getUnchecked() const {
258
37
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
37
  }
clang::CXXOperatorCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXOperatorCallExpr>() const
Line
Count
Source
257
121
  const T &getUnchecked() const {
258
121
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
121
  }
clang::SubstTemplateTypeParmType const& clang::DynTypedNode::getUnchecked<clang::SubstTemplateTypeParmType>() const
Line
Count
Source
257
4
  const T &getUnchecked() const {
258
4
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
4
  }
clang::ConstantArrayType const& clang::DynTypedNode::getUnchecked<clang::ConstantArrayType>() const
Line
Count
Source
257
18
  const T &getUnchecked() const {
258
18
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
18
  }
clang::StringLiteral const& clang::DynTypedNode::getUnchecked<clang::StringLiteral>() const
Line
Count
Source
257
48
  const T &getUnchecked() const {
258
48
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
48
  }
clang::OpaqueValueExpr const& clang::DynTypedNode::getUnchecked<clang::OpaqueValueExpr>() const
Line
Count
Source
257
19
  const T &getUnchecked() const {
258
19
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
19
  }
clang::DecltypeType const& clang::DynTypedNode::getUnchecked<clang::DecltypeType>() const
Line
Count
Source
257
2
  const T &getUnchecked() const {
258
2
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2
  }
clang::AtomicType const& clang::DynTypedNode::getUnchecked<clang::AtomicType>() const
Line
Count
Source
257
4
  const T &getUnchecked() const {
258
4
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
4
  }
clang::ParenType const& clang::DynTypedNode::getUnchecked<clang::ParenType>() const
Line
Count
Source
257
6
  const T &getUnchecked() const {
258
6
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
6
  }
clang::CXXConversionDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConversionDecl>() const
Line
Count
Source
257
10
  const T &getUnchecked() const {
258
10
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
10
  }
clang::CXXDeductionGuideDecl const& clang::DynTypedNode::getUnchecked<clang::CXXDeductionGuideDecl>() const
Line
Count
Source
257
30
  const T &getUnchecked() const {
258
30
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
30
  }
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
257
312
  const T &getUnchecked() const {
258
312
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
312
  }
clang::CXXTypeidExpr const& clang::DynTypedNode::getUnchecked<clang::CXXTypeidExpr>() const
Line
Count
Source
257
2
  const T &getUnchecked() const {
258
2
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
2
  }
clang::GenericSelectionExpr const& clang::DynTypedNode::getUnchecked<clang::GenericSelectionExpr>() const
Line
Count
Source
257
1
  const T &getUnchecked() const {
258
1
    return BaseConverter<T>::getUnchecked(NodeKind, Storage.buffer);
259
1
  }
260
261
576k
  ASTNodeKind getNodeKind() const { return NodeKind; }
262
263
  /// Returns a pointer that identifies the stored AST node.
264
  ///
265
  /// Note that this is not supported by all AST nodes. For AST nodes
266
  /// that don't have a pointer-defined identity inside the AST, this
267
  /// method returns NULL.
268
103k
  const void *getMemoizationData() const {
269
103k
    return NodeKind.hasPointerIdentity()
270
103k
               ? 
*reinterpret_cast<void *const *>(Storage.buffer)102k
271
103k
               : 
nullptr417
;
272
103k
  }
273
274
  /// Prints the node to the given output stream.
275
  void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const;
276
277
  /// Dumps the node to the given output stream.
278
  void dump(llvm::raw_ostream &OS, SourceManager &SM) const;
279
280
  /// For nodes which represent textual entities in the source code,
281
  /// return their SourceRange.  For all other nodes, return SourceRange().
282
  SourceRange getSourceRange() const;
283
284
  /// @{
285
  /// Imposes an order on \c DynTypedNode.
286
  ///
287
  /// Supports comparison of nodes that support memoization.
288
  /// FIXME: Implement comparison for other node types (currently
289
  /// only Stmt, Decl, Type and NestedNameSpecifier return memoization data).
290
56.5k
  bool operator<(const DynTypedNode &Other) const {
291
56.5k
    if (!NodeKind.isSame(Other.NodeKind))
292
35.7k
      return NodeKind < Other.NodeKind;
293
20.7k
294
20.7k
    if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind))
295
1
      return getUnchecked<QualType>().getAsOpaquePtr() <
296
1
             Other.getUnchecked<QualType>().getAsOpaquePtr();
297
20.7k
298
20.7k
    if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(NodeKind)) {
299
123
      auto TLA = getUnchecked<TypeLoc>();
300
123
      auto TLB = Other.getUnchecked<TypeLoc>();
301
123
      return std::make_pair(TLA.getType().getAsOpaquePtr(),
302
123
                            TLA.getOpaqueData()) <
303
123
             std::make_pair(TLB.getType().getAsOpaquePtr(),
304
123
                            TLB.getOpaqueData());
305
123
    }
306
20.6k
307
20.6k
    if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(
308
20.6k
            NodeKind)) {
309
0
      auto NNSLA = getUnchecked<NestedNameSpecifierLoc>();
310
0
      auto NNSLB = Other.getUnchecked<NestedNameSpecifierLoc>();
311
0
      return std::make_pair(NNSLA.getNestedNameSpecifier(),
312
0
                            NNSLA.getOpaqueData()) <
313
0
             std::make_pair(NNSLB.getNestedNameSpecifier(),
314
0
                            NNSLB.getOpaqueData());
315
0
    }
316
20.6k
317
20.6k
    assert(getMemoizationData() && Other.getMemoizationData());
318
20.6k
    return getMemoizationData() < Other.getMemoizationData();
319
20.6k
  }
320
197k
  bool operator==(const DynTypedNode &Other) const {
321
197k
    // DynTypedNode::create() stores the exact kind of the node in NodeKind.
322
197k
    // If they contain the same node, their NodeKind must be the same.
323
197k
    if (!NodeKind.isSame(Other.NodeKind))
324
178k
      return false;
325
19.5k
326
19.5k
    // FIXME: Implement for other types.
327
19.5k
    if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind))
328
11
      return getUnchecked<QualType>() == Other.getUnchecked<QualType>();
329
19.5k
330
19.5k
    if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(NodeKind))
331
18.4k
      return getUnchecked<TypeLoc>() == Other.getUnchecked<TypeLoc>();
332
1.04k
333
1.04k
    if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(NodeKind))
334
146
      return getUnchecked<NestedNameSpecifierLoc>() ==
335
146
             Other.getUnchecked<NestedNameSpecifierLoc>();
336
898
337
898
    assert(getMemoizationData() && Other.getMemoizationData());
338
898
    return getMemoizationData() == Other.getMemoizationData();
339
898
  }
340
541
  bool operator!=(const DynTypedNode &Other) const {
341
541
    return !operator==(Other);
342
541
  }
343
  /// @}
344
345
  /// Hooks for using DynTypedNode as a key in a DenseMap.
346
  struct DenseMapInfo {
347
62.5k
    static inline DynTypedNode getEmptyKey() {
348
62.5k
      DynTypedNode Node;
349
62.5k
      Node.NodeKind = ASTNodeKind::DenseMapInfo::getEmptyKey();
350
62.5k
      return Node;
351
62.5k
    }
352
45.1k
    static inline DynTypedNode getTombstoneKey() {
353
45.1k
      DynTypedNode Node;
354
45.1k
      Node.NodeKind = ASTNodeKind::DenseMapInfo::getTombstoneKey();
355
45.1k
      return Node;
356
45.1k
    }
357
27.0k
    static unsigned getHashValue(const DynTypedNode &Val) {
358
27.0k
      // FIXME: Add hashing support for the remaining types.
359
27.0k
      if (ASTNodeKind::getFromNodeKind<TypeLoc>().isSame(Val.NodeKind)) {
360
26.0k
        auto TL = Val.getUnchecked<TypeLoc>();
361
26.0k
        return llvm::hash_combine(TL.getType().getAsOpaquePtr(),
362
26.0k
                                  TL.getOpaqueData());
363
26.0k
      }
364
932
365
932
      if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(
366
932
              Val.NodeKind)) {
367
932
        auto NNSL = Val.getUnchecked<NestedNameSpecifierLoc>();
368
932
        return llvm::hash_combine(NNSL.getNestedNameSpecifier(),
369
932
                                  NNSL.getOpaqueData());
370
932
      }
371
0
372
0
      assert(Val.getMemoizationData());
373
0
      return llvm::hash_value(Val.getMemoizationData());
374
0
    }
375
302k
    static bool isEqual(const DynTypedNode &LHS, const DynTypedNode &RHS) {
376
302k
      auto Empty = ASTNodeKind::DenseMapInfo::getEmptyKey();
377
302k
      auto TombStone = ASTNodeKind::DenseMapInfo::getTombstoneKey();
378
302k
      return (ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, Empty) &&
379
302k
              
ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, Empty)105k
) ||
380
302k
             
(196k
ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, TombStone)196k
&&
381
196k
              
ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, TombStone)0
) ||
382
302k
             
LHS == RHS196k
;
383
302k
    }
384
  };
385
386
private:
387
  /// Takes care of converting from and to \c T.
388
  template <typename T, typename EnablerT = void> struct BaseConverter;
389
390
  /// Converter that uses dyn_cast<T> from a stored BaseT*.
391
  template <typename T, typename BaseT> struct DynCastPtrConverter {
392
509k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
509k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
284k
        return &getUnchecked(NodeKind, Storage);
395
224k
      return nullptr;
396
224k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
44.1k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
44.1k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
35.6k
        return &getUnchecked(NodeKind, Storage);
395
8.54k
      return nullptr;
396
8.54k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
75.3k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
75.3k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
36.2k
        return &getUnchecked(NodeKind, Storage);
395
39.1k
      return nullptr;
396
39.1k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
18
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
18
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
16
        return &getUnchecked(NodeKind, Storage);
395
2
      return nullptr;
396
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
1
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
1
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
0
        return &getUnchecked(NodeKind, Storage);
395
1
      return nullptr;
396
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
383k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
383k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
207k
        return &getUnchecked(NodeKind, Storage);
395
175k
      return nullptr;
396
175k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
276
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
276
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
12
        return &getUnchecked(NodeKind, Storage);
395
264
      return nullptr;
396
264
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
66
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
66
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
35
        return &getUnchecked(NodeKind, Storage);
395
31
      return nullptr;
396
31
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
2.30k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
2.30k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
1.97k
        return &getUnchecked(NodeKind, Storage);
395
328
      return nullptr;
396
328
    }
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
352
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
352
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
32
        return &getUnchecked(NodeKind, Storage);
395
320
      return nullptr;
396
320
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
49
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
49
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
48
        return &getUnchecked(NodeKind, Storage);
395
1
      return nullptr;
396
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
82
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
82
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
82
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
13
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
13
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
13
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
1
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
1
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
1
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
18
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
18
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
18
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
12
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
12
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
12
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
27
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
27
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
27
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
2
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
2
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
2
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
867
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
867
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
867
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
240
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
240
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
240
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
112
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
112
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
112
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
602
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
602
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
602
        return &getUnchecked(NodeKind, Storage);
395
0
      return nullptr;
396
0
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
449
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
449
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
366
        return &getUnchecked(NodeKind, Storage);
395
83
      return nullptr;
396
83
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
146
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
146
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
0
        return &getUnchecked(NodeKind, Storage);
395
146
      return nullptr;
396
146
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
41
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
41
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
39
        return &getUnchecked(NodeKind, Storage);
395
2
      return nullptr;
396
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
5
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
5
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
4
        return &getUnchecked(NodeKind, Storage);
395
1
      return nullptr;
396
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
392
48
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
393
48
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
394
46
        return &getUnchecked(NodeKind, Storage);
395
2
      return nullptr;
396
2
    }
397
368k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
368k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
368k
      return *cast<T>(static_cast<const BaseT *>(
400
368k
          *reinterpret_cast<const void *const *>(Storage)));
401
368k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
47.7k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
47.7k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
47.7k
      return *cast<T>(static_cast<const BaseT *>(
400
47.7k
          *reinterpret_cast<const void *const *>(Storage)));
401
47.7k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
40.9k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
40.9k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
40.9k
      return *cast<T>(static_cast<const BaseT *>(
400
40.9k
          *reinterpret_cast<const void *const *>(Storage)));
401
40.9k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
1.31k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
1.31k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
1.31k
      return *cast<T>(static_cast<const BaseT *>(
400
1.31k
          *reinterpret_cast<const void *const *>(Storage)));
401
1.31k
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, char const*)
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
214k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
214k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
214k
      return *cast<T>(static_cast<const BaseT *>(
400
214k
          *reinterpret_cast<const void *const *>(Storage)));
401
214k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
444
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
444
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
444
      return *cast<T>(static_cast<const BaseT *>(
400
444
          *reinterpret_cast<const void *const *>(Storage)));
401
444
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
592
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
592
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
592
      return *cast<T>(static_cast<const BaseT *>(
400
592
          *reinterpret_cast<const void *const *>(Storage)));
401
592
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
4.39k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
4.39k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
4.39k
      return *cast<T>(static_cast<const BaseT *>(
400
4.39k
          *reinterpret_cast<const void *const *>(Storage)));
401
4.39k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
83
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
83
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
83
      return *cast<T>(static_cast<const BaseT *>(
400
83
          *reinterpret_cast<const void *const *>(Storage)));
401
83
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
627
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
627
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
627
      return *cast<T>(static_cast<const BaseT *>(
400
627
          *reinterpret_cast<const void *const *>(Storage)));
401
627
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2.93k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
2.93k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
2.93k
      return *cast<T>(static_cast<const BaseT *>(
400
2.93k
          *reinterpret_cast<const void *const *>(Storage)));
401
2.93k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
4.64k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
4.64k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
4.64k
      return *cast<T>(static_cast<const BaseT *>(
400
4.64k
          *reinterpret_cast<const void *const *>(Storage)));
401
4.64k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
346
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
346
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
346
      return *cast<T>(static_cast<const BaseT *>(
400
346
          *reinterpret_cast<const void *const *>(Storage)));
401
346
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateSpecializationDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
444
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
444
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
444
      return *cast<T>(static_cast<const BaseT *>(
400
444
          *reinterpret_cast<const void *const *>(Storage)));
401
444
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
188
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
188
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
188
      return *cast<T>(static_cast<const BaseT *>(
400
188
          *reinterpret_cast<const void *const *>(Storage)));
401
188
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ForStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
621
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
621
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
621
      return *cast<T>(static_cast<const BaseT *>(
400
621
          *reinterpret_cast<const void *const *>(Storage)));
401
621
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXForRangeStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
46
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
46
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
46
      return *cast<T>(static_cast<const BaseT *>(
400
46
          *reinterpret_cast<const void *const *>(Storage)));
401
46
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DesignatedInitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
144
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
144
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
144
      return *cast<T>(static_cast<const BaseT *>(
400
144
          *reinterpret_cast<const void *const *>(Storage)));
401
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryExprOrTypeTraitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
27
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
27
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
27
      return *cast<T>(static_cast<const BaseT *>(
400
27
          *reinterpret_cast<const void *const *>(Storage)));
401
27
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
26.8k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
26.8k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
26.8k
      return *cast<T>(static_cast<const BaseT *>(
400
26.8k
          *reinterpret_cast<const void *const *>(Storage)));
401
26.8k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
4.23k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
4.23k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
4.23k
      return *cast<T>(static_cast<const BaseT *>(
400
4.23k
          *reinterpret_cast<const void *const *>(Storage)));
401
4.23k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
118
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
118
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
118
      return *cast<T>(static_cast<const BaseT *>(
400
118
          *reinterpret_cast<const void *const *>(Storage)));
401
118
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
264
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
264
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
264
      return *cast<T>(static_cast<const BaseT *>(
400
264
          *reinterpret_cast<const void *const *>(Storage)));
401
264
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
71
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
71
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
71
      return *cast<T>(static_cast<const BaseT *>(
400
71
          *reinterpret_cast<const void *const *>(Storage)));
401
71
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclaratorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
28
      return *cast<T>(static_cast<const BaseT *>(
400
28
          *reinterpret_cast<const void *const *>(Storage)));
401
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
1.49k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
1.49k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
1.49k
      return *cast<T>(static_cast<const BaseT *>(
400
1.49k
          *reinterpret_cast<const void *const *>(Storage)));
401
1.49k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OverloadExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
14
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
14
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
14
      return *cast<T>(static_cast<const BaseT *>(
400
14
          *reinterpret_cast<const void *const *>(Storage)));
401
14
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
3.51k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
3.51k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
3.51k
      return *cast<T>(static_cast<const BaseT *>(
400
3.51k
          *reinterpret_cast<const void *const *>(Storage)));
401
3.51k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXCatchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
10
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
10
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
10
      return *cast<T>(static_cast<const BaseT *>(
400
10
          *reinterpret_cast<const void *const *>(Storage)));
401
10
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
547
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
547
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
547
      return *cast<T>(static_cast<const BaseT *>(
400
547
          *reinterpret_cast<const void *const *>(Storage)));
401
547
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
375
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
375
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
375
      return *cast<T>(static_cast<const BaseT *>(
400
375
          *reinterpret_cast<const void *const *>(Storage)));
401
375
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
255
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
255
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
255
      return *cast<T>(static_cast<const BaseT *>(
400
255
          *reinterpret_cast<const void *const *>(Storage)));
401
255
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ArraySubscriptExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
17
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
17
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
17
      return *cast<T>(static_cast<const BaseT *>(
400
17
          *reinterpret_cast<const void *const *>(Storage)));
401
17
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2.77k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
2.77k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
2.77k
      return *cast<T>(static_cast<const BaseT *>(
400
2.77k
          *reinterpret_cast<const void *const *>(Storage)));
401
2.77k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
646
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
646
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
646
      return *cast<T>(static_cast<const BaseT *>(
400
646
          *reinterpret_cast<const void *const *>(Storage)));
401
646
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
351
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
351
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
351
      return *cast<T>(static_cast<const BaseT *>(
400
351
          *reinterpret_cast<const void *const *>(Storage)));
401
351
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ImplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
119
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
119
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
119
      return *cast<T>(static_cast<const BaseT *>(
400
119
          *reinterpret_cast<const void *const *>(Storage)));
401
119
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TagDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
28
      return *cast<T>(static_cast<const BaseT *>(
400
28
          *reinterpret_cast<const void *const *>(Storage)));
401
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AbstractConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
65
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
65
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
65
      return *cast<T>(static_cast<const BaseT *>(
400
65
          *reinterpret_cast<const void *const *>(Storage)));
401
65
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
1.50k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
1.50k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
1.50k
      return *cast<T>(static_cast<const BaseT *>(
400
1.50k
          *reinterpret_cast<const void *const *>(Storage)));
401
1.50k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
176
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
176
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
176
      return *cast<T>(static_cast<const BaseT *>(
400
176
          *reinterpret_cast<const void *const *>(Storage)));
401
176
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
9
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
9
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
9
      return *cast<T>(static_cast<const BaseT *>(
400
9
          *reinterpret_cast<const void *const *>(Storage)));
401
9
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
8
      return *cast<T>(static_cast<const BaseT *>(
400
8
          *reinterpret_cast<const void *const *>(Storage)));
401
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VariableArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
2
      return *cast<T>(static_cast<const BaseT *>(
400
2
          *reinterpret_cast<const void *const *>(Storage)));
401
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ElaboratedType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
12
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
12
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
12
      return *cast<T>(static_cast<const BaseT *>(
400
12
          *reinterpret_cast<const void *const *>(Storage)));
401
12
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecayedType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
2
      return *cast<T>(static_cast<const BaseT *>(
400
2
          *reinterpret_cast<const void *const *>(Storage)));
401
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
33
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
33
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
33
      return *cast<T>(static_cast<const BaseT *>(
400
33
          *reinterpret_cast<const void *const *>(Storage)));
401
33
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
53
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
53
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
53
      return *cast<T>(static_cast<const BaseT *>(
400
53
          *reinterpret_cast<const void *const *>(Storage)));
401
53
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CaseStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
28
      return *cast<T>(static_cast<const BaseT *>(
400
28
          *reinterpret_cast<const void *const *>(Storage)));
401
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ReturnStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
69
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
69
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
69
      return *cast<T>(static_cast<const BaseT *>(
400
69
          *reinterpret_cast<const void *const *>(Storage)));
401
69
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
458
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
458
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
458
      return *cast<T>(static_cast<const BaseT *>(
400
458
          *reinterpret_cast<const void *const *>(Storage)));
401
458
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXNewExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
23
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
23
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
23
      return *cast<T>(static_cast<const BaseT *>(
400
23
          *reinterpret_cast<const void *const *>(Storage)));
401
23
    }
clang::DynTypedNode::DynCastPtrConverter<clang::EnumDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
444
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
444
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
444
      return *cast<T>(static_cast<const BaseT *>(
400
444
          *reinterpret_cast<const void *const *>(Storage)));
401
444
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPExecutableDirective, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
69
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
69
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
69
      return *cast<T>(static_cast<const BaseT *>(
400
69
          *reinterpret_cast<const void *const *>(Storage)));
401
69
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPDefaultClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
8
      return *cast<T>(static_cast<const BaseT *>(
400
8
          *reinterpret_cast<const void *const *>(Storage)));
401
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
301
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
301
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
301
      return *cast<T>(static_cast<const BaseT *>(
400
301
          *reinterpret_cast<const void *const *>(Storage)));
401
301
    }
clang::DynTypedNode::DynCastPtrConverter<clang::RecordType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
68
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
68
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
68
      return *cast<T>(static_cast<const BaseT *>(
400
68
          *reinterpret_cast<const void *const *>(Storage)));
401
68
    }
clang::DynTypedNode::DynCastPtrConverter<clang::PointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
237
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
237
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
237
      return *cast<T>(static_cast<const BaseT *>(
400
237
          *reinterpret_cast<const void *const *>(Storage)));
401
237
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCObjectPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
120
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
120
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
120
      return *cast<T>(static_cast<const BaseT *>(
400
120
          *reinterpret_cast<const void *const *>(Storage)));
401
120
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
25
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
25
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
25
      return *cast<T>(static_cast<const BaseT *>(
400
25
          *reinterpret_cast<const void *const *>(Storage)));
401
25
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
27
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
27
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
27
      return *cast<T>(static_cast<const BaseT *>(
400
27
          *reinterpret_cast<const void *const *>(Storage)));
401
27
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
308
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
308
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
308
      return *cast<T>(static_cast<const BaseT *>(
400
308
          *reinterpret_cast<const void *const *>(Storage)));
401
308
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CStyleCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
40
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
40
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
40
      return *cast<T>(static_cast<const BaseT *>(
400
40
          *reinterpret_cast<const void *const *>(Storage)));
401
40
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
31
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
31
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
31
      return *cast<T>(static_cast<const BaseT *>(
400
31
          *reinterpret_cast<const void *const *>(Storage)));
401
31
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
8
      return *cast<T>(static_cast<const BaseT *>(
400
8
          *reinterpret_cast<const void *const *>(Storage)));
401
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
906
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
906
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
906
      return *cast<T>(static_cast<const BaseT *>(
400
906
          *reinterpret_cast<const void *const *>(Storage)));
401
906
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
8
      return *cast<T>(static_cast<const BaseT *>(
400
8
          *reinterpret_cast<const void *const *>(Storage)));
401
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FriendDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
97
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
97
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
97
      return *cast<T>(static_cast<const BaseT *>(
400
97
          *reinterpret_cast<const void *const *>(Storage)));
401
97
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefNameDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
346
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
346
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
346
      return *cast<T>(static_cast<const BaseT *>(
400
346
          *reinterpret_cast<const void *const *>(Storage)));
401
346
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
14
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
14
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
14
      return *cast<T>(static_cast<const BaseT *>(
400
14
          *reinterpret_cast<const void *const *>(Storage)));
401
14
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CharacterLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
8
      return *cast<T>(static_cast<const BaseT *>(
400
8
          *reinterpret_cast<const void *const *>(Storage)));
401
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXBoolLiteralExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
84
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
84
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
84
      return *cast<T>(static_cast<const BaseT *>(
400
84
          *reinterpret_cast<const void *const *>(Storage)));
401
84
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FloatingLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
169
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
169
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
169
      return *cast<T>(static_cast<const BaseT *>(
400
169
          *reinterpret_cast<const void *const *>(Storage)));
401
169
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXUnresolvedConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
8
      return *cast<T>(static_cast<const BaseT *>(
400
8
          *reinterpret_cast<const void *const *>(Storage)));
401
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::StmtExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
16
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
16
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
16
      return *cast<T>(static_cast<const BaseT *>(
400
16
          *reinterpret_cast<const void *const *>(Storage)));
401
16
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TemplateSpecializationType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
30
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
30
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
30
      return *cast<T>(static_cast<const BaseT *>(
400
30
          *reinterpret_cast<const void *const *>(Storage)));
401
30
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DoStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
2
      return *cast<T>(static_cast<const BaseT *>(
400
2
          *reinterpret_cast<const void *const *>(Storage)));
401
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::WhileStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
6
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
6
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
6
      return *cast<T>(static_cast<const BaseT *>(
400
6
          *reinterpret_cast<const void *const *>(Storage)));
401
6
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::EnumType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::InjectedClassNameType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
clang::DynTypedNode::DynCastPtrConverter<clang::LabelStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
12
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
12
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
12
      return *cast<T>(static_cast<const BaseT *>(
400
12
          *reinterpret_cast<const void *const *>(Storage)));
401
12
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AddrLabelExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
8
      return *cast<T>(static_cast<const BaseT *>(
400
8
          *reinterpret_cast<const void *const *>(Storage)));
401
8
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TagType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedUsingType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::AutoType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionProtoType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
28
      return *cast<T>(static_cast<const BaseT *>(
400
28
          *reinterpret_cast<const void *const *>(Storage)));
401
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
14
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
14
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
14
      return *cast<T>(static_cast<const BaseT *>(
400
14
          *reinterpret_cast<const void *const *>(Storage)));
401
14
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ComplexType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
4
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
4
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
4
      return *cast<T>(static_cast<const BaseT *>(
400
4
          *reinterpret_cast<const void *const *>(Storage)));
401
4
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
10
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
10
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
10
      return *cast<T>(static_cast<const BaseT *>(
400
10
          *reinterpret_cast<const void *const *>(Storage)));
401
10
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDependentScopeMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
37
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
37
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
37
      return *cast<T>(static_cast<const BaseT *>(
400
37
          *reinterpret_cast<const void *const *>(Storage)));
401
37
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXOperatorCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
133
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
133
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
133
      return *cast<T>(static_cast<const BaseT *>(
400
133
          *reinterpret_cast<const void *const *>(Storage)));
401
133
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SubstTemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
4
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
4
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
4
      return *cast<T>(static_cast<const BaseT *>(
400
4
          *reinterpret_cast<const void *const *>(Storage)));
401
4
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ConstantArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
18
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
18
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
18
      return *cast<T>(static_cast<const BaseT *>(
400
18
          *reinterpret_cast<const void *const *>(Storage)));
401
18
    }
clang::DynTypedNode::DynCastPtrConverter<clang::StringLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
48
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
48
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
48
      return *cast<T>(static_cast<const BaseT *>(
400
48
          *reinterpret_cast<const void *const *>(Storage)));
401
48
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OpaqueValueExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
19
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
19
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
19
      return *cast<T>(static_cast<const BaseT *>(
400
19
          *reinterpret_cast<const void *const *>(Storage)));
401
19
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecltypeType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
2
      return *cast<T>(static_cast<const BaseT *>(
400
2
          *reinterpret_cast<const void *const *>(Storage)));
401
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AtomicType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
4
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
4
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
4
      return *cast<T>(static_cast<const BaseT *>(
400
4
          *reinterpret_cast<const void *const *>(Storage)));
401
4
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParenType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
6
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
6
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
6
      return *cast<T>(static_cast<const BaseT *>(
400
6
          *reinterpret_cast<const void *const *>(Storage)));
401
6
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConversionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
12
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
12
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
12
      return *cast<T>(static_cast<const BaseT *>(
400
12
          *reinterpret_cast<const void *const *>(Storage)));
401
12
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDeductionGuideDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
30
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
30
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
30
      return *cast<T>(static_cast<const BaseT *>(
400
30
          *reinterpret_cast<const void *const *>(Storage)));
401
30
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::BlockPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::MemberPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
clang::DynTypedNode::DynCastPtrConverter<clang::ReferenceType, clang::Type>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
312
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
312
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
312
      return *cast<T>(static_cast<const BaseT *>(
400
312
          *reinterpret_cast<const void *const *>(Storage)));
401
312
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXTypeidExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
2
      return *cast<T>(static_cast<const BaseT *>(
400
2
          *reinterpret_cast<const void *const *>(Storage)));
401
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::GenericSelectionExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
397
1
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
398
1
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
399
1
      return *cast<T>(static_cast<const BaseT *>(
400
1
          *reinterpret_cast<const void *const *>(Storage)));
401
1
    }
402
528k
    static DynTypedNode create(const BaseT &Node) {
403
528k
      DynTypedNode Result;
404
528k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
528k
      new (Result.Storage.buffer) const void *(&Node);
406
528k
      return Result;
407
528k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
148k
    static DynTypedNode create(const BaseT &Node) {
403
148k
      DynTypedNode Result;
404
148k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
148k
      new (Result.Storage.buffer) const void *(&Node);
406
148k
      return Result;
407
148k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
136k
    static DynTypedNode create(const BaseT &Node) {
403
136k
      DynTypedNode Result;
404
136k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
136k
      new (Result.Storage.buffer) const void *(&Node);
406
136k
      return Result;
407
136k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
215k
    static DynTypedNode create(const BaseT &Node) {
403
215k
      DynTypedNode Result;
404
215k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
215k
      new (Result.Storage.buffer) const void *(&Node);
406
215k
      return Result;
407
215k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
393
    static DynTypedNode create(const BaseT &Node) {
403
393
      DynTypedNode Result;
404
393
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
393
      new (Result.Storage.buffer) const void *(&Node);
406
393
      return Result;
407
393
    }
clang::DynTypedNode::DynCastPtrConverter<clang::EnumConstantDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
15
    static DynTypedNode create(const BaseT &Node) {
403
15
      DynTypedNode Result;
404
15
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
15
      new (Result.Storage.buffer) const void *(&Node);
406
15
      return Result;
407
15
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
45
    static DynTypedNode create(const BaseT &Node) {
403
45
      DynTypedNode Result;
404
45
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
45
      new (Result.Storage.buffer) const void *(&Node);
406
45
      return Result;
407
45
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
102
    static DynTypedNode create(const BaseT &Node) {
403
102
      DynTypedNode Result;
404
102
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
102
      new (Result.Storage.buffer) const void *(&Node);
406
102
      return Result;
407
102
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
653
    static DynTypedNode create(const BaseT &Node) {
403
653
      DynTypedNode Result;
404
653
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
653
      new (Result.Storage.buffer) const void *(&Node);
406
653
      return Result;
407
653
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
1.39k
    static DynTypedNode create(const BaseT &Node) {
403
1.39k
      DynTypedNode Result;
404
1.39k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
1.39k
      new (Result.Storage.buffer) const void *(&Node);
406
1.39k
      return Result;
407
1.39k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::create(clang::Type const&)
Line
Count
Source
402
20.2k
    static DynTypedNode create(const BaseT &Node) {
403
20.2k
      DynTypedNode Result;
404
20.2k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
20.2k
      new (Result.Storage.buffer) const void *(&Node);
406
20.2k
      return Result;
407
20.2k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
18
    static DynTypedNode create(const BaseT &Node) {
403
18
      DynTypedNode Result;
404
18
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
18
      new (Result.Storage.buffer) const void *(&Node);
406
18
      return Result;
407
18
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
12
    static DynTypedNode create(const BaseT &Node) {
403
12
      DynTypedNode Result;
404
12
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
12
      new (Result.Storage.buffer) const void *(&Node);
406
12
      return Result;
407
12
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
74
    static DynTypedNode create(const BaseT &Node) {
403
74
      DynTypedNode Result;
404
74
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
74
      new (Result.Storage.buffer) const void *(&Node);
406
74
      return Result;
407
74
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
129
    static DynTypedNode create(const BaseT &Node) {
403
129
      DynTypedNode Result;
404
129
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
129
      new (Result.Storage.buffer) const void *(&Node);
406
129
      return Result;
407
129
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
2.30k
    static DynTypedNode create(const BaseT &Node) {
403
2.30k
      DynTypedNode Result;
404
2.30k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
2.30k
      new (Result.Storage.buffer) const void *(&Node);
406
2.30k
      return Result;
407
2.30k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
524
    static DynTypedNode create(const BaseT &Node) {
403
524
      DynTypedNode Result;
404
524
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
524
      new (Result.Storage.buffer) const void *(&Node);
406
524
      return Result;
407
524
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
19
    static DynTypedNode create(const BaseT &Node) {
403
19
      DynTypedNode Result;
404
19
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
19
      new (Result.Storage.buffer) const void *(&Node);
406
19
      return Result;
407
19
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
36
    static DynTypedNode create(const BaseT &Node) {
403
36
      DynTypedNode Result;
404
36
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
36
      new (Result.Storage.buffer) const void *(&Node);
406
36
      return Result;
407
36
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchCase, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
23
    static DynTypedNode create(const BaseT &Node) {
403
23
      DynTypedNode Result;
404
23
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
23
      new (Result.Storage.buffer) const void *(&Node);
406
23
      return Result;
407
23
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
787
    static DynTypedNode create(const BaseT &Node) {
403
787
      DynTypedNode Result;
404
787
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
787
      new (Result.Storage.buffer) const void *(&Node);
406
787
      return Result;
407
787
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::create(clang::OMPClause const&)
Line
Count
Source
402
24
    static DynTypedNode create(const BaseT &Node) {
403
24
      DynTypedNode Result;
404
24
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
24
      new (Result.Storage.buffer) const void *(&Node);
406
24
      return Result;
407
24
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
434
    static DynTypedNode create(const BaseT &Node) {
403
434
      DynTypedNode Result;
404
434
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
434
      new (Result.Storage.buffer) const void *(&Node);
406
434
      return Result;
407
434
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
27
    static DynTypedNode create(const BaseT &Node) {
403
27
      DynTypedNode Result;
404
27
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
27
      new (Result.Storage.buffer) const void *(&Node);
406
27
      return Result;
407
27
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
110
    static DynTypedNode create(const BaseT &Node) {
403
110
      DynTypedNode Result;
404
110
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
110
      new (Result.Storage.buffer) const void *(&Node);
406
110
      return Result;
407
110
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
462
    static DynTypedNode create(const BaseT &Node) {
403
462
      DynTypedNode Result;
404
462
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
462
      new (Result.Storage.buffer) const void *(&Node);
406
462
      return Result;
407
462
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
6
    static DynTypedNode create(const BaseT &Node) {
403
6
      DynTypedNode Result;
404
6
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
6
      new (Result.Storage.buffer) const void *(&Node);
406
6
      return Result;
407
6
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
1
    static DynTypedNode create(const BaseT &Node) {
403
1
      DynTypedNode Result;
404
1
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
1
      new (Result.Storage.buffer) const void *(&Node);
406
1
      return Result;
407
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
402
168
    static DynTypedNode create(const BaseT &Node) {
403
168
      DynTypedNode Result;
404
168
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
168
      new (Result.Storage.buffer) const void *(&Node);
406
168
      return Result;
407
168
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
35
    static DynTypedNode create(const BaseT &Node) {
403
35
      DynTypedNode Result;
404
35
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
35
      new (Result.Storage.buffer) const void *(&Node);
406
35
      return Result;
407
35
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
19
    static DynTypedNode create(const BaseT &Node) {
403
19
      DynTypedNode Result;
404
19
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
19
      new (Result.Storage.buffer) const void *(&Node);
406
19
      return Result;
407
19
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
135
    static DynTypedNode create(const BaseT &Node) {
403
135
      DynTypedNode Result;
404
135
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
135
      new (Result.Storage.buffer) const void *(&Node);
406
135
      return Result;
407
135
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
402
54
    static DynTypedNode create(const BaseT &Node) {
403
54
      DynTypedNode Result;
404
54
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
405
54
      new (Result.Storage.buffer) const void *(&Node);
406
54
      return Result;
407
54
    }
408
  };
409
410
  /// Converter that stores T* (by pointer).
411
  template <typename T> struct PtrConverter {
412
413
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
413
413
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
414
62
        return &getUnchecked(NodeKind, Storage);
415
351
      return nullptr;
416
351
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
412
177
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
413
177
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
414
45
        return &getUnchecked(NodeKind, Storage);
415
132
      return nullptr;
416
132
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
412
236
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
413
236
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
414
17
        return &getUnchecked(NodeKind, Storage);
415
219
      return nullptr;
416
219
    }
417
262
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
418
262
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
419
262
      return *static_cast<const T *>(
420
262
          *reinterpret_cast<const void *const *>(Storage));
421
262
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
417
157
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
418
157
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
419
157
      return *static_cast<const T *>(
420
157
          *reinterpret_cast<const void *const *>(Storage));
421
157
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
417
105
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
418
105
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
419
105
      return *static_cast<const T *>(
420
105
          *reinterpret_cast<const void *const *>(Storage));
421
105
    }
422
783
    static DynTypedNode create(const T &Node) {
423
783
      DynTypedNode Result;
424
783
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
425
783
      new (Result.Storage.buffer) const void *(&Node);
426
783
      return Result;
427
783
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::create(clang::NestedNameSpecifier const&)
Line
Count
Source
422
591
    static DynTypedNode create(const T &Node) {
423
591
      DynTypedNode Result;
424
591
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
425
591
      new (Result.Storage.buffer) const void *(&Node);
426
591
      return Result;
427
591
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::create(clang::CXXCtorInitializer const&)
Line
Count
Source
422
192
    static DynTypedNode create(const T &Node) {
423
192
      DynTypedNode Result;
424
192
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
425
192
      new (Result.Storage.buffer) const void *(&Node);
426
192
      return Result;
427
192
    }
428
  };
429
430
  /// Converter that stores T (by value).
431
  template <typename T> struct ValueConverter {
432
11.0k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
433
11.0k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
434
2.81k
        return reinterpret_cast<const T *>(Storage);
435
8.28k
      return nullptr;
436
8.28k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
432
3
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
433
3
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
434
1
        return reinterpret_cast<const T *>(Storage);
435
2
      return nullptr;
436
2
    }
clang::DynTypedNode::ValueConverter<clang::TemplateName>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
432
2
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
433
2
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
434
0
        return reinterpret_cast<const T *>(Storage);
435
2
      return nullptr;
436
2
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
432
5.49k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
433
5.49k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
434
174
        return reinterpret_cast<const T *>(Storage);
435
5.31k
      return nullptr;
436
5.31k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
432
200
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
433
200
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
434
178
        return reinterpret_cast<const T *>(Storage);
435
22
      return nullptr;
436
22
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::get(clang::ASTNodeKind, char const*)
Line
Count
Source
432
5.40k
    static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
433
5.40k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
434
2.46k
        return reinterpret_cast<const T *>(Storage);
435
2.93k
      return nullptr;
436
2.93k
    }
437
76.1k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
438
76.1k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
439
76.1k
      return *reinterpret_cast<const T *>(Storage);
440
76.1k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
437
11.2k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
438
11.2k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
439
11.2k
      return *reinterpret_cast<const T *>(Storage);
440
11.2k
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
437
63.5k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
438
63.5k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
439
63.5k
      return *reinterpret_cast<const T *>(Storage);
440
63.5k
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
437
1.29k
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
438
1.29k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
439
1.29k
      return *reinterpret_cast<const T *>(Storage);
440
1.29k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::getUnchecked(clang::ASTNodeKind, char const*)
Line
Count
Source
437
46
    static const T &getUnchecked(ASTNodeKind NodeKind, const char Storage[]) {
438
46
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
439
46
      return *reinterpret_cast<const T *>(Storage);
440
46
    }
441
87.8k
    static DynTypedNode create(const T &Node) {
442
87.8k
      DynTypedNode Result;
443
87.8k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
444
87.8k
      new (Result.Storage.buffer) T(Node);
445
87.8k
      return Result;
446
87.8k
    }
clang::DynTypedNode::ValueConverter<clang::TypeLoc>::create(clang::TypeLoc const&)
Line
Count
Source
441
49.7k
    static DynTypedNode create(const T &Node) {
442
49.7k
      DynTypedNode Result;
443
49.7k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
444
49.7k
      new (Result.Storage.buffer) T(Node);
445
49.7k
      return Result;
446
49.7k
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::create(clang::NestedNameSpecifierLoc const&)
Line
Count
Source
441
14.9k
    static DynTypedNode create(const T &Node) {
442
14.9k
      DynTypedNode Result;
443
14.9k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
444
14.9k
      new (Result.Storage.buffer) T(Node);
445
14.9k
      return Result;
446
14.9k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::create(clang::QualType const&)
Line
Count
Source
441
23.1k
    static DynTypedNode create(const T &Node) {
442
23.1k
      DynTypedNode Result;
443
23.1k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
444
23.1k
      new (Result.Storage.buffer) T(Node);
445
23.1k
      return Result;
446
23.1k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateName>::create(clang::TemplateName const&)
Line
Count
Source
441
2
    static DynTypedNode create(const T &Node) {
442
2
      DynTypedNode Result;
443
2
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
444
2
      new (Result.Storage.buffer) T(Node);
445
2
      return Result;
446
2
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::create(clang::TemplateArgument const&)
Line
Count
Source
441
55
    static DynTypedNode create(const T &Node) {
442
55
      DynTypedNode Result;
443
55
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
444
55
      new (Result.Storage.buffer) T(Node);
445
55
      return Result;
446
55
    }
447
  };
448
449
  ASTNodeKind NodeKind;
450
451
  /// Stores the data of the node.
452
  ///
453
  /// Note that we can store \c Decls, \c Stmts, \c Types,
454
  /// \c NestedNameSpecifiers and \c CXXCtorInitializer by pointer as they are
455
  /// guaranteed to be unique pointers pointing to dedicated storage in the AST.
456
  /// \c QualTypes, \c NestedNameSpecifierLocs, \c TypeLocs and
457
  /// \c TemplateArguments on the other hand do not have storage or unique
458
  /// pointers and thus need to be stored by value.
459
  llvm::AlignedCharArrayUnion<const void *, TemplateArgument,
460
                              NestedNameSpecifierLoc, QualType,
461
                              TypeLoc> Storage;
462
};
463
464
template <typename T>
465
struct DynTypedNode::BaseConverter<
466
    T, std::enable_if_t<std::is_base_of<Decl, T>::value>>
467
    : public DynCastPtrConverter<T, Decl> {};
468
469
template <typename T>
470
struct DynTypedNode::BaseConverter<
471
    T, std::enable_if_t<std::is_base_of<Stmt, T>::value>>
472
    : public DynCastPtrConverter<T, Stmt> {};
473
474
template <typename T>
475
struct DynTypedNode::BaseConverter<
476
    T, std::enable_if_t<std::is_base_of<Type, T>::value>>
477
    : public DynCastPtrConverter<T, Type> {};
478
479
template <typename T>
480
struct DynTypedNode::BaseConverter<
481
    T, std::enable_if_t<std::is_base_of<OMPClause, T>::value>>
482
    : public DynCastPtrConverter<T, OMPClause> {};
483
484
template <>
485
struct DynTypedNode::BaseConverter<
486
    NestedNameSpecifier, void> : public PtrConverter<NestedNameSpecifier> {};
487
488
template <>
489
struct DynTypedNode::BaseConverter<
490
    CXXCtorInitializer, void> : public PtrConverter<CXXCtorInitializer> {};
491
492
template <>
493
struct DynTypedNode::BaseConverter<
494
    TemplateArgument, void> : public ValueConverter<TemplateArgument> {};
495
496
template <>
497
struct DynTypedNode::BaseConverter<
498
    TemplateName, void> : public ValueConverter<TemplateName> {};
499
500
template <>
501
struct DynTypedNode::BaseConverter<
502
    NestedNameSpecifierLoc,
503
    void> : public ValueConverter<NestedNameSpecifierLoc> {};
504
505
template <>
506
struct DynTypedNode::BaseConverter<QualType,
507
                                   void> : public ValueConverter<QualType> {};
508
509
template <>
510
struct DynTypedNode::BaseConverter<
511
    TypeLoc, void> : public ValueConverter<TypeLoc> {};
512
513
// The only operation we allow on unsupported types is \c get.
514
// This allows to conveniently use \c DynTypedNode when having an arbitrary
515
// AST node that is not supported, but prevents misuse - a user cannot create
516
// a DynTypedNode from arbitrary types.
517
template <typename T, typename EnablerT> struct DynTypedNode::BaseConverter {
518
  static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
519
    return NULL;
520
  }
521
};
522
523
// Previously these types were defined in the clang::ast_type_traits namespace.
524
// Provide typedefs so that legacy code can be fixed asynchronously.
525
namespace ast_type_traits {
526
using DynTypedNode = ::clang::DynTypedNode;
527
using ASTNodeKind = ::clang::ASTNodeKind;
528
using TraversalKind = ::clang::TraversalKind;
529
530
constexpr TraversalKind TK_AsIs = ::clang::TK_AsIs;
531
constexpr TraversalKind TK_IgnoreImplicitCastsAndParentheses =
532
    ::clang::TK_IgnoreImplicitCastsAndParentheses;
533
constexpr TraversalKind TK_IgnoreUnlessSpelledInSource =
534
    ::clang::TK_IgnoreUnlessSpelledInSource;
535
} // namespace ast_type_traits
536
537
} // end namespace clang
538
539
namespace llvm {
540
541
template <>
542
struct DenseMapInfo<clang::ASTNodeKind> : clang::ASTNodeKind::DenseMapInfo {};
543
544
template <>
545
struct DenseMapInfo<clang::DynTypedNode> : clang::DynTypedNode::DenseMapInfo {};
546
547
}  // end namespace llvm
548
549
#endif