Coverage Report

Created: 2022-01-18 06:27

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/AST/ASTTypeTraits.h
Line
Count
Source (jump to first uncovered line)
1
//===--- ASTTypeTraits.h ----------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
//  Provides a dynamic type identifier and a dynamically typed node container
10
//  that can be used to store an AST base node at runtime in the same storage in
11
//  a type safe way.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_CLANG_AST_ASTTYPETRAITS_H
16
#define LLVM_CLANG_AST_ASTTYPETRAITS_H
17
18
#include "clang/AST/ASTFwd.h"
19
#include "clang/AST/DeclCXX.h"
20
#include "clang/AST/LambdaCapture.h"
21
#include "clang/AST/NestedNameSpecifier.h"
22
#include "clang/AST/TemplateBase.h"
23
#include "clang/AST/TypeLoc.h"
24
#include "clang/Basic/LLVM.h"
25
#include "llvm/ADT/DenseMapInfo.h"
26
#include "llvm/Support/AlignOf.h"
27
28
namespace llvm {
29
class raw_ostream;
30
} // namespace llvm
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
  /// Ignore AST nodes not written in the source
43
  TK_IgnoreUnlessSpelledInSource
44
};
45
46
/// Kind identifier.
47
///
48
/// It can be constructed from any node kind and allows for runtime type
49
/// hierarchy checks.
50
/// Use getFromNodeKind<T>() to construct them.
51
class ASTNodeKind {
52
public:
53
  /// Empty identifier. It matches nothing.
54
2.99M
  ASTNodeKind() : KindId(NKI_None) {}
55
56
  /// Construct an identifier for T.
57
  template <class T>
58
6.56M
  static ASTNodeKind getFromNodeKind() {
59
6.56M
    return ASTNodeKind(KindToKindId<T>::Id);
60
6.56M
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::QualType>()
Line
Count
Source
58
932k
  static ASTNodeKind getFromNodeKind() {
59
932k
    return ASTNodeKind(KindToKindId<T>::Id);
60
932k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeLoc>()
Line
Count
Source
58
350k
  static ASTNodeKind getFromNodeKind() {
59
350k
    return ASTNodeKind(KindToKindId<T>::Id);
60
350k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifierLoc>()
Line
Count
Source
58
268k
  static ASTNodeKind getFromNodeKind() {
59
268k
    return ASTNodeKind(KindToKindId<T>::Id);
60
268k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Stmt>()
Line
Count
Source
58
726k
  static ASTNodeKind getFromNodeKind() {
59
726k
    return ASTNodeKind(KindToKindId<T>::Id);
60
726k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgument>()
Line
Count
Source
58
947
  static ASTNodeKind getFromNodeKind() {
59
947
    return ASTNodeKind(KindToKindId<T>::Id);
60
947
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateArgumentLoc>()
Line
Count
Source
58
800
  static ASTNodeKind getFromNodeKind() {
59
800
    return ASTNodeKind(KindToKindId<T>::Id);
60
800
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateName>()
Line
Count
Source
58
91
  static ASTNodeKind getFromNodeKind() {
59
91
    return ASTNodeKind(KindToKindId<T>::Id);
60
91
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NestedNameSpecifier>()
Line
Count
Source
58
4.14k
  static ASTNodeKind getFromNodeKind() {
59
4.14k
    return ASTNodeKind(KindToKindId<T>::Id);
60
4.14k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Type>()
Line
Count
Source
58
521k
  static ASTNodeKind getFromNodeKind() {
59
521k
    return ASTNodeKind(KindToKindId<T>::Id);
60
521k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Attr>()
Line
Count
Source
58
1.82k
  static ASTNodeKind getFromNodeKind() {
59
1.82k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.82k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCtorInitializer>()
Line
Count
Source
58
1.53k
  static ASTNodeKind getFromNodeKind() {
59
1.53k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.53k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPClause>()
Line
Count
Source
58
156
  static ASTNodeKind getFromNodeKind() {
59
156
    return ASTNodeKind(KindToKindId<T>::Id);
60
156
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBaseSpecifier>()
Line
Count
Source
58
1.67k
  static ASTNodeKind getFromNodeKind() {
59
1.67k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.67k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclStmt>()
Line
Count
Source
58
25.1k
  static ASTNodeKind getFromNodeKind() {
59
25.1k
    return ASTNodeKind(KindToKindId<T>::Id);
60
25.1k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXForRangeStmt>()
Line
Count
Source
58
3.30k
  static ASTNodeKind getFromNodeKind() {
59
3.30k
    return ASTNodeKind(KindToKindId<T>::Id);
60
3.30k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VarDecl>()
Line
Count
Source
58
214k
  static ASTNodeKind getFromNodeKind() {
59
214k
    return ASTNodeKind(KindToKindId<T>::Id);
60
214k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMethodDecl>()
Line
Count
Source
58
36.1k
  static ASTNodeKind getFromNodeKind() {
59
36.1k
    return ASTNodeKind(KindToKindId<T>::Id);
60
36.1k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXRecordDecl>()
Line
Count
Source
58
49.1k
  static ASTNodeKind getFromNodeKind() {
59
49.1k
    return ASTNodeKind(KindToKindId<T>::Id);
60
49.1k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LambdaExpr>()
Line
Count
Source
58
3.41k
  static ASTNodeKind getFromNodeKind() {
59
3.41k
    return ASTNodeKind(KindToKindId<T>::Id);
60
3.41k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionTemplateDecl>()
Line
Count
Source
58
8.47k
  static ASTNodeKind getFromNodeKind() {
59
8.47k
    return ASTNodeKind(KindToKindId<T>::Id);
60
8.47k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Expr>()
Line
Count
Source
58
1.87M
  static ASTNodeKind getFromNodeKind() {
59
1.87M
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.87M
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::Decl>()
Line
Count
Source
58
542k
  static ASTNodeKind getFromNodeKind() {
59
542k
    return ASTNodeKind(KindToKindId<T>::Id);
60
542k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundStmt>()
Line
Count
Source
58
4.41k
  static ASTNodeKind getFromNodeKind() {
59
4.41k
    return ASTNodeKind(KindToKindId<T>::Id);
60
4.41k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockPointerType>()
Line
Count
Source
58
1.45k
  static ASTNodeKind getFromNodeKind() {
59
1.45k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.45k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeleteExpr>()
Line
Count
Source
58
301
  static ASTNodeKind getFromNodeKind() {
59
301
    return ASTNodeKind(KindToKindId<T>::Id);
60
301
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefType>()
Line
Count
Source
58
1.25k
  static ASTNodeKind getFromNodeKind() {
59
1.25k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.25k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefDecl>()
Line
Count
Source
58
2.49k
  static ASTNodeKind getFromNodeKind() {
59
2.49k
    return ASTNodeKind(KindToKindId<T>::Id);
60
2.49k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordType>()
Line
Count
Source
58
690
  static ASTNodeKind getFromNodeKind() {
59
690
    return ASTNodeKind(KindToKindId<T>::Id);
60
690
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCObjectPointerType>()
Line
Count
Source
58
1.25k
  static ASTNodeKind getFromNodeKind() {
59
1.25k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.25k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAutoreleasePoolStmt>()
Line
Count
Source
58
2.96k
  static ASTNodeKind getFromNodeKind() {
59
2.96k
    return ASTNodeKind(KindToKindId<T>::Id);
60
2.96k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StringLiteral>()
Line
Count
Source
58
502
  static ASTNodeKind getFromNodeKind() {
59
502
    return ASTNodeKind(KindToKindId<T>::Id);
60
502
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PointerType>()
Line
Count
Source
58
2.26k
  static ASTNodeKind getFromNodeKind() {
59
2.26k
    return ASTNodeKind(KindToKindId<T>::Id);
60
2.26k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCInterfaceDecl>()
Line
Count
Source
58
9.18k
  static ASTNodeKind getFromNodeKind() {
59
9.18k
    return ASTNodeKind(KindToKindId<T>::Id);
60
9.18k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CStyleCastExpr>()
Line
Count
Source
58
238
  static ASTNodeKind getFromNodeKind() {
59
238
    return ASTNodeKind(KindToKindId<T>::Id);
60
238
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RecordDecl>()
Line
Count
Source
58
14.0k
  static ASTNodeKind getFromNodeKind() {
59
14.0k
    return ASTNodeKind(KindToKindId<T>::Id);
60
14.0k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConditionalOperator>()
Line
Count
Source
58
32.2k
  static ASTNodeKind getFromNodeKind() {
59
32.2k
    return ASTNodeKind(KindToKindId<T>::Id);
60
32.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarRefExpr>()
Line
Count
Source
58
220
  static ASTNodeKind getFromNodeKind() {
59
220
    return ASTNodeKind(KindToKindId<T>::Id);
60
220
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryOperator>()
Line
Count
Source
58
31.0k
  static ASTNodeKind getFromNodeKind() {
59
31.0k
    return ASTNodeKind(KindToKindId<T>::Id);
60
31.0k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IntegerLiteral>()
Line
Count
Source
58
4.37k
  static ASTNodeKind getFromNodeKind() {
59
4.37k
    return ASTNodeKind(KindToKindId<T>::Id);
60
4.37k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryOperator>()
Line
Count
Source
58
96.2k
  static ASTNodeKind getFromNodeKind() {
59
96.2k
    return ASTNodeKind(KindToKindId<T>::Id);
60
96.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GotoStmt>()
Line
Count
Source
58
614
  static ASTNodeKind getFromNodeKind() {
59
614
    return ASTNodeKind(KindToKindId<T>::Id);
60
614
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXOperatorCallExpr>()
Line
Count
Source
58
13.2k
  static ASTNodeKind getFromNodeKind() {
59
13.2k
    return ASTNodeKind(KindToKindId<T>::Id);
60
13.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReferenceType>()
Line
Count
Source
58
51.4k
  static ASTNodeKind getFromNodeKind() {
59
51.4k
    return ASTNodeKind(KindToKindId<T>::Id);
60
51.4k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXMemberCallExpr>()
Line
Count
Source
58
3.93k
  static ASTNodeKind getFromNodeKind() {
59
3.93k
    return ASTNodeKind(KindToKindId<T>::Id);
60
3.93k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamedDecl>()
Line
Count
Source
58
110k
  static ASTNodeKind getFromNodeKind() {
59
110k
    return ASTNodeKind(KindToKindId<T>::Id);
60
110k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CallExpr>()
Line
Count
Source
58
42.9k
  static ASTNodeKind getFromNodeKind() {
59
42.9k
    return ASTNodeKind(KindToKindId<T>::Id);
60
42.9k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LambdaCapture>()
Line
Count
Source
58
962
  static ASTNodeKind getFromNodeKind() {
59
962
    return ASTNodeKind(KindToKindId<T>::Id);
60
962
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionDecl>()
Line
Count
Source
58
34.0k
  static ASTNodeKind getFromNodeKind() {
59
34.0k
    return ASTNodeKind(KindToKindId<T>::Id);
60
34.0k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMethodDecl>()
Line
Count
Source
58
2.84k
  static ASTNodeKind getFromNodeKind() {
59
2.84k
    return ASTNodeKind(KindToKindId<T>::Id);
60
2.84k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockDecl>()
Line
Count
Source
58
2.62k
  static ASTNodeKind getFromNodeKind() {
59
2.62k
    return ASTNodeKind(KindToKindId<T>::Id);
60
2.62k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclRefExpr>()
Line
Count
Source
58
74.3k
  static ASTNodeKind getFromNodeKind() {
59
74.3k
    return ASTNodeKind(KindToKindId<T>::Id);
60
74.3k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FieldDecl>()
Line
Count
Source
58
4.44k
  static ASTNodeKind getFromNodeKind() {
59
4.44k
    return ASTNodeKind(KindToKindId<T>::Id);
60
4.44k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateSpecializationDecl>()
Line
Count
Source
58
4.17k
  static ASTNodeKind getFromNodeKind() {
59
4.17k
    return ASTNodeKind(KindToKindId<T>::Id);
60
4.17k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InitListExpr>()
Line
Count
Source
58
17.1k
  static ASTNodeKind getFromNodeKind() {
59
17.1k
    return ASTNodeKind(KindToKindId<T>::Id);
60
17.1k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ForStmt>()
Line
Count
Source
58
2.95k
  static ASTNodeKind getFromNodeKind() {
59
2.95k
    return ASTNodeKind(KindToKindId<T>::Id);
60
2.95k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DesignatedInitExpr>()
Line
Count
Source
58
346
  static ASTNodeKind getFromNodeKind() {
59
346
    return ASTNodeKind(KindToKindId<T>::Id);
60
346
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryExprOrTypeTraitExpr>()
Line
Count
Source
58
5.34k
  static ASTNodeKind getFromNodeKind() {
59
5.34k
    return ASTNodeKind(KindToKindId<T>::Id);
60
5.34k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDependentScopeMemberExpr>()
Line
Count
Source
58
1.91k
  static ASTNodeKind getFromNodeKind() {
59
1.91k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.91k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCMessageExpr>()
Line
Count
Source
58
15.8k
  static ASTNodeKind getFromNodeKind() {
59
15.8k
    return ASTNodeKind(KindToKindId<T>::Id);
60
15.8k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OverloadExpr>()
Line
Count
Source
58
47
  static ASTNodeKind getFromNodeKind() {
59
47
    return ASTNodeKind(KindToKindId<T>::Id);
60
47
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXCatchStmt>()
Line
Count
Source
58
278
  static ASTNodeKind getFromNodeKind() {
59
278
    return ASTNodeKind(KindToKindId<T>::Id);
60
278
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructorDecl>()
Line
Count
Source
58
12.2k
  static ASTNodeKind getFromNodeKind() {
59
12.2k
    return ASTNodeKind(KindToKindId<T>::Id);
60
12.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstructExpr>()
Line
Count
Source
58
5.09k
  static ASTNodeKind getFromNodeKind() {
59
5.09k
    return ASTNodeKind(KindToKindId<T>::Id);
60
5.09k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParmVarDecl>()
Line
Count
Source
58
53.2k
  static ASTNodeKind getFromNodeKind() {
59
53.2k
    return ASTNodeKind(KindToKindId<T>::Id);
60
53.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IfStmt>()
Line
Count
Source
58
3.55k
  static ASTNodeKind getFromNodeKind() {
59
3.55k
    return ASTNodeKind(KindToKindId<T>::Id);
60
3.55k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArraySubscriptExpr>()
Line
Count
Source
58
2.07k
  static ASTNodeKind getFromNodeKind() {
59
2.07k
    return ASTNodeKind(KindToKindId<T>::Id);
60
2.07k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CastExpr>()
Line
Count
Source
58
42.2k
  static ASTNodeKind getFromNodeKind() {
59
42.2k
    return ASTNodeKind(KindToKindId<T>::Id);
60
42.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExplicitCastExpr>()
Line
Count
Source
58
3.55k
  static ASTNodeKind getFromNodeKind() {
59
3.55k
    return ASTNodeKind(KindToKindId<T>::Id);
60
3.55k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitCastExpr>()
Line
Count
Source
58
178k
  static ASTNodeKind getFromNodeKind() {
59
178k
    return ASTNodeKind(KindToKindId<T>::Id);
60
178k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagDecl>()
Line
Count
Source
58
591
  static ASTNodeKind getFromNodeKind() {
59
591
    return ASTNodeKind(KindToKindId<T>::Id);
60
591
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AbstractConditionalOperator>()
Line
Count
Source
58
17.3k
  static ASTNodeKind getFromNodeKind() {
59
17.3k
    return ASTNodeKind(KindToKindId<T>::Id);
60
17.3k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberExpr>()
Line
Count
Source
58
3.42k
  static ASTNodeKind getFromNodeKind() {
59
3.42k
    return ASTNodeKind(KindToKindId<T>::Id);
60
3.42k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BaseUsingDecl>()
Line
Count
Source
58
71
  static ASTNodeKind getFromNodeKind() {
59
71
    return ASTNodeKind(KindToKindId<T>::Id);
60
71
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingShadowDecl>()
Line
Count
Source
58
3.81k
  static ASTNodeKind getFromNodeKind() {
59
3.81k
    return ASTNodeKind(KindToKindId<T>::Id);
60
3.81k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::QualifiedTypeLoc>()
Line
Count
Source
58
245
  static ASTNodeKind getFromNodeKind() {
59
245
    return ASTNodeKind(KindToKindId<T>::Id);
60
245
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PointerTypeLoc>()
Line
Count
Source
58
217
  static ASTNodeKind getFromNodeKind() {
59
217
    return ASTNodeKind(KindToKindId<T>::Id);
60
217
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReferenceTypeLoc>()
Line
Count
Source
58
218
  static ASTNodeKind getFromNodeKind() {
59
218
    return ASTNodeKind(KindToKindId<T>::Id);
60
218
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateSpecializationTypeLoc>()
Line
Count
Source
58
254
  static ASTNodeKind getFromNodeKind() {
59
254
    return ASTNodeKind(KindToKindId<T>::Id);
60
254
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ElaboratedTypeLoc>()
Line
Count
Source
58
274
  static ASTNodeKind getFromNodeKind() {
59
274
    return ASTNodeKind(KindToKindId<T>::Id);
60
274
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::VariableArrayType>()
Line
Count
Source
58
1.21k
  static ASTNodeKind getFromNodeKind() {
59
1.21k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.21k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ElaboratedType>()
Line
Count
Source
58
243
  static ASTNodeKind getFromNodeKind() {
59
243
    return ASTNodeKind(KindToKindId<T>::Id);
60
243
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecayedType>()
Line
Count
Source
58
162
  static ASTNodeKind getFromNodeKind() {
59
162
    return ASTNodeKind(KindToKindId<T>::Id);
60
162
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchStmt>()
Line
Count
Source
58
956
  static ASTNodeKind getFromNodeKind() {
59
956
    return ASTNodeKind(KindToKindId<T>::Id);
60
956
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceDecl>()
Line
Count
Source
58
451
  static ASTNodeKind getFromNodeKind() {
59
451
    return ASTNodeKind(KindToKindId<T>::Id);
60
451
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CaseStmt>()
Line
Count
Source
58
151
  static ASTNodeKind getFromNodeKind() {
59
151
    return ASTNodeKind(KindToKindId<T>::Id);
60
151
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ReturnStmt>()
Line
Count
Source
58
1.41k
  static ASTNodeKind getFromNodeKind() {
59
1.41k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.41k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BindingDecl>()
Line
Count
Source
58
273
  static ASTNodeKind getFromNodeKind() {
59
273
    return ASTNodeKind(KindToKindId<T>::Id);
60
273
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecompositionDecl>()
Line
Count
Source
58
146
  static ASTNodeKind getFromNodeKind() {
59
146
    return ASTNodeKind(KindToKindId<T>::Id);
60
146
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNewExpr>()
Line
Count
Source
58
353
  static ASTNodeKind getFromNodeKind() {
59
353
    return ASTNodeKind(KindToKindId<T>::Id);
60
353
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumDecl>()
Line
Count
Source
58
3.42k
  static ASTNodeKind getFromNodeKind() {
59
3.42k
    return ASTNodeKind(KindToKindId<T>::Id);
60
3.42k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPExecutableDirective>()
Line
Count
Source
58
1.09k
  static ASTNodeKind getFromNodeKind() {
59
1.09k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.09k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OMPDefaultClause>()
Line
Count
Source
58
336
  static ASTNodeKind getFromNodeKind() {
59
336
    return ASTNodeKind(KindToKindId<T>::Id);
60
336
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TranslationUnitDecl>()
Line
Count
Source
58
2.69k
  static ASTNodeKind getFromNodeKind() {
59
2.69k
    return ASTNodeKind(KindToKindId<T>::Id);
60
2.69k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThisExpr>()
Line
Count
Source
58
285
  static ASTNodeKind getFromNodeKind() {
59
285
    return ASTNodeKind(KindToKindId<T>::Id);
60
285
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GNUNullExpr>()
Line
Count
Source
58
205
  static ASTNodeKind getFromNodeKind() {
59
205
    return ASTNodeKind(KindToKindId<T>::Id);
60
205
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNullPtrLiteralExpr>()
Line
Count
Source
58
199
  static ASTNodeKind getFromNodeKind() {
59
199
    return ASTNodeKind(KindToKindId<T>::Id);
60
199
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FriendDecl>()
Line
Count
Source
58
785
  static ASTNodeKind getFromNodeKind() {
59
785
    return ASTNodeKind(KindToKindId<T>::Id);
60
785
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypedefNameDecl>()
Line
Count
Source
58
1.51k
  static ASTNodeKind getFromNodeKind() {
59
1.51k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.51k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ValueDecl>()
Line
Count
Source
58
650
  static ASTNodeKind getFromNodeKind() {
59
650
    return ASTNodeKind(KindToKindId<T>::Id);
60
650
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CharacterLiteral>()
Line
Count
Source
58
308
  static ASTNodeKind getFromNodeKind() {
59
308
    return ASTNodeKind(KindToKindId<T>::Id);
60
308
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBoolLiteralExpr>()
Line
Count
Source
58
737
  static ASTNodeKind getFromNodeKind() {
59
737
    return ASTNodeKind(KindToKindId<T>::Id);
60
737
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FloatingLiteral>()
Line
Count
Source
58
695
  static ASTNodeKind getFromNodeKind() {
59
695
    return ASTNodeKind(KindToKindId<T>::Id);
60
695
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AccessSpecDecl>()
Line
Count
Source
58
202
  static ASTNodeKind getFromNodeKind() {
59
202
    return ASTNodeKind(KindToKindId<T>::Id);
60
202
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AddrLabelExpr>()
Line
Count
Source
58
139
  static ASTNodeKind getFromNodeKind() {
59
139
    return ASTNodeKind(KindToKindId<T>::Id);
60
139
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXUnresolvedConstructExpr>()
Line
Count
Source
58
539
  static ASTNodeKind getFromNodeKind() {
59
539
    return ASTNodeKind(KindToKindId<T>::Id);
60
539
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ArrayType>()
Line
Count
Source
58
920
  static ASTNodeKind getFromNodeKind() {
59
920
    return ASTNodeKind(KindToKindId<T>::Id);
60
920
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AsmStmt>()
Line
Count
Source
58
94
  static ASTNodeKind getFromNodeKind() {
59
94
    return ASTNodeKind(KindToKindId<T>::Id);
60
94
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicExpr>()
Line
Count
Source
58
136
  static ASTNodeKind getFromNodeKind() {
59
136
    return ASTNodeKind(KindToKindId<T>::Id);
60
136
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AtomicType>()
Line
Count
Source
58
216
  static ASTNodeKind getFromNodeKind() {
59
216
    return ASTNodeKind(KindToKindId<T>::Id);
60
216
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::AutoType>()
Line
Count
Source
58
129
  static ASTNodeKind getFromNodeKind() {
59
129
    return ASTNodeKind(KindToKindId<T>::Id);
60
129
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BinaryConditionalOperator>()
Line
Count
Source
58
28.2k
  static ASTNodeKind getFromNodeKind() {
59
28.2k
    return ASTNodeKind(KindToKindId<T>::Id);
60
28.2k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXRewrittenBinaryOperator>()
Line
Count
Source
58
1.75k
  static ASTNodeKind getFromNodeKind() {
59
1.75k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.75k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BlockExpr>()
Line
Count
Source
58
94
  static ASTNodeKind getFromNodeKind() {
59
94
    return ASTNodeKind(KindToKindId<T>::Id);
60
94
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BreakStmt>()
Line
Count
Source
58
94
  static ASTNodeKind getFromNodeKind() {
59
94
    return ASTNodeKind(KindToKindId<T>::Id);
60
94
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::BuiltinType>()
Line
Count
Source
58
580
  static ASTNodeKind getFromNodeKind() {
59
580
    return ASTNodeKind(KindToKindId<T>::Id);
60
580
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ChooseExpr>()
Line
Count
Source
58
146
  static ASTNodeKind getFromNodeKind() {
59
146
    return ASTNodeKind(KindToKindId<T>::Id);
60
146
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplateDecl>()
Line
Count
Source
58
6.14k
  static ASTNodeKind getFromNodeKind() {
59
6.14k
    return ASTNodeKind(KindToKindId<T>::Id);
60
6.14k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ClassTemplatePartialSpecializationDecl>()
Line
Count
Source
58
160
  static ASTNodeKind getFromNodeKind() {
59
160
    return ASTNodeKind(KindToKindId<T>::Id);
60
160
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ComplexType>()
Line
Count
Source
58
205
  static ASTNodeKind getFromNodeKind() {
59
205
    return ASTNodeKind(KindToKindId<T>::Id);
60
205
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CompoundLiteralExpr>()
Line
Count
Source
58
132
  static ASTNodeKind getFromNodeKind() {
59
132
    return ASTNodeKind(KindToKindId<T>::Id);
60
132
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CoawaitExpr>()
Line
Count
Source
58
59
  static ASTNodeKind getFromNodeKind() {
59
59
    return ASTNodeKind(KindToKindId<T>::Id);
60
59
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantArrayType>()
Line
Count
Source
58
344
  static ASTNodeKind getFromNodeKind() {
59
344
    return ASTNodeKind(KindToKindId<T>::Id);
60
344
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ConstantExpr>()
Line
Count
Source
58
88
  static ASTNodeKind getFromNodeKind() {
59
88
    return ASTNodeKind(KindToKindId<T>::Id);
60
88
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ContinueStmt>()
Line
Count
Source
58
94
  static ASTNodeKind getFromNodeKind() {
59
94
    return ASTNodeKind(KindToKindId<T>::Id);
60
94
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CoreturnStmt>()
Line
Count
Source
58
55
  static ASTNodeKind getFromNodeKind() {
59
55
    return ASTNodeKind(KindToKindId<T>::Id);
60
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CoyieldExpr>()
Line
Count
Source
58
55
  static ASTNodeKind getFromNodeKind() {
59
55
    return ASTNodeKind(KindToKindId<T>::Id);
60
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CUDAKernelCallExpr>()
Line
Count
Source
58
58
  static ASTNodeKind getFromNodeKind() {
59
58
    return ASTNodeKind(KindToKindId<T>::Id);
60
58
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXBindTemporaryExpr>()
Line
Count
Source
58
82
  static ASTNodeKind getFromNodeKind() {
59
82
    return ASTNodeKind(KindToKindId<T>::Id);
60
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConstCastExpr>()
Line
Count
Source
58
52
  static ASTNodeKind getFromNodeKind() {
59
52
    return ASTNodeKind(KindToKindId<T>::Id);
60
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXConversionDecl>()
Line
Count
Source
58
171
  static ASTNodeKind getFromNodeKind() {
59
171
    return ASTNodeKind(KindToKindId<T>::Id);
60
171
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDeductionGuideDecl>()
Line
Count
Source
58
458
  static ASTNodeKind getFromNodeKind() {
59
458
    return ASTNodeKind(KindToKindId<T>::Id);
60
458
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDefaultArgExpr>()
Line
Count
Source
58
91
  static ASTNodeKind getFromNodeKind() {
59
91
    return ASTNodeKind(KindToKindId<T>::Id);
60
91
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDestructorDecl>()
Line
Count
Source
58
150
  static ASTNodeKind getFromNodeKind() {
59
150
    return ASTNodeKind(KindToKindId<T>::Id);
60
150
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXDynamicCastExpr>()
Line
Count
Source
58
82
  static ASTNodeKind getFromNodeKind() {
59
82
    return ASTNodeKind(KindToKindId<T>::Id);
60
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXFunctionalCastExpr>()
Line
Count
Source
58
184
  static ASTNodeKind getFromNodeKind() {
59
184
    return ASTNodeKind(KindToKindId<T>::Id);
60
184
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXNoexceptExpr>()
Line
Count
Source
58
1.09k
  static ASTNodeKind getFromNodeKind() {
59
1.09k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.09k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXReinterpretCastExpr>()
Line
Count
Source
58
202
  static ASTNodeKind getFromNodeKind() {
59
202
    return ASTNodeKind(KindToKindId<T>::Id);
60
202
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStaticCastExpr>()
Line
Count
Source
58
204
  static ASTNodeKind getFromNodeKind() {
59
204
    return ASTNodeKind(KindToKindId<T>::Id);
60
204
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXStdInitializerListExpr>()
Line
Count
Source
58
148
  static ASTNodeKind getFromNodeKind() {
59
148
    return ASTNodeKind(KindToKindId<T>::Id);
60
148
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTemporaryObjectExpr>()
Line
Count
Source
58
118
  static ASTNodeKind getFromNodeKind() {
59
118
    return ASTNodeKind(KindToKindId<T>::Id);
60
118
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXThrowExpr>()
Line
Count
Source
58
172
  static ASTNodeKind getFromNodeKind() {
59
172
    return ASTNodeKind(KindToKindId<T>::Id);
60
172
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTryStmt>()
Line
Count
Source
58
82
  static ASTNodeKind getFromNodeKind() {
59
82
    return ASTNodeKind(KindToKindId<T>::Id);
60
82
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeclaratorDecl>()
Line
Count
Source
58
221
  static ASTNodeKind getFromNodeKind() {
59
221
    return ASTNodeKind(KindToKindId<T>::Id);
60
221
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DecltypeType>()
Line
Count
Source
58
129
  static ASTNodeKind getFromNodeKind() {
59
129
    return ASTNodeKind(KindToKindId<T>::Id);
60
129
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DeducedTemplateSpecializationType>()
Line
Count
Source
58
76
  static ASTNodeKind getFromNodeKind() {
59
76
    return ASTNodeKind(KindToKindId<T>::Id);
60
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DefaultStmt>()
Line
Count
Source
58
55
  static ASTNodeKind getFromNodeKind() {
59
55
    return ASTNodeKind(KindToKindId<T>::Id);
60
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DependentCoawaitExpr>()
Line
Count
Source
58
52
  static ASTNodeKind getFromNodeKind() {
59
52
    return ASTNodeKind(KindToKindId<T>::Id);
60
52
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DependentSizedArrayType>()
Line
Count
Source
58
124
  static ASTNodeKind getFromNodeKind() {
59
124
    return ASTNodeKind(KindToKindId<T>::Id);
60
124
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::DoStmt>()
Line
Count
Source
58
234
  static ASTNodeKind getFromNodeKind() {
59
234
    return ASTNodeKind(KindToKindId<T>::Id);
60
234
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingType>()
Line
Count
Source
58
116
  static ASTNodeKind getFromNodeKind() {
59
116
    return ASTNodeKind(KindToKindId<T>::Id);
60
116
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumConstantDecl>()
Line
Count
Source
58
209
  static ASTNodeKind getFromNodeKind() {
59
209
    return ASTNodeKind(KindToKindId<T>::Id);
60
209
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::EnumType>()
Line
Count
Source
58
175
  static ASTNodeKind getFromNodeKind() {
59
175
    return ASTNodeKind(KindToKindId<T>::Id);
60
175
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ExprWithCleanups>()
Line
Count
Source
58
128
  static ASTNodeKind getFromNodeKind() {
59
128
    return ASTNodeKind(KindToKindId<T>::Id);
60
128
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FixedPointLiteral>()
Line
Count
Source
58
76
  static ASTNodeKind getFromNodeKind() {
59
76
    return ASTNodeKind(KindToKindId<T>::Id);
60
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SwitchCase>()
Line
Count
Source
58
262
  static ASTNodeKind getFromNodeKind() {
59
262
    return ASTNodeKind(KindToKindId<T>::Id);
60
262
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionProtoType>()
Line
Count
Source
58
546
  static ASTNodeKind getFromNodeKind() {
59
546
    return ASTNodeKind(KindToKindId<T>::Id);
60
546
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::FunctionType>()
Line
Count
Source
58
334
  static ASTNodeKind getFromNodeKind() {
59
334
    return ASTNodeKind(KindToKindId<T>::Id);
60
334
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::GenericSelectionExpr>()
Line
Count
Source
58
500
  static ASTNodeKind getFromNodeKind() {
59
500
    return ASTNodeKind(KindToKindId<T>::Id);
60
500
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StmtExpr>()
Line
Count
Source
58
156
  static ASTNodeKind getFromNodeKind() {
59
156
    return ASTNodeKind(KindToKindId<T>::Id);
60
156
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateSpecializationType>()
Line
Count
Source
58
299
  static ASTNodeKind getFromNodeKind() {
59
299
    return ASTNodeKind(KindToKindId<T>::Id);
60
299
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::WhileStmt>()
Line
Count
Source
58
248
  static ASTNodeKind getFromNodeKind() {
59
248
    return ASTNodeKind(KindToKindId<T>::Id);
60
248
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::InjectedClassNameType>()
Line
Count
Source
58
85
  static ASTNodeKind getFromNodeKind() {
59
85
    return ASTNodeKind(KindToKindId<T>::Id);
60
85
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelStmt>()
Line
Count
Source
58
143
  static ASTNodeKind getFromNodeKind() {
59
143
    return ASTNodeKind(KindToKindId<T>::Id);
60
143
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TagType>()
Line
Count
Source
58
79
  static ASTNodeKind getFromNodeKind() {
59
79
    return ASTNodeKind(KindToKindId<T>::Id);
60
79
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmType>()
Line
Count
Source
58
1.07k
  static ASTNodeKind getFromNodeKind() {
59
1.07k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.07k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingType>()
Line
Count
Source
58
27
  static ASTNodeKind getFromNodeKind() {
59
27
    return ASTNodeKind(KindToKindId<T>::Id);
60
27
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedMemberExpr>()
Line
Count
Source
58
1.54k
  static ASTNodeKind getFromNodeKind() {
59
1.54k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.54k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstTemplateTypeParmType>()
Line
Count
Source
58
145
  static ASTNodeKind getFromNodeKind() {
59
145
    return ASTNodeKind(KindToKindId<T>::Id);
60
145
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::OpaqueValueExpr>()
Line
Count
Source
58
152
  static ASTNodeKind getFromNodeKind() {
59
152
    return ASTNodeKind(KindToKindId<T>::Id);
60
152
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCPropertyDecl>()
Line
Count
Source
58
87
  static ASTNodeKind getFromNodeKind() {
59
87
    return ASTNodeKind(KindToKindId<T>::Id);
60
87
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImaginaryLiteral>()
Line
Count
Source
58
64
  static ASTNodeKind getFromNodeKind() {
59
64
    return ASTNodeKind(KindToKindId<T>::Id);
60
64
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ImplicitValueInitExpr>()
Line
Count
Source
58
68
  static ASTNodeKind getFromNodeKind() {
59
68
    return ASTNodeKind(KindToKindId<T>::Id);
60
68
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IncompleteArrayType>()
Line
Count
Source
58
178
  static ASTNodeKind getFromNodeKind() {
59
178
    return ASTNodeKind(KindToKindId<T>::Id);
60
178
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::IndirectFieldDecl>()
Line
Count
Source
58
68
  static ASTNodeKind getFromNodeKind() {
59
68
    return ASTNodeKind(KindToKindId<T>::Id);
60
68
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenType>()
Line
Count
Source
58
250
  static ASTNodeKind getFromNodeKind() {
59
250
    return ASTNodeKind(KindToKindId<T>::Id);
60
250
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LValueReferenceType>()
Line
Count
Source
58
208
  static ASTNodeKind getFromNodeKind() {
59
208
    return ASTNodeKind(KindToKindId<T>::Id);
60
208
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LabelDecl>()
Line
Count
Source
58
96
  static ASTNodeKind getFromNodeKind() {
59
96
    return ASTNodeKind(KindToKindId<T>::Id);
60
96
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::LinkageSpecDecl>()
Line
Count
Source
58
112
  static ASTNodeKind getFromNodeKind() {
59
112
    return ASTNodeKind(KindToKindId<T>::Id);
60
112
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MaterializeTemporaryExpr>()
Line
Count
Source
58
106
  static ASTNodeKind getFromNodeKind() {
59
106
    return ASTNodeKind(KindToKindId<T>::Id);
60
106
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::MemberPointerType>()
Line
Count
Source
58
205
  static ASTNodeKind getFromNodeKind() {
59
205
    return ASTNodeKind(KindToKindId<T>::Id);
60
205
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NamespaceAliasDecl>()
Line
Count
Source
58
72
  static ASTNodeKind getFromNodeKind() {
59
72
    return ASTNodeKind(KindToKindId<T>::Id);
60
72
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NonTypeTemplateParmDecl>()
Line
Count
Source
58
136
  static ASTNodeKind getFromNodeKind() {
59
136
    return ASTNodeKind(KindToKindId<T>::Id);
60
136
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::NullStmt>()
Line
Count
Source
58
220
  static ASTNodeKind getFromNodeKind() {
59
220
    return ASTNodeKind(KindToKindId<T>::Id);
60
220
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtCatchStmt>()
Line
Count
Source
58
55
  static ASTNodeKind getFromNodeKind() {
59
55
    return ASTNodeKind(KindToKindId<T>::Id);
60
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryDecl>()
Line
Count
Source
58
54
  static ASTNodeKind getFromNodeKind() {
59
54
    return ASTNodeKind(KindToKindId<T>::Id);
60
54
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCCategoryImplDecl>()
Line
Count
Source
58
54
  static ASTNodeKind getFromNodeKind() {
59
54
    return ASTNodeKind(KindToKindId<T>::Id);
60
54
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtFinallyStmt>()
Line
Count
Source
58
55
  static ASTNodeKind getFromNodeKind() {
59
55
    return ASTNodeKind(KindToKindId<T>::Id);
60
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCImplementationDecl>()
Line
Count
Source
58
54
  static ASTNodeKind getFromNodeKind() {
59
54
    return ASTNodeKind(KindToKindId<T>::Id);
60
54
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCIvarDecl>()
Line
Count
Source
58
54
  static ASTNodeKind getFromNodeKind() {
59
54
    return ASTNodeKind(KindToKindId<T>::Id);
60
54
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCProtocolDecl>()
Line
Count
Source
58
54
  static ASTNodeKind getFromNodeKind() {
59
54
    return ASTNodeKind(KindToKindId<T>::Id);
60
54
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtThrowStmt>()
Line
Count
Source
58
55
  static ASTNodeKind getFromNodeKind() {
59
55
    return ASTNodeKind(KindToKindId<T>::Id);
60
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ObjCAtTryStmt>()
Line
Count
Source
58
55
  static ASTNodeKind getFromNodeKind() {
59
55
    return ASTNodeKind(KindToKindId<T>::Id);
60
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenExpr>()
Line
Count
Source
58
228
  static ASTNodeKind getFromNodeKind() {
59
228
    return ASTNodeKind(KindToKindId<T>::Id);
60
228
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::ParenListExpr>()
Line
Count
Source
58
426
  static ASTNodeKind getFromNodeKind() {
59
426
    return ASTNodeKind(KindToKindId<T>::Id);
60
426
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::PredefinedExpr>()
Line
Count
Source
58
214
  static ASTNodeKind getFromNodeKind() {
59
214
    return ASTNodeKind(KindToKindId<T>::Id);
60
214
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::RValueReferenceType>()
Line
Count
Source
58
208
  static ASTNodeKind getFromNodeKind() {
59
208
    return ASTNodeKind(KindToKindId<T>::Id);
60
208
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::StaticAssertDecl>()
Line
Count
Source
58
74
  static ASTNodeKind getFromNodeKind() {
59
74
    return ASTNodeKind(KindToKindId<T>::Id);
60
74
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::SubstNonTypeTemplateParmExpr>()
Line
Count
Source
58
114
  static ASTNodeKind getFromNodeKind() {
59
114
    return ASTNodeKind(KindToKindId<T>::Id);
60
114
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTemplateParmDecl>()
Line
Count
Source
58
134
  static ASTNodeKind getFromNodeKind() {
59
134
    return ASTNodeKind(KindToKindId<T>::Id);
60
134
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TemplateTypeParmDecl>()
Line
Count
Source
58
1.19k
  static ASTNodeKind getFromNodeKind() {
59
1.19k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.19k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasDecl>()
Line
Count
Source
58
144
  static ASTNodeKind getFromNodeKind() {
59
144
    return ASTNodeKind(KindToKindId<T>::Id);
60
144
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::TypeAliasTemplateDecl>()
Line
Count
Source
58
119
  static ASTNodeKind getFromNodeKind() {
59
119
    return ASTNodeKind(KindToKindId<T>::Id);
60
119
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnaryTransformType>()
Line
Count
Source
58
55
  static ASTNodeKind getFromNodeKind() {
59
55
    return ASTNodeKind(KindToKindId<T>::Id);
60
55
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedLookupExpr>()
Line
Count
Source
58
1.08k
  static ASTNodeKind getFromNodeKind() {
59
1.08k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.08k
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingTypenameDecl>()
Line
Count
Source
58
54
  static ASTNodeKind getFromNodeKind() {
59
54
    return ASTNodeKind(KindToKindId<T>::Id);
60
54
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UnresolvedUsingValueDecl>()
Line
Count
Source
58
57
  static ASTNodeKind getFromNodeKind() {
59
57
    return ASTNodeKind(KindToKindId<T>::Id);
60
57
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UserDefinedLiteral>()
Line
Count
Source
58
76
  static ASTNodeKind getFromNodeKind() {
59
76
    return ASTNodeKind(KindToKindId<T>::Id);
60
76
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDecl>()
Line
Count
Source
58
346
  static ASTNodeKind getFromNodeKind() {
59
346
    return ASTNodeKind(KindToKindId<T>::Id);
60
346
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingEnumDecl>()
Line
Count
Source
58
70
  static ASTNodeKind getFromNodeKind() {
59
70
    return ASTNodeKind(KindToKindId<T>::Id);
60
70
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::UsingDirectiveDecl>()
Line
Count
Source
58
115
  static ASTNodeKind getFromNodeKind() {
59
115
    return ASTNodeKind(KindToKindId<T>::Id);
60
115
  }
clang::ASTNodeKind clang::ASTNodeKind::getFromNodeKind<clang::CXXTypeidExpr>()
Line
Count
Source
58
1.37k
  static ASTNodeKind getFromNodeKind() {
59
1.37k
    return ASTNodeKind(KindToKindId<T>::Id);
60
1.37k
  }
61
62
  /// \{
63
  /// Construct an identifier for the dynamic type of the node
64
  static ASTNodeKind getFromNode(const Decl &D);
65
  static ASTNodeKind getFromNode(const Stmt &S);
66
  static ASTNodeKind getFromNode(const Type &T);
67
  static ASTNodeKind getFromNode(const TypeLoc &T);
68
  static ASTNodeKind getFromNode(const LambdaCapture &L);
69
  static ASTNodeKind getFromNode(const OMPClause &C);
70
  static ASTNodeKind getFromNode(const Attr &A);
71
  /// \}
72
73
  /// Returns \c true if \c this and \c Other represent the same kind.
74
2.48M
  bool isSame(ASTNodeKind Other) const {
75
2.48M
    return KindId != NKI_None && 
KindId == Other.KindId2.48M
;
76
2.48M
  }
77
78
  /// Returns \c true only for the default \c ASTNodeKind()
79
650
  bool isNone() const { return KindId == NKI_None; }
80
81
  /// Returns \c true if \c this is a base kind of (or same as) \c Other.
82
  /// \param Distance If non-null, used to return the distance between \c this
83
  /// and \c Other in the class hierarchy.
84
  bool isBaseOf(ASTNodeKind Other, unsigned *Distance = nullptr) const;
85
86
  /// String representation of the kind.
87
  StringRef asStringRef() const;
88
89
  /// Strict weak ordering for ASTNodeKind.
90
532k
  bool operator<(const ASTNodeKind &Other) const {
91
532k
    return KindId < Other.KindId;
92
532k
  }
93
94
  /// Return the most derived type between \p Kind1 and \p Kind2.
95
  ///
96
  /// Return ASTNodeKind() if they are not related.
97
  static ASTNodeKind getMostDerivedType(ASTNodeKind Kind1, ASTNodeKind Kind2);
98
99
  /// Return the most derived common ancestor between Kind1 and Kind2.
100
  ///
101
  /// Return ASTNodeKind() if they are not related.
102
  static ASTNodeKind getMostDerivedCommonAncestor(ASTNodeKind Kind1,
103
                                                  ASTNodeKind Kind2);
104
105
  ASTNodeKind getCladeKind() const;
106
107
  /// Hooks for using ASTNodeKind as a key in a DenseMap.
108
  struct DenseMapInfo {
109
    // ASTNodeKind() is a good empty key because it is represented as a 0.
110
1.42M
    static inline ASTNodeKind getEmptyKey() { return ASTNodeKind(); }
111
    // NKI_NumberOfKinds is not a valid value, so it is good for a
112
    // tombstone key.
113
1.15M
    static inline ASTNodeKind getTombstoneKey() {
114
1.15M
      return ASTNodeKind(NKI_NumberOfKinds);
115
1.15M
    }
116
571k
    static unsigned getHashValue(const ASTNodeKind &Val) { return Val.KindId; }
117
6.45M
    static bool isEqual(const ASTNodeKind &LHS, const ASTNodeKind &RHS) {
118
6.45M
      return LHS.KindId == RHS.KindId;
119
6.45M
    }
120
  };
121
122
  /// Check if the given ASTNodeKind identifies a type that offers pointer
123
  /// identity. This is useful for the fast path in DynTypedNode.
124
990k
  bool hasPointerIdentity() const {
125
990k
    return KindId > NKI_LastKindWithoutPointerIdentity;
126
990k
  }
127
128
private:
129
  /// Kind ids.
130
  ///
131
  /// Includes all possible base and derived kinds.
132
  enum NodeKindId {
133
    NKI_None,
134
    NKI_TemplateArgument,
135
    NKI_TemplateArgumentLoc,
136
    NKI_LambdaCapture,
137
    NKI_TemplateName,
138
    NKI_NestedNameSpecifierLoc,
139
    NKI_QualType,
140
#define TYPELOC(CLASS, PARENT) NKI_##CLASS##TypeLoc,
141
#include "clang/AST/TypeLocNodes.def"
142
    NKI_TypeLoc,
143
    NKI_LastKindWithoutPointerIdentity = NKI_TypeLoc,
144
    NKI_CXXBaseSpecifier,
145
    NKI_CXXCtorInitializer,
146
    NKI_NestedNameSpecifier,
147
    NKI_Decl,
148
#define DECL(DERIVED, BASE) NKI_##DERIVED##Decl,
149
#include "clang/AST/DeclNodes.inc"
150
    NKI_Stmt,
151
#define STMT(DERIVED, BASE) NKI_##DERIVED,
152
#include "clang/AST/StmtNodes.inc"
153
    NKI_Type,
154
#define TYPE(DERIVED, BASE) NKI_##DERIVED##Type,
155
#include "clang/AST/TypeNodes.inc"
156
    NKI_OMPClause,
157
#define GEN_CLANG_CLAUSE_CLASS
158
#define CLAUSE_CLASS(Enum, Str, Class) NKI_##Class,
159
#include "llvm/Frontend/OpenMP/OMP.inc"
160
    NKI_Attr,
161
#define ATTR(A) NKI_##A##Attr,
162
#include "clang/Basic/AttrList.inc"
163
    NKI_NumberOfKinds
164
  };
165
166
  /// Use getFromNodeKind<T>() to construct the kind.
167
8.95M
  ASTNodeKind(NodeKindId KindId) : KindId(KindId) {}
168
169
  /// Returns \c true if \c Base is a base kind of (or same as) \c
170
  ///   Derived.
171
  /// \param Distance If non-null, used to return the distance between \c Base
172
  /// and \c Derived in the class hierarchy.
173
  static bool isBaseOf(NodeKindId Base, NodeKindId Derived, unsigned *Distance);
174
175
  /// Helper meta-function to convert a kind T to its enum value.
176
  ///
177
  /// This struct is specialized below for all known kinds.
178
  template <class T> struct KindToKindId {
179
    static const NodeKindId Id = NKI_None;
180
  };
181
  template <class T>
182
  struct KindToKindId<const T> : KindToKindId<T> {};
183
184
  /// Per kind info.
185
  struct KindInfo {
186
    /// The id of the parent kind, or None if it has no parent.
187
    NodeKindId ParentId;
188
    /// Name of the kind.
189
    const char *Name;
190
  };
191
  static const KindInfo AllKindInfo[NKI_NumberOfKinds];
192
193
  NodeKindId KindId;
194
};
195
196
#define KIND_TO_KIND_ID(Class)                                                 \
197
  template <> struct ASTNodeKind::KindToKindId<Class> {                        \
198
    static const NodeKindId Id = NKI_##Class;                                  \
199
  };
200
KIND_TO_KIND_ID(CXXCtorInitializer)
201
KIND_TO_KIND_ID(TemplateArgument)
202
KIND_TO_KIND_ID(TemplateArgumentLoc)
203
KIND_TO_KIND_ID(LambdaCapture)
204
KIND_TO_KIND_ID(TemplateName)
205
KIND_TO_KIND_ID(NestedNameSpecifier)
206
KIND_TO_KIND_ID(NestedNameSpecifierLoc)
207
KIND_TO_KIND_ID(QualType)
208
#define TYPELOC(CLASS, PARENT) KIND_TO_KIND_ID(CLASS##TypeLoc)
209
#include "clang/AST/TypeLocNodes.def"
210
KIND_TO_KIND_ID(TypeLoc)
211
KIND_TO_KIND_ID(Decl)
212
KIND_TO_KIND_ID(Stmt)
213
KIND_TO_KIND_ID(Type)
214
KIND_TO_KIND_ID(OMPClause)
215
KIND_TO_KIND_ID(Attr)
216
KIND_TO_KIND_ID(CXXBaseSpecifier)
217
#define DECL(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Decl)
218
#include "clang/AST/DeclNodes.inc"
219
#define STMT(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED)
220
#include "clang/AST/StmtNodes.inc"
221
#define TYPE(DERIVED, BASE) KIND_TO_KIND_ID(DERIVED##Type)
222
#include "clang/AST/TypeNodes.inc"
223
#define GEN_CLANG_CLAUSE_CLASS
224
#define CLAUSE_CLASS(Enum, Str, Class) KIND_TO_KIND_ID(Class)
225
#include "llvm/Frontend/OpenMP/OMP.inc"
226
#define ATTR(A) KIND_TO_KIND_ID(A##Attr)
227
#include "clang/Basic/AttrList.inc"
228
#undef KIND_TO_KIND_ID
229
230
2.09k
inline raw_ostream &operator<<(raw_ostream &OS, ASTNodeKind K) {
231
2.09k
  OS << K.asStringRef();
232
2.09k
  return OS;
233
2.09k
}
234
235
/// A dynamically typed AST node container.
236
///
237
/// Stores an AST node in a type safe way. This allows writing code that
238
/// works with different kinds of AST nodes, despite the fact that they don't
239
/// have a common base class.
240
///
241
/// Use \c create(Node) to create a \c DynTypedNode from an AST node,
242
/// and \c get<T>() to retrieve the node as type T if the types match.
243
///
244
/// See \c ASTNodeKind for which node base types are currently supported;
245
/// You can create DynTypedNodes for all nodes in the inheritance hierarchy of
246
/// the supported base types.
247
class DynTypedNode {
248
public:
249
  /// Creates a \c DynTypedNode from \c Node.
250
  template <typename T>
251
1.30M
  static DynTypedNode create(const T &Node) {
252
1.30M
    return BaseConverter<T>::create(Node);
253
1.30M
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Decl>(clang::Decl const&)
Line
Count
Source
251
384k
  static DynTypedNode create(const T &Node) {
252
384k
    return BaseConverter<T>::create(Node);
253
384k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Stmt>(clang::Stmt const&)
Line
Count
Source
251
256k
  static DynTypedNode create(const T &Node) {
252
256k
    return BaseConverter<T>::create(Node);
253
256k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXRewrittenBinaryOperator>(clang::CXXRewrittenBinaryOperator const&)
Line
Count
Source
251
52
  static DynTypedNode create(const T &Node) {
252
52
    return BaseConverter<T>::create(Node);
253
52
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Expr>(clang::Expr const&)
Line
Count
Source
251
434k
  static DynTypedNode create(const T &Node) {
252
434k
    return BaseConverter<T>::create(Node);
253
434k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TypeLoc>(clang::TypeLoc const&)
Line
Count
Source
251
79.9k
  static DynTypedNode create(const T &Node) {
252
79.9k
    return BaseConverter<T>::create(Node);
253
79.9k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifierLoc>(clang::NestedNameSpecifierLoc const&)
Line
Count
Source
251
25.4k
  static DynTypedNode create(const T &Node) {
252
25.4k
    return BaseConverter<T>::create(Node);
253
25.4k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Attr>(clang::Attr const&)
Line
Count
Source
251
1.03k
  static DynTypedNode create(const T &Node) {
252
1.03k
    return BaseConverter<T>::create(Node);
253
1.03k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TranslationUnitDecl>(clang::TranslationUnitDecl const&)
Line
Count
Source
251
452
  static DynTypedNode create(const T &Node) {
252
452
    return BaseConverter<T>::create(Node);
253
452
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::EnumConstantDecl>(clang::EnumConstantDecl const&)
Line
Count
Source
251
15
  static DynTypedNode create(const T &Node) {
252
15
    return BaseConverter<T>::create(Node);
253
15
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclRefExpr>(clang::DeclRefExpr const&)
Line
Count
Source
251
81
  static DynTypedNode create(const T &Node) {
252
81
    return BaseConverter<T>::create(Node);
253
81
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CompoundStmt>(clang::CompoundStmt const&)
Line
Count
Source
251
540
  static DynTypedNode create(const T &Node) {
252
540
    return BaseConverter<T>::create(Node);
253
540
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::UnaryOperator>(clang::UnaryOperator const&)
Line
Count
Source
251
34
  static DynTypedNode create(const T &Node) {
252
34
    return BaseConverter<T>::create(Node);
253
34
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ExplicitCastExpr>(clang::ExplicitCastExpr const&)
Line
Count
Source
251
110
  static DynTypedNode create(const T &Node) {
252
110
    return BaseConverter<T>::create(Node);
253
110
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCAutoreleasePoolStmt>(clang::ObjCAutoreleasePoolStmt const&)
Line
Count
Source
251
25
  static DynTypedNode create(const T &Node) {
252
25
    return BaseConverter<T>::create(Node);
253
25
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMethodDecl>(clang::ObjCMethodDecl const&)
Line
Count
Source
251
18
  static DynTypedNode create(const T &Node) {
252
18
    return BaseConverter<T>::create(Node);
253
18
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::BlockDecl>(clang::BlockDecl const&)
Line
Count
Source
251
1
  static DynTypedNode create(const T &Node) {
252
1
    return BaseConverter<T>::create(Node);
253
1
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCInterfaceDecl>(clang::ObjCInterfaceDecl const&)
Line
Count
Source
251
2.35k
  static DynTypedNode create(const T &Node) {
252
2.35k
    return BaseConverter<T>::create(Node);
253
2.35k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ObjCMessageExpr>(clang::ObjCMessageExpr const&)
Line
Count
Source
251
35
  static DynTypedNode create(const T &Node) {
252
35
    return BaseConverter<T>::create(Node);
253
35
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::InitListExpr>(clang::InitListExpr const&)
Line
Count
Source
251
156
  static DynTypedNode create(const T &Node) {
252
156
    return BaseConverter<T>::create(Node);
253
156
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgumentLoc>(clang::TemplateArgumentLoc const&)
Line
Count
Source
251
515
  static DynTypedNode create(const T &Node) {
252
515
    return BaseConverter<T>::create(Node);
253
515
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ClassTemplateDecl>(clang::ClassTemplateDecl const&)
Line
Count
Source
251
144
  static DynTypedNode create(const T &Node) {
252
144
    return BaseConverter<T>::create(Node);
253
144
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::QualType>(clang::QualType const&)
Line
Count
Source
251
52.4k
  static DynTypedNode create(const T &Node) {
252
52.4k
    return BaseConverter<T>::create(Node);
253
52.4k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateName>(clang::TemplateName const&)
Line
Count
Source
251
2
  static DynTypedNode create(const T &Node) {
252
2
    return BaseConverter<T>::create(Node);
253
2
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::VarDecl>(clang::VarDecl const&)
Line
Count
Source
251
1.17k
  static DynTypedNode create(const T &Node) {
252
1.17k
    return BaseConverter<T>::create(Node);
253
1.17k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXBaseSpecifier>(clang::CXXBaseSpecifier const&)
Line
Count
Source
251
572
  static DynTypedNode create(const T &Node) {
252
572
    return BaseConverter<T>::create(Node);
253
572
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NamedDecl>(clang::NamedDecl const&)
Line
Count
Source
251
6.36k
  static DynTypedNode create(const T &Node) {
252
6.36k
    return BaseConverter<T>::create(Node);
253
6.36k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::Type>(clang::Type const&)
Line
Count
Source
251
43.2k
  static DynTypedNode create(const T &Node) {
252
43.2k
    return BaseConverter<T>::create(Node);
253
43.2k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMemberCallExpr>(clang::CXXMemberCallExpr const&)
Line
Count
Source
251
188
  static DynTypedNode create(const T &Node) {
252
188
    return BaseConverter<T>::create(Node);
253
188
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::LambdaCapture>(clang::LambdaCapture const&)
Line
Count
Source
251
298
  static DynTypedNode create(const T &Node) {
252
298
    return BaseConverter<T>::create(Node);
253
298
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::FieldDecl>(clang::FieldDecl const&)
Line
Count
Source
251
201
  static DynTypedNode create(const T &Node) {
252
201
    return BaseConverter<T>::create(Node);
253
201
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::DeclStmt>(clang::DeclStmt const&)
Line
Count
Source
251
169
  static DynTypedNode create(const T &Node) {
252
169
    return BaseConverter<T>::create(Node);
253
169
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXRecordDecl>(clang::CXXRecordDecl const&)
Line
Count
Source
251
7.00k
  static DynTypedNode create(const T &Node) {
252
7.00k
    return BaseConverter<T>::create(Node);
253
7.00k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXMethodDecl>(clang::CXXMethodDecl const&)
Line
Count
Source
251
672
  static DynTypedNode create(const T &Node) {
252
672
    return BaseConverter<T>::create(Node);
253
672
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ValueDecl>(clang::ValueDecl const&)
Line
Count
Source
251
75
  static DynTypedNode create(const T &Node) {
252
75
    return BaseConverter<T>::create(Node);
253
75
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::UsingShadowDecl>(clang::UsingShadowDecl const&)
Line
Count
Source
251
2.10k
  static DynTypedNode create(const T &Node) {
252
2.10k
    return BaseConverter<T>::create(Node);
253
2.10k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NestedNameSpecifier>(clang::NestedNameSpecifier const&)
Line
Count
Source
251
983
  static DynTypedNode create(const T &Node) {
252
983
    return BaseConverter<T>::create(Node);
253
983
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::NamespaceDecl>(clang::NamespaceDecl const&)
Line
Count
Source
251
85
  static DynTypedNode create(const T &Node) {
252
85
    return BaseConverter<T>::create(Node);
253
85
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::SwitchCase>(clang::SwitchCase const&)
Line
Count
Source
251
23
  static DynTypedNode create(const T &Node) {
252
23
    return BaseConverter<T>::create(Node);
253
23
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CXXCtorInitializer>(clang::CXXCtorInitializer const&)
Line
Count
Source
251
349
  static DynTypedNode create(const T &Node) {
252
349
    return BaseConverter<T>::create(Node);
253
349
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::BindingDecl>(clang::BindingDecl const&)
Line
Count
Source
251
14
  static DynTypedNode create(const T &Node) {
252
14
    return BaseConverter<T>::create(Node);
253
14
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::FunctionDecl>(clang::FunctionDecl const&)
Line
Count
Source
251
2.26k
  static DynTypedNode create(const T &Node) {
252
2.26k
    return BaseConverter<T>::create(Node);
253
2.26k
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::OMPClause>(clang::OMPClause const&)
Line
Count
Source
251
352
  static DynTypedNode create(const T &Node) {
252
352
    return BaseConverter<T>::create(Node);
253
352
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ParmVarDecl>(clang::ParmVarDecl const&)
Line
Count
Source
251
696
  static DynTypedNode create(const T &Node) {
252
696
    return BaseConverter<T>::create(Node);
253
696
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::IntegerLiteral>(clang::IntegerLiteral const&)
Line
Count
Source
251
170
  static DynTypedNode create(const T &Node) {
252
170
    return BaseConverter<T>::create(Node);
253
170
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::TemplateArgument>(clang::TemplateArgument const&)
Line
Count
Source
251
265
  static DynTypedNode create(const T &Node) {
252
265
    return BaseConverter<T>::create(Node);
253
265
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::CastExpr>(clang::CastExpr const&)
Line
Count
Source
251
42
  static DynTypedNode create(const T &Node) {
252
42
    return BaseConverter<T>::create(Node);
253
42
  }
clang::DynTypedNode clang::DynTypedNode::create<clang::ParenListExpr>(clang::ParenListExpr const&)
Line
Count
Source
251
30
  static DynTypedNode create(const T &Node) {
252
30
    return BaseConverter<T>::create(Node);
253
30
  }
254
255
  /// Retrieve the stored node as type \c T.
256
  ///
257
  /// Returns NULL if the stored node does not have a type that is
258
  /// convertible to \c T.
259
  ///
260
  /// For types that have identity via their pointer in the AST
261
  /// (like \c Stmt, \c Decl, \c Type and \c NestedNameSpecifier) the returned
262
  /// pointer points to the referenced AST node.
263
  /// For other types (like \c QualType) the value is stored directly
264
  /// in the \c DynTypedNode, and the returned pointer points at
265
  /// the storage inside DynTypedNode. For those nodes, do not
266
  /// use the pointer outside the scope of the DynTypedNode.
267
1.17M
  template <typename T> const T *get() const {
268
1.17M
    return BaseConverter<T>::get(NodeKind, &Storage);
269
1.17M
  }
clang::Stmt const* clang::DynTypedNode::get<clang::Stmt>() const
Line
Count
Source
267
63.8k
  template <typename T> const T *get() const {
268
63.8k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
63.8k
  }
clang::TemplateArgument const* clang::DynTypedNode::get<clang::TemplateArgument>() const
Line
Count
Source
267
9
  template <typename T> const T *get() const {
268
9
    return BaseConverter<T>::get(NodeKind, &Storage);
269
9
  }
clang::TemplateArgumentLoc const* clang::DynTypedNode::get<clang::TemplateArgumentLoc>() const
Line
Count
Source
267
27
  template <typename T> const T *get() const {
268
27
    return BaseConverter<T>::get(NodeKind, &Storage);
269
27
  }
clang::TemplateName const* clang::DynTypedNode::get<clang::TemplateName>() const
Line
Count
Source
267
8
  template <typename T> const T *get() const {
268
8
    return BaseConverter<T>::get(NodeKind, &Storage);
269
8
  }
clang::NestedNameSpecifier const* clang::DynTypedNode::get<clang::NestedNameSpecifier>() const
Line
Count
Source
267
425
  template <typename T> const T *get() const {
268
425
    return BaseConverter<T>::get(NodeKind, &Storage);
269
425
  }
clang::NestedNameSpecifierLoc const* clang::DynTypedNode::get<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
267
5.63k
  template <typename T> const T *get() const {
268
5.63k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
5.63k
  }
clang::QualType const* clang::DynTypedNode::get<clang::QualType>() const
Line
Count
Source
267
277
  template <typename T> const T *get() const {
268
277
    return BaseConverter<T>::get(NodeKind, &Storage);
269
277
  }
clang::TypeLoc const* clang::DynTypedNode::get<clang::TypeLoc>() const
Line
Count
Source
267
5.54k
  template <typename T> const T *get() const {
268
5.54k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
5.54k
  }
clang::Type const* clang::DynTypedNode::get<clang::Type>() const
Line
Count
Source
267
67
  template <typename T> const T *get() const {
268
67
    return BaseConverter<T>::get(NodeKind, &Storage);
269
67
  }
clang::Attr const* clang::DynTypedNode::get<clang::Attr>() const
Line
Count
Source
267
13
  template <typename T> const T *get() const {
268
13
    return BaseConverter<T>::get(NodeKind, &Storage);
269
13
  }
clang::CXXCtorInitializer const* clang::DynTypedNode::get<clang::CXXCtorInitializer>() const
Line
Count
Source
267
364
  template <typename T> const T *get() const {
268
364
    return BaseConverter<T>::get(NodeKind, &Storage);
269
364
  }
clang::OMPClause const* clang::DynTypedNode::get<clang::OMPClause>() const
Line
Count
Source
267
2
  template <typename T> const T *get() const {
268
2
    return BaseConverter<T>::get(NodeKind, &Storage);
269
2
  }
clang::CXXBaseSpecifier const* clang::DynTypedNode::get<clang::CXXBaseSpecifier>() const
Line
Count
Source
267
1
  template <typename T> const T *get() const {
268
1
    return BaseConverter<T>::get(NodeKind, &Storage);
269
1
  }
clang::DeclStmt const* clang::DynTypedNode::get<clang::DeclStmt>() const
Line
Count
Source
267
4.00k
  template <typename T> const T *get() const {
268
4.00k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
4.00k
  }
clang::CXXForRangeStmt const* clang::DynTypedNode::get<clang::CXXForRangeStmt>() const
Line
Count
Source
267
84
  template <typename T> const T *get() const {
268
84
    return BaseConverter<T>::get(NodeKind, &Storage);
269
84
  }
clang::VarDecl const* clang::DynTypedNode::get<clang::VarDecl>() const
Line
Count
Source
267
5.17k
  template <typename T> const T *get() const {
268
5.17k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
5.17k
  }
clang::CXXMethodDecl const* clang::DynTypedNode::get<clang::CXXMethodDecl>() const
Line
Count
Source
267
3.92k
  template <typename T> const T *get() const {
268
3.92k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
3.92k
  }
clang::CXXRecordDecl const* clang::DynTypedNode::get<clang::CXXRecordDecl>() const
Line
Count
Source
267
930
  template <typename T> const T *get() const {
268
930
    return BaseConverter<T>::get(NodeKind, &Storage);
269
930
  }
clang::LambdaExpr const* clang::DynTypedNode::get<clang::LambdaExpr>() const
Line
Count
Source
267
2.37k
  template <typename T> const T *get() const {
268
2.37k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
2.37k
  }
clang::FunctionTemplateDecl const* clang::DynTypedNode::get<clang::FunctionTemplateDecl>() const
Line
Count
Source
267
4.28k
  template <typename T> const T *get() const {
268
4.28k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
4.28k
  }
clang::Expr const* clang::DynTypedNode::get<clang::Expr>() const
Line
Count
Source
267
946k
  template <typename T> const T *get() const {
268
946k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
946k
  }
clang::Decl const* clang::DynTypedNode::get<clang::Decl>() const
Line
Count
Source
267
118k
  template <typename T> const T *get() const {
268
118k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
118k
  }
clang::CompoundStmt const* clang::DynTypedNode::get<clang::CompoundStmt>() const
Line
Count
Source
267
104
  template <typename T> const T *get() const {
268
104
    return BaseConverter<T>::get(NodeKind, &Storage);
269
104
  }
clang::CallExpr const* clang::DynTypedNode::get<clang::CallExpr>() const
Line
Count
Source
267
144
  template <typename T> const T *get() const {
268
144
    return BaseConverter<T>::get(NodeKind, &Storage);
269
144
  }
clang::ParmVarDecl const* clang::DynTypedNode::get<clang::ParmVarDecl>() const
Line
Count
Source
267
92
  template <typename T> const T *get() const {
268
92
    return BaseConverter<T>::get(NodeKind, &Storage);
269
92
  }
clang::ObjCAutoreleasePoolStmt const* clang::DynTypedNode::get<clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
267
17
  template <typename T> const T *get() const {
268
17
    return BaseConverter<T>::get(NodeKind, &Storage);
269
17
  }
clang::CastExpr const* clang::DynTypedNode::get<clang::CastExpr>() const
Line
Count
Source
267
2
  template <typename T> const T *get() const {
268
2
    return BaseConverter<T>::get(NodeKind, &Storage);
269
2
  }
clang::ObjCMessageExpr const* clang::DynTypedNode::get<clang::ObjCMessageExpr>() const
Line
Count
Source
267
18
  template <typename T> const T *get() const {
268
18
    return BaseConverter<T>::get(NodeKind, &Storage);
269
18
  }
clang::MemberExpr const* clang::DynTypedNode::get<clang::MemberExpr>() const
Line
Count
Source
267
27
  template <typename T> const T *get() const {
268
27
    return BaseConverter<T>::get(NodeKind, &Storage);
269
27
  }
clang::ForStmt const* clang::DynTypedNode::get<clang::ForStmt>() const
Line
Count
Source
267
24
  template <typename T> const T *get() const {
268
24
    return BaseConverter<T>::get(NodeKind, &Storage);
269
24
  }
clang::IfStmt const* clang::DynTypedNode::get<clang::IfStmt>() const
Line
Count
Source
267
175
  template <typename T> const T *get() const {
268
175
    return BaseConverter<T>::get(NodeKind, &Storage);
269
175
  }
clang::ObjCIvarRefExpr const* clang::DynTypedNode::get<clang::ObjCIvarRefExpr>() const
Line
Count
Source
267
2
  template <typename T> const T *get() const {
268
2
    return BaseConverter<T>::get(NodeKind, &Storage);
269
2
  }
clang::DeclRefExpr const* clang::DynTypedNode::get<clang::DeclRefExpr>() const
Line
Count
Source
267
246
  template <typename T> const T *get() const {
268
246
    return BaseConverter<T>::get(NodeKind, &Storage);
269
246
  }
clang::IntegerLiteral const* clang::DynTypedNode::get<clang::IntegerLiteral>() const
Line
Count
Source
267
257
  template <typename T> const T *get() const {
268
257
    return BaseConverter<T>::get(NodeKind, &Storage);
269
257
  }
clang::BinaryOperator const* clang::DynTypedNode::get<clang::BinaryOperator>() const
Line
Count
Source
267
120
  template <typename T> const T *get() const {
268
120
    return BaseConverter<T>::get(NodeKind, &Storage);
269
120
  }
clang::NamedDecl const* clang::DynTypedNode::get<clang::NamedDecl>() const
Line
Count
Source
267
1.28k
  template <typename T> const T *get() const {
268
1.28k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
1.28k
  }
clang::FunctionDecl const* clang::DynTypedNode::get<clang::FunctionDecl>() const
Line
Count
Source
267
5.50k
  template <typename T> const T *get() const {
268
5.50k
    return BaseConverter<T>::get(NodeKind, &Storage);
269
5.50k
  }
clang::ObjCMethodDecl const* clang::DynTypedNode::get<clang::ObjCMethodDecl>() const
Line
Count
Source
267
45
  template <typename T> const T *get() const {
268
45
    return BaseConverter<T>::get(NodeKind, &Storage);
269
45
  }
clang::BlockDecl const* clang::DynTypedNode::get<clang::BlockDecl>() const
Line
Count
Source
267
32
  template <typename T> const T *get() const {
268
32
    return BaseConverter<T>::get(NodeKind, &Storage);
269
32
  }
clang::TranslationUnitDecl const* clang::DynTypedNode::get<clang::TranslationUnitDecl>() const
Line
Count
Source
267
894
  template <typename T> const T *get() const {
268
894
    return BaseConverter<T>::get(NodeKind, &Storage);
269
894
  }
clang::CXXThisExpr const* clang::DynTypedNode::get<clang::CXXThisExpr>() const
Line
Count
Source
267
146
  template <typename T> const T *get() const {
268
146
    return BaseConverter<T>::get(NodeKind, &Storage);
269
146
  }
clang::InitListExpr const* clang::DynTypedNode::get<clang::InitListExpr>() const
Line
Count
Source
267
5
  template <typename T> const T *get() const {
268
5
    return BaseConverter<T>::get(NodeKind, &Storage);
269
5
  }
270
271
  /// Retrieve the stored node as type \c T.
272
  ///
273
  /// Similar to \c get(), but asserts that the type is what we are expecting.
274
  template <typename T>
275
337k
  const T &getUnchecked() const {
276
337k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
337k
  }
clang::QualType const& clang::DynTypedNode::getUnchecked<clang::QualType>() const
Line
Count
Source
275
34.3k
  const T &getUnchecked() const {
276
34.3k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
34.3k
  }
clang::TypeLoc const& clang::DynTypedNode::getUnchecked<clang::TypeLoc>() const
Line
Count
Source
275
57.6k
  const T &getUnchecked() const {
276
57.6k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
57.6k
  }
clang::NestedNameSpecifierLoc const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifierLoc>() const
Line
Count
Source
275
1.52k
  const T &getUnchecked() const {
276
1.52k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
1.52k
  }
clang::IntegerLiteral const& clang::DynTypedNode::getUnchecked<clang::IntegerLiteral>() const
Line
Count
Source
275
1.27k
  const T &getUnchecked() const {
276
1.27k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
1.27k
  }
clang::TypedefType const& clang::DynTypedNode::getUnchecked<clang::TypedefType>() const
Line
Count
Source
275
305
  const T &getUnchecked() const {
276
305
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
305
  }
clang::RecordType const& clang::DynTypedNode::getUnchecked<clang::RecordType>() const
Line
Count
Source
275
260
  const T &getUnchecked() const {
276
260
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
260
  }
clang::ObjCObjectPointerType const& clang::DynTypedNode::getUnchecked<clang::ObjCObjectPointerType>() const
Line
Count
Source
275
120
  const T &getUnchecked() const {
276
120
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
120
  }
clang::ConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::ConditionalOperator>() const
Line
Count
Source
275
79
  const T &getUnchecked() const {
276
79
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
79
  }
clang::ObjCAutoreleasePoolStmt const& clang::DynTypedNode::getUnchecked<clang::ObjCAutoreleasePoolStmt>() const
Line
Count
Source
275
25
  const T &getUnchecked() const {
276
25
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
25
  }
clang::BlockDecl const& clang::DynTypedNode::getUnchecked<clang::BlockDecl>() const
Line
Count
Source
275
31
  const T &getUnchecked() const {
276
31
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
31
  }
clang::PointerType const& clang::DynTypedNode::getUnchecked<clang::PointerType>() const
Line
Count
Source
275
718
  const T &getUnchecked() const {
276
718
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
718
  }
clang::ObjCInterfaceDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCInterfaceDecl>() const
Line
Count
Source
275
4.31k
  const T &getUnchecked() const {
276
4.31k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
4.31k
  }
clang::CStyleCastExpr const& clang::DynTypedNode::getUnchecked<clang::CStyleCastExpr>() const
Line
Count
Source
275
43
  const T &getUnchecked() const {
276
43
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
43
  }
clang::StringLiteral const& clang::DynTypedNode::getUnchecked<clang::StringLiteral>() const
Line
Count
Source
275
146
  const T &getUnchecked() const {
276
146
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
146
  }
clang::ObjCIvarRefExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCIvarRefExpr>() const
Line
Count
Source
275
58
  const T &getUnchecked() const {
276
58
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
58
  }
clang::BinaryOperator const& clang::DynTypedNode::getUnchecked<clang::BinaryOperator>() const
Line
Count
Source
275
5.62k
  const T &getUnchecked() const {
276
5.62k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
5.62k
  }
clang::UnaryOperator const& clang::DynTypedNode::getUnchecked<clang::UnaryOperator>() const
Line
Count
Source
275
2.99k
  const T &getUnchecked() const {
276
2.99k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
2.99k
  }
clang::FieldDecl const& clang::DynTypedNode::getUnchecked<clang::FieldDecl>() const
Line
Count
Source
275
839
  const T &getUnchecked() const {
276
839
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
839
  }
clang::FunctionDecl const& clang::DynTypedNode::getUnchecked<clang::FunctionDecl>() const
Line
Count
Source
275
5.78k
  const T &getUnchecked() const {
276
5.78k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
5.78k
  }
clang::ClassTemplateSpecializationDecl const& clang::DynTypedNode::getUnchecked<clang::ClassTemplateSpecializationDecl>() const
Line
Count
Source
275
687
  const T &getUnchecked() const {
276
687
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
687
  }
clang::Expr const& clang::DynTypedNode::getUnchecked<clang::Expr>() const
Line
Count
Source
275
33.7k
  const T &getUnchecked() const {
276
33.7k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
33.7k
  }
clang::TemplateArgument const& clang::DynTypedNode::getUnchecked<clang::TemplateArgument>() const
Line
Count
Source
275
238
  const T &getUnchecked() const {
276
238
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
238
  }
clang::CallExpr const& clang::DynTypedNode::getUnchecked<clang::CallExpr>() const
Line
Count
Source
275
6.25k
  const T &getUnchecked() const {
276
6.25k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
6.25k
  }
clang::InitListExpr const& clang::DynTypedNode::getUnchecked<clang::InitListExpr>() const
Line
Count
Source
275
294
  const T &getUnchecked() const {
276
294
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
294
  }
clang::ForStmt const& clang::DynTypedNode::getUnchecked<clang::ForStmt>() const
Line
Count
Source
275
719
  const T &getUnchecked() const {
276
719
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
719
  }
clang::CXXForRangeStmt const& clang::DynTypedNode::getUnchecked<clang::CXXForRangeStmt>() const
Line
Count
Source
275
185
  const T &getUnchecked() const {
276
185
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
185
  }
clang::DesignatedInitExpr const& clang::DynTypedNode::getUnchecked<clang::DesignatedInitExpr>() const
Line
Count
Source
275
160
  const T &getUnchecked() const {
276
160
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
160
  }
clang::UnaryExprOrTypeTraitExpr const& clang::DynTypedNode::getUnchecked<clang::UnaryExprOrTypeTraitExpr>() const
Line
Count
Source
275
291
  const T &getUnchecked() const {
276
291
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
291
  }
clang::NamedDecl const& clang::DynTypedNode::getUnchecked<clang::NamedDecl>() const
Line
Count
Source
275
82.2k
  const T &getUnchecked() const {
276
82.2k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
82.2k
  }
clang::CXXDependentScopeMemberExpr const& clang::DynTypedNode::getUnchecked<clang::CXXDependentScopeMemberExpr>() const
Line
Count
Source
275
99
  const T &getUnchecked() const {
276
99
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
99
  }
clang::CXXRecordDecl const& clang::DynTypedNode::getUnchecked<clang::CXXRecordDecl>() const
Line
Count
Source
275
16.6k
  const T &getUnchecked() const {
276
16.6k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
16.6k
  }
clang::CXXMemberCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXMemberCallExpr>() const
Line
Count
Source
275
810
  const T &getUnchecked() const {
276
810
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
810
  }
clang::ObjCMessageExpr const& clang::DynTypedNode::getUnchecked<clang::ObjCMessageExpr>() const
Line
Count
Source
275
262
  const T &getUnchecked() const {
276
262
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
262
  }
clang::ObjCMethodDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCMethodDecl>() const
Line
Count
Source
275
111
  const T &getUnchecked() const {
276
111
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
111
  }
clang::Type const& clang::DynTypedNode::getUnchecked<clang::Type>() const
Line
Count
Source
275
1.56k
  const T &getUnchecked() const {
276
1.56k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
1.56k
  }
clang::DeclRefExpr const& clang::DynTypedNode::getUnchecked<clang::DeclRefExpr>() const
Line
Count
Source
275
3.52k
  const T &getUnchecked() const {
276
3.52k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
3.52k
  }
clang::OverloadExpr const& clang::DynTypedNode::getUnchecked<clang::OverloadExpr>() const
Line
Count
Source
275
14
  const T &getUnchecked() const {
276
14
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
14
  }
clang::DeclStmt const& clang::DynTypedNode::getUnchecked<clang::DeclStmt>() const
Line
Count
Source
275
722
  const T &getUnchecked() const {
276
722
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
722
  }
clang::VarDecl const& clang::DynTypedNode::getUnchecked<clang::VarDecl>() const
Line
Count
Source
275
7.39k
  const T &getUnchecked() const {
276
7.39k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
7.39k
  }
clang::LambdaExpr const& clang::DynTypedNode::getUnchecked<clang::LambdaExpr>() const
Line
Count
Source
275
350
  const T &getUnchecked() const {
276
350
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
350
  }
clang::CXXCatchStmt const& clang::DynTypedNode::getUnchecked<clang::CXXCatchStmt>() const
Line
Count
Source
275
100
  const T &getUnchecked() const {
276
100
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
100
  }
clang::CXXConstructorDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConstructorDecl>() const
Line
Count
Source
275
1.69k
  const T &getUnchecked() const {
276
1.69k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
1.69k
  }
clang::CXXCtorInitializer const& clang::DynTypedNode::getUnchecked<clang::CXXCtorInitializer>() const
Line
Count
Source
275
208
  const T &getUnchecked() const {
276
208
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
208
  }
clang::LambdaCapture const& clang::DynTypedNode::getUnchecked<clang::LambdaCapture>() const
Line
Count
Source
275
298
  const T &getUnchecked() const {
276
298
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
298
  }
clang::CXXConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXConstructExpr>() const
Line
Count
Source
275
731
  const T &getUnchecked() const {
276
731
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
731
  }
clang::ParmVarDecl const& clang::DynTypedNode::getUnchecked<clang::ParmVarDecl>() const
Line
Count
Source
275
1.75k
  const T &getUnchecked() const {
276
1.75k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
1.75k
  }
clang::IfStmt const& clang::DynTypedNode::getUnchecked<clang::IfStmt>() const
Line
Count
Source
275
428
  const T &getUnchecked() const {
276
428
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
428
  }
clang::ArraySubscriptExpr const& clang::DynTypedNode::getUnchecked<clang::ArraySubscriptExpr>() const
Line
Count
Source
275
22
  const T &getUnchecked() const {
276
22
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
22
  }
clang::CompoundStmt const& clang::DynTypedNode::getUnchecked<clang::CompoundStmt>() const
Line
Count
Source
275
1.15k
  const T &getUnchecked() const {
276
1.15k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
1.15k
  }
clang::CastExpr const& clang::DynTypedNode::getUnchecked<clang::CastExpr>() const
Line
Count
Source
275
3.62k
  const T &getUnchecked() const {
276
3.62k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
3.62k
  }
clang::ExplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ExplicitCastExpr>() const
Line
Count
Source
275
373
  const T &getUnchecked() const {
276
373
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
373
  }
clang::ImplicitCastExpr const& clang::DynTypedNode::getUnchecked<clang::ImplicitCastExpr>() const
Line
Count
Source
275
239
  const T &getUnchecked() const {
276
239
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
239
  }
clang::TagDecl const& clang::DynTypedNode::getUnchecked<clang::TagDecl>() const
Line
Count
Source
275
270
  const T &getUnchecked() const {
276
270
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
270
  }
clang::AbstractConditionalOperator const& clang::DynTypedNode::getUnchecked<clang::AbstractConditionalOperator>() const
Line
Count
Source
275
583
  const T &getUnchecked() const {
276
583
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
583
  }
clang::CXXMethodDecl const& clang::DynTypedNode::getUnchecked<clang::CXXMethodDecl>() const
Line
Count
Source
275
3.82k
  const T &getUnchecked() const {
276
3.82k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
3.82k
  }
clang::MemberExpr const& clang::DynTypedNode::getUnchecked<clang::MemberExpr>() const
Line
Count
Source
275
465
  const T &getUnchecked() const {
276
465
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
465
  }
clang::BaseUsingDecl const& clang::DynTypedNode::getUnchecked<clang::BaseUsingDecl>() const
Line
Count
Source
275
30
  const T &getUnchecked() const {
276
30
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
30
  }
clang::UsingShadowDecl const& clang::DynTypedNode::getUnchecked<clang::UsingShadowDecl>() const
Line
Count
Source
275
3.01k
  const T &getUnchecked() const {
276
3.01k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
3.01k
  }
clang::QualifiedTypeLoc const& clang::DynTypedNode::getUnchecked<clang::QualifiedTypeLoc>() const
Line
Count
Source
275
18
  const T &getUnchecked() const {
276
18
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
18
  }
clang::PointerTypeLoc const& clang::DynTypedNode::getUnchecked<clang::PointerTypeLoc>() const
Line
Count
Source
275
40
  const T &getUnchecked() const {
276
40
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
40
  }
clang::ReferenceTypeLoc const& clang::DynTypedNode::getUnchecked<clang::ReferenceTypeLoc>() const
Line
Count
Source
275
28
  const T &getUnchecked() const {
276
28
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
28
  }
clang::TemplateSpecializationTypeLoc const& clang::DynTypedNode::getUnchecked<clang::TemplateSpecializationTypeLoc>() const
Line
Count
Source
275
38
  const T &getUnchecked() const {
276
38
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
38
  }
clang::ElaboratedTypeLoc const& clang::DynTypedNode::getUnchecked<clang::ElaboratedTypeLoc>() const
Line
Count
Source
275
2
  const T &getUnchecked() const {
276
2
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
2
  }
clang::VariableArrayType const& clang::DynTypedNode::getUnchecked<clang::VariableArrayType>() const
Line
Count
Source
275
28
  const T &getUnchecked() const {
276
28
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
28
  }
clang::ElaboratedType const& clang::DynTypedNode::getUnchecked<clang::ElaboratedType>() const
Line
Count
Source
275
12
  const T &getUnchecked() const {
276
12
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
12
  }
clang::DecayedType const& clang::DynTypedNode::getUnchecked<clang::DecayedType>() const
Line
Count
Source
275
28
  const T &getUnchecked() const {
276
28
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
28
  }
clang::Decl const& clang::DynTypedNode::getUnchecked<clang::Decl>() const
Line
Count
Source
275
10.0k
  const T &getUnchecked() const {
276
10.0k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
10.0k
  }
clang::NestedNameSpecifier const& clang::DynTypedNode::getUnchecked<clang::NestedNameSpecifier>() const
Line
Count
Source
275
292
  const T &getUnchecked() const {
276
292
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
292
  }
clang::Stmt const& clang::DynTypedNode::getUnchecked<clang::Stmt>() const
Line
Count
Source
275
28.7k
  const T &getUnchecked() const {
276
28.7k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
28.7k
  }
clang::SwitchStmt const& clang::DynTypedNode::getUnchecked<clang::SwitchStmt>() const
Line
Count
Source
275
63
  const T &getUnchecked() const {
276
63
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
63
  }
clang::NamespaceDecl const& clang::DynTypedNode::getUnchecked<clang::NamespaceDecl>() const
Line
Count
Source
275
81
  const T &getUnchecked() const {
276
81
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
81
  }
clang::CaseStmt const& clang::DynTypedNode::getUnchecked<clang::CaseStmt>() const
Line
Count
Source
275
10
  const T &getUnchecked() const {
276
10
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
10
  }
clang::ReturnStmt const& clang::DynTypedNode::getUnchecked<clang::ReturnStmt>() const
Line
Count
Source
275
68
  const T &getUnchecked() const {
276
68
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
68
  }
clang::BindingDecl const& clang::DynTypedNode::getUnchecked<clang::BindingDecl>() const
Line
Count
Source
275
8
  const T &getUnchecked() const {
276
8
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
8
  }
clang::DecompositionDecl const& clang::DynTypedNode::getUnchecked<clang::DecompositionDecl>() const
Line
Count
Source
275
10
  const T &getUnchecked() const {
276
10
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
10
  }
clang::CXXNewExpr const& clang::DynTypedNode::getUnchecked<clang::CXXNewExpr>() const
Line
Count
Source
275
68
  const T &getUnchecked() const {
276
68
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
68
  }
clang::EnumDecl const& clang::DynTypedNode::getUnchecked<clang::EnumDecl>() const
Line
Count
Source
275
345
  const T &getUnchecked() const {
276
345
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
345
  }
clang::OMPExecutableDirective const& clang::DynTypedNode::getUnchecked<clang::OMPExecutableDirective>() const
Line
Count
Source
275
804
  const T &getUnchecked() const {
276
804
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
804
  }
clang::OMPDefaultClause const& clang::DynTypedNode::getUnchecked<clang::OMPDefaultClause>() const
Line
Count
Source
275
174
  const T &getUnchecked() const {
276
174
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
174
  }
clang::FriendDecl const& clang::DynTypedNode::getUnchecked<clang::FriendDecl>() const
Line
Count
Source
275
58
  const T &getUnchecked() const {
276
58
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
58
  }
clang::TypedefNameDecl const& clang::DynTypedNode::getUnchecked<clang::TypedefNameDecl>() const
Line
Count
Source
275
38
  const T &getUnchecked() const {
276
38
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
38
  }
clang::ValueDecl const& clang::DynTypedNode::getUnchecked<clang::ValueDecl>() const
Line
Count
Source
275
102
  const T &getUnchecked() const {
276
102
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
102
  }
clang::CXXBaseSpecifier const& clang::DynTypedNode::getUnchecked<clang::CXXBaseSpecifier>() const
Line
Count
Source
275
530
  const T &getUnchecked() const {
276
530
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
530
  }
clang::CharacterLiteral const& clang::DynTypedNode::getUnchecked<clang::CharacterLiteral>() const
Line
Count
Source
275
8
  const T &getUnchecked() const {
276
8
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
8
  }
clang::CXXBoolLiteralExpr const& clang::DynTypedNode::getUnchecked<clang::CXXBoolLiteralExpr>() const
Line
Count
Source
275
422
  const T &getUnchecked() const {
276
422
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
422
  }
clang::FloatingLiteral const& clang::DynTypedNode::getUnchecked<clang::FloatingLiteral>() const
Line
Count
Source
275
336
  const T &getUnchecked() const {
276
336
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
336
  }
clang::CXXUnresolvedConstructExpr const& clang::DynTypedNode::getUnchecked<clang::CXXUnresolvedConstructExpr>() const
Line
Count
Source
275
18
  const T &getUnchecked() const {
276
18
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
18
  }
clang::Attr const& clang::DynTypedNode::getUnchecked<clang::Attr>() const
Line
Count
Source
275
6
  const T &getUnchecked() const {
276
6
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
6
  }
clang::CXXOperatorCallExpr const& clang::DynTypedNode::getUnchecked<clang::CXXOperatorCallExpr>() const
Line
Count
Source
275
1.51k
  const T &getUnchecked() const {
276
1.51k
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
1.51k
  }
clang::CXXRewrittenBinaryOperator const& clang::DynTypedNode::getUnchecked<clang::CXXRewrittenBinaryOperator>() const
Line
Count
Source
275
518
  const T &getUnchecked() const {
276
518
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
518
  }
clang::StmtExpr const& clang::DynTypedNode::getUnchecked<clang::StmtExpr>() const
Line
Count
Source
275
16
  const T &getUnchecked() const {
276
16
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
16
  }
clang::TemplateSpecializationType const& clang::DynTypedNode::getUnchecked<clang::TemplateSpecializationType>() const
Line
Count
Source
275
72
  const T &getUnchecked() const {
276
72
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
72
  }
clang::DoStmt const& clang::DynTypedNode::getUnchecked<clang::DoStmt>() const
Line
Count
Source
275
2
  const T &getUnchecked() const {
276
2
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
2
  }
clang::WhileStmt const& clang::DynTypedNode::getUnchecked<clang::WhileStmt>() const
Line
Count
Source
275
6
  const T &getUnchecked() const {
276
6
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
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
275
36
  const T &getUnchecked() const {
276
36
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
36
  }
clang::AddrLabelExpr const& clang::DynTypedNode::getUnchecked<clang::AddrLabelExpr>() const
Line
Count
Source
275
8
  const T &getUnchecked() const {
276
8
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
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
275
212
  const T &getUnchecked() const {
276
212
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
212
  }
clang::ArrayType const& clang::DynTypedNode::getUnchecked<clang::ArrayType>() const
Line
Count
Source
275
144
  const T &getUnchecked() const {
276
144
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
144
  }
clang::ComplexType const& clang::DynTypedNode::getUnchecked<clang::ComplexType>() const
Line
Count
Source
275
56
  const T &getUnchecked() const {
276
56
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
56
  }
clang::UnresolvedMemberExpr const& clang::DynTypedNode::getUnchecked<clang::UnresolvedMemberExpr>() const
Line
Count
Source
275
42
  const T &getUnchecked() const {
276
42
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
42
  }
clang::SubstTemplateTypeParmType const& clang::DynTypedNode::getUnchecked<clang::SubstTemplateTypeParmType>() const
Line
Count
Source
275
4
  const T &getUnchecked() const {
276
4
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
4
  }
clang::ConstantArrayType const& clang::DynTypedNode::getUnchecked<clang::ConstantArrayType>() const
Line
Count
Source
275
148
  const T &getUnchecked() const {
276
148
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
148
  }
clang::OpaqueValueExpr const& clang::DynTypedNode::getUnchecked<clang::OpaqueValueExpr>() const
Line
Count
Source
275
46
  const T &getUnchecked() const {
276
46
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
46
  }
clang::CXXFunctionalCastExpr const& clang::DynTypedNode::getUnchecked<clang::CXXFunctionalCastExpr>() const
Line
Count
Source
275
7
  const T &getUnchecked() const {
276
7
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
7
  }
clang::CXXTemporaryObjectExpr const& clang::DynTypedNode::getUnchecked<clang::CXXTemporaryObjectExpr>() const
Line
Count
Source
275
7
  const T &getUnchecked() const {
276
7
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
7
  }
clang::CompoundLiteralExpr const& clang::DynTypedNode::getUnchecked<clang::CompoundLiteralExpr>() const
Line
Count
Source
275
18
  const T &getUnchecked() const {
276
18
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
18
  }
clang::DeclaratorDecl const& clang::DynTypedNode::getUnchecked<clang::DeclaratorDecl>() const
Line
Count
Source
275
26
  const T &getUnchecked() const {
276
26
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
26
  }
clang::ObjCPropertyDecl const& clang::DynTypedNode::getUnchecked<clang::ObjCPropertyDecl>() const
Line
Count
Source
275
2
  const T &getUnchecked() const {
276
2
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
2
  }
clang::TemplateArgumentLoc const& clang::DynTypedNode::getUnchecked<clang::TemplateArgumentLoc>() const
Line
Count
Source
275
42
  const T &getUnchecked() const {
276
42
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
42
  }
clang::DecltypeType const& clang::DynTypedNode::getUnchecked<clang::DecltypeType>() const
Line
Count
Source
275
16
  const T &getUnchecked() const {
276
16
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
16
  }
Unexecuted instantiation: clang::UsingType const& clang::DynTypedNode::getUnchecked<clang::UsingType>() const
clang::AtomicType const& clang::DynTypedNode::getUnchecked<clang::AtomicType>() const
Line
Count
Source
275
56
  const T &getUnchecked() const {
276
56
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
56
  }
clang::ParenType const& clang::DynTypedNode::getUnchecked<clang::ParenType>() const
Line
Count
Source
275
58
  const T &getUnchecked() const {
276
58
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
58
  }
clang::CXXConversionDecl const& clang::DynTypedNode::getUnchecked<clang::CXXConversionDecl>() const
Line
Count
Source
275
48
  const T &getUnchecked() const {
276
48
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
48
  }
clang::CXXDeductionGuideDecl const& clang::DynTypedNode::getUnchecked<clang::CXXDeductionGuideDecl>() const
Line
Count
Source
275
140
  const T &getUnchecked() const {
276
140
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
140
  }
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
275
305
  const T &getUnchecked() const {
276
305
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
305
  }
clang::CXXTypeidExpr const& clang::DynTypedNode::getUnchecked<clang::CXXTypeidExpr>() const
Line
Count
Source
275
2
  const T &getUnchecked() const {
276
2
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
2
  }
clang::GenericSelectionExpr const& clang::DynTypedNode::getUnchecked<clang::GenericSelectionExpr>() const
Line
Count
Source
275
1
  const T &getUnchecked() const {
276
1
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
1
  }
clang::ParenListExpr const& clang::DynTypedNode::getUnchecked<clang::ParenListExpr>() const
Line
Count
Source
275
30
  const T &getUnchecked() const {
276
30
    return BaseConverter<T>::getUnchecked(NodeKind, &Storage);
277
30
  }
278
279
1.27M
  ASTNodeKind getNodeKind() const { return NodeKind; }
280
281
  /// Returns a pointer that identifies the stored AST node.
282
  ///
283
  /// Note that this is not supported by all AST nodes. For AST nodes
284
  /// that don't have a pointer-defined identity inside the AST, this
285
  /// method returns NULL.
286
968k
  const void *getMemoizationData() const {
287
968k
    return NodeKind.hasPointerIdentity()
288
968k
               ? 
*reinterpret_cast<void *const *>(&Storage)968k
289
968k
               : 
nullptr815
;
290
968k
  }
291
292
  /// Prints the node to the given output stream.
293
  void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const;
294
295
  /// Dumps the node to the given output stream.
296
  void dump(llvm::raw_ostream &OS, const ASTContext &Context) const;
297
298
  /// For nodes which represent textual entities in the source code,
299
  /// return their SourceRange.  For all other nodes, return SourceRange().
300
  SourceRange getSourceRange() const;
301
302
  /// @{
303
  /// Imposes an order on \c DynTypedNode.
304
  ///
305
  /// Supports comparison of nodes that support memoization.
306
  /// FIXME: Implement comparison for other node types (currently
307
  /// only Stmt, Decl, Type and NestedNameSpecifier return memoization data).
308
138k
  bool operator<(const DynTypedNode &Other) const {
309
138k
    if (!NodeKind.isSame(Other.NodeKind))
310
44.2k
      return NodeKind < Other.NodeKind;
311
312
94.4k
    if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind))
313
1
      return getUnchecked<QualType>().getAsOpaquePtr() <
314
1
             Other.getUnchecked<QualType>().getAsOpaquePtr();
315
316
94.4k
    if (ASTNodeKind::getFromNodeKind<TypeLoc>().isBaseOf(NodeKind)) {
317
7
      auto TLA = getUnchecked<TypeLoc>();
318
7
      auto TLB = Other.getUnchecked<TypeLoc>();
319
7
      return std::make_pair(TLA.getType().getAsOpaquePtr(),
320
7
                            TLA.getOpaqueData()) <
321
7
             std::make_pair(TLB.getType().getAsOpaquePtr(),
322
7
                            TLB.getOpaqueData());
323
7
    }
324
325
94.4k
    if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(
326
94.4k
            NodeKind)) {
327
0
      auto NNSLA = getUnchecked<NestedNameSpecifierLoc>();
328
0
      auto NNSLB = Other.getUnchecked<NestedNameSpecifierLoc>();
329
0
      return std::make_pair(NNSLA.getNestedNameSpecifier(),
330
0
                            NNSLA.getOpaqueData()) <
331
0
             std::make_pair(NNSLB.getNestedNameSpecifier(),
332
0
                            NNSLB.getOpaqueData());
333
0
    }
334
335
94.4k
    assert(getMemoizationData() && Other.getMemoizationData());
336
0
    return getMemoizationData() < Other.getMemoizationData();
337
94.4k
  }
338
419k
  bool operator==(const DynTypedNode &Other) const {
339
    // DynTypedNode::create() stores the exact kind of the node in NodeKind.
340
    // If they contain the same node, their NodeKind must be the same.
341
419k
    if (!NodeKind.isSame(Other.NodeKind))
342
272k
      return false;
343
344
    // FIXME: Implement for other types.
345
147k
    if (ASTNodeKind::getFromNodeKind<QualType>().isSame(NodeKind))
346
141
      return getUnchecked<QualType>() == Other.getUnchecked<QualType>();
347
348
147k
    if (ASTNodeKind::getFromNodeKind<TypeLoc>().isBaseOf(NodeKind))
349
9.23k
      return getUnchecked<TypeLoc>() == Other.getUnchecked<TypeLoc>();
350
351
138k
    if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(NodeKind))
352
146
      return getUnchecked<NestedNameSpecifierLoc>() ==
353
146
             Other.getUnchecked<NestedNameSpecifierLoc>();
354
355
137k
    assert(getMemoizationData() && Other.getMemoizationData());
356
0
    return getMemoizationData() == Other.getMemoizationData();
357
138k
  }
358
139k
  bool operator!=(const DynTypedNode &Other) const {
359
139k
    return !operator==(Other);
360
139k
  }
361
  /// @}
362
363
  /// Hooks for using DynTypedNode as a key in a DenseMap.
364
  struct DenseMapInfo {
365
95.4k
    static inline DynTypedNode getEmptyKey() {
366
95.4k
      DynTypedNode Node;
367
95.4k
      Node.NodeKind = ASTNodeKind::DenseMapInfo::getEmptyKey();
368
95.4k
      return Node;
369
95.4k
    }
370
67.2k
    static inline DynTypedNode getTombstoneKey() {
371
67.2k
      DynTypedNode Node;
372
67.2k
      Node.NodeKind = ASTNodeKind::DenseMapInfo::getTombstoneKey();
373
67.2k
      return Node;
374
67.2k
    }
375
37.7k
    static unsigned getHashValue(const DynTypedNode &Val) {
376
      // FIXME: Add hashing support for the remaining types.
377
37.7k
      if (ASTNodeKind::getFromNodeKind<TypeLoc>().isBaseOf(Val.NodeKind)) {
378
36.6k
        auto TL = Val.getUnchecked<TypeLoc>();
379
36.6k
        return llvm::hash_combine(TL.getType().getAsOpaquePtr(),
380
36.6k
                                  TL.getOpaqueData());
381
36.6k
      }
382
383
1.02k
      if (ASTNodeKind::getFromNodeKind<NestedNameSpecifierLoc>().isSame(
384
1.02k
              Val.NodeKind)) {
385
1.02k
        auto NNSL = Val.getUnchecked<NestedNameSpecifierLoc>();
386
1.02k
        return llvm::hash_combine(NNSL.getNestedNameSpecifier(),
387
1.02k
                                  NNSL.getOpaqueData());
388
1.02k
      }
389
390
0
      assert(Val.getMemoizationData());
391
0
      return llvm::hash_value(Val.getMemoizationData());
392
1.02k
    }
393
472k
    static bool isEqual(const DynTypedNode &LHS, const DynTypedNode &RHS) {
394
472k
      auto Empty = ASTNodeKind::DenseMapInfo::getEmptyKey();
395
472k
      auto TombStone = ASTNodeKind::DenseMapInfo::getTombstoneKey();
396
472k
      return (ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, Empty) &&
397
472k
              
ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, Empty)192k
) ||
398
472k
             
(279k
ASTNodeKind::DenseMapInfo::isEqual(LHS.NodeKind, TombStone)279k
&&
399
279k
              
ASTNodeKind::DenseMapInfo::isEqual(RHS.NodeKind, TombStone)0
) ||
400
472k
             
LHS == RHS279k
;
401
472k
    }
402
  };
403
404
private:
405
  /// Takes care of converting from and to \c T.
406
  template <typename T, typename EnablerT = void> struct BaseConverter;
407
408
  /// Converter that uses dyn_cast<T> from a stored BaseT*.
409
  template <typename T, typename BaseT> struct DynCastPtrConverter {
410
1.15M
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
1.15M
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
520k
        return &getUnchecked(NodeKind, Storage);
413
637k
      return nullptr;
414
1.15M
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
63.8k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
63.8k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
50.1k
        return &getUnchecked(NodeKind, Storage);
413
13.7k
      return nullptr;
414
63.8k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
67
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
67
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
52
        return &getUnchecked(NodeKind, Storage);
413
15
      return nullptr;
414
67
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Attr, clang::Attr>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
13
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
13
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
13
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
13
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
2
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
2
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
0
        return &getUnchecked(NodeKind, Storage);
413
2
      return nullptr;
414
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
4.00k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
4.00k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
98
        return &getUnchecked(NodeKind, Storage);
413
3.91k
      return nullptr;
414
4.00k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXForRangeStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
84
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
84
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
7
        return &getUnchecked(NodeKind, Storage);
413
77
      return nullptr;
414
84
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
5.17k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
5.17k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
1.52k
        return &getUnchecked(NodeKind, Storage);
413
3.64k
      return nullptr;
414
5.17k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
3.92k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
3.92k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
260
        return &getUnchecked(NodeKind, Storage);
413
3.66k
      return nullptr;
414
3.92k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
930
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
930
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
928
        return &getUnchecked(NodeKind, Storage);
413
2
      return nullptr;
414
930
    }
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
2.37k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
2.37k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
46
        return &getUnchecked(NodeKind, Storage);
413
2.33k
      return nullptr;
414
2.37k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionTemplateDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
4.28k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
4.28k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
616
        return &getUnchecked(NodeKind, Storage);
413
3.66k
      return nullptr;
414
4.28k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
946k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
946k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
398k
        return &getUnchecked(NodeKind, Storage);
413
548k
      return nullptr;
414
946k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
118k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
118k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
62.9k
        return &getUnchecked(NodeKind, Storage);
413
55.3k
      return nullptr;
414
118k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
104
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
104
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
56
        return &getUnchecked(NodeKind, Storage);
413
48
      return nullptr;
414
104
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
144
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
144
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
143
        return &getUnchecked(NodeKind, Storage);
413
1
      return nullptr;
414
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
92
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
92
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
92
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
92
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
17
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
17
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
17
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
17
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
2
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
2
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
2
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
18
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
18
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
18
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
18
    }
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
27
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
27
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
27
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
27
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ForStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
24
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
24
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
1
        return &getUnchecked(NodeKind, Storage);
413
23
      return nullptr;
414
24
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
175
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
175
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
125
        return &getUnchecked(NodeKind, Storage);
413
50
      return nullptr;
414
175
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
2
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
2
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
2
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
246
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
246
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
241
        return &getUnchecked(NodeKind, Storage);
413
5
      return nullptr;
414
246
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
257
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
257
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
257
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
257
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
120
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
120
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
120
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
120
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
1.28k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
1.28k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
955
        return &getUnchecked(NodeKind, Storage);
413
328
      return nullptr;
414
1.28k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
5.50k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
5.50k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
3.16k
        return &getUnchecked(NodeKind, Storage);
413
2.33k
      return nullptr;
414
5.50k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
45
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
45
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
17
        return &getUnchecked(NodeKind, Storage);
413
28
      return nullptr;
414
45
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
32
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
32
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
8
        return &getUnchecked(NodeKind, Storage);
413
24
      return nullptr;
414
32
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
894
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
894
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
894
        return &getUnchecked(NodeKind, Storage);
413
0
      return nullptr;
414
894
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
146
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
146
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
0
        return &getUnchecked(NodeKind, Storage);
413
146
      return nullptr;
414
146
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
410
5
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
411
5
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
412
4
        return &getUnchecked(NodeKind, Storage);
413
1
      return nullptr;
414
5
    }
415
766k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
766k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
766k
          *reinterpret_cast<const void *const *>(Storage)));
419
766k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
78.9k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
78.9k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
78.9k
          *reinterpret_cast<const void *const *>(Storage)));
419
78.9k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.61k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.61k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.61k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.61k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Attr, clang::Attr>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
19
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
19
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
19
          *reinterpret_cast<const void *const *>(Storage)));
419
19
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
820
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
820
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
820
          *reinterpret_cast<const void *const *>(Storage)));
419
820
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXForRangeStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
192
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
192
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
192
          *reinterpret_cast<const void *const *>(Storage)));
419
192
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
8.91k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
8.91k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
8.91k
          *reinterpret_cast<const void *const *>(Storage)));
419
8.91k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
4.08k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
4.08k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
4.08k
          *reinterpret_cast<const void *const *>(Storage)));
419
4.08k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
17.6k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
17.6k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
17.6k
          *reinterpret_cast<const void *const *>(Storage)));
419
17.6k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::LambdaExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
396
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
396
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
396
          *reinterpret_cast<const void *const *>(Storage)));
419
396
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionTemplateDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.20k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.20k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.20k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.20k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
431k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
431k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
431k
          *reinterpret_cast<const void *const *>(Storage)));
419
431k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
72.9k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
72.9k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
72.9k
          *reinterpret_cast<const void *const *>(Storage)));
419
72.9k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.21k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.21k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.21k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.21k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
305
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
305
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
305
          *reinterpret_cast<const void *const *>(Storage)));
419
305
    }
clang::DynTypedNode::DynCastPtrConverter<clang::RecordType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
260
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
260
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
260
          *reinterpret_cast<const void *const *>(Storage)));
419
260
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCObjectPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
120
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
120
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
120
          *reinterpret_cast<const void *const *>(Storage)));
419
120
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
79
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
79
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
79
          *reinterpret_cast<const void *const *>(Storage)));
419
79
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
42
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
42
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
42
          *reinterpret_cast<const void *const *>(Storage)));
419
42
    }
clang::DynTypedNode::DynCastPtrConverter<clang::PointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
719
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
719
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
719
          *reinterpret_cast<const void *const *>(Storage)));
419
719
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
4.31k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
4.31k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
4.31k
          *reinterpret_cast<const void *const *>(Storage)));
419
4.31k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CStyleCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
43
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
43
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
43
          *reinterpret_cast<const void *const *>(Storage)));
419
43
    }
clang::DynTypedNode::DynCastPtrConverter<clang::StringLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
146
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
146
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
146
          *reinterpret_cast<const void *const *>(Storage)));
419
146
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCIvarRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
60
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
60
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
60
          *reinterpret_cast<const void *const *>(Storage)));
419
60
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BinaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
5.74k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
5.74k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
5.74k
          *reinterpret_cast<const void *const *>(Storage)));
419
5.74k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
2.99k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
2.99k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
2.99k
          *reinterpret_cast<const void *const *>(Storage)));
419
2.99k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.53k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.53k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.53k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.53k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
83.1k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
83.1k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
83.1k
          *reinterpret_cast<const void *const *>(Storage)));
419
83.1k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
8.95k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
8.95k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
8.95k
          *reinterpret_cast<const void *const *>(Storage)));
419
8.95k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
128
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
128
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
128
          *reinterpret_cast<const void *const *>(Storage)));
419
128
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
39
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
39
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
39
          *reinterpret_cast<const void *const *>(Storage)));
419
39
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.47k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.47k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.47k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.47k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateSpecializationDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.07k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.07k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.07k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.07k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
6.39k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
6.39k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
6.39k
          *reinterpret_cast<const void *const *>(Storage)));
419
6.39k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
298
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
298
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
298
          *reinterpret_cast<const void *const *>(Storage)));
419
298
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ForStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
720
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
720
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
720
          *reinterpret_cast<const void *const *>(Storage)));
419
720
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DesignatedInitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
160
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
160
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
160
          *reinterpret_cast<const void *const *>(Storage)));
419
160
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryExprOrTypeTraitExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
291
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
291
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
291
          *reinterpret_cast<const void *const *>(Storage)));
419
291
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDependentScopeMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
99
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
99
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
99
          *reinterpret_cast<const void *const *>(Storage)));
419
99
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
894
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
894
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
894
          *reinterpret_cast<const void *const *>(Storage)));
419
894
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
280
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
280
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
280
          *reinterpret_cast<const void *const *>(Storage)));
419
280
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
3.76k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
3.76k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
3.76k
          *reinterpret_cast<const void *const *>(Storage)));
419
3.76k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OverloadExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
14
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
14
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
14
          *reinterpret_cast<const void *const *>(Storage)));
419
14
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXCatchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
100
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
100
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
100
          *reinterpret_cast<const void *const *>(Storage)));
419
100
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.78k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.78k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.78k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.78k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
733
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
733
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
733
          *reinterpret_cast<const void *const *>(Storage)));
419
733
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.84k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.84k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.84k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.84k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IfStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
553
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
553
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
553
          *reinterpret_cast<const void *const *>(Storage)));
419
553
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ArraySubscriptExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
22
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
22
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
22
          *reinterpret_cast<const void *const *>(Storage)));
419
22
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
3.62k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
3.62k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
3.62k
          *reinterpret_cast<const void *const *>(Storage)));
419
3.62k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
373
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
373
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
373
          *reinterpret_cast<const void *const *>(Storage)));
419
373
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ImplicitCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
239
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
239
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
239
          *reinterpret_cast<const void *const *>(Storage)));
419
239
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TagDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
271
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
271
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
271
          *reinterpret_cast<const void *const *>(Storage)));
419
271
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AbstractConditionalOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
583
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
583
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
583
          *reinterpret_cast<const void *const *>(Storage)));
419
583
    }
clang::DynTypedNode::DynCastPtrConverter<clang::MemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
492
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
492
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
492
          *reinterpret_cast<const void *const *>(Storage)));
419
492
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BaseUsingDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
30
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
30
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
30
          *reinterpret_cast<const void *const *>(Storage)));
419
30
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
3.11k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
3.11k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
3.11k
          *reinterpret_cast<const void *const *>(Storage)));
419
3.11k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VariableArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
28
          *reinterpret_cast<const void *const *>(Storage)));
419
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ElaboratedType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
12
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
12
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
12
          *reinterpret_cast<const void *const *>(Storage)));
419
12
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecayedType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
28
          *reinterpret_cast<const void *const *>(Storage)));
419
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
63
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
63
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
63
          *reinterpret_cast<const void *const *>(Storage)));
419
63
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
102
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
102
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
102
          *reinterpret_cast<const void *const *>(Storage)));
419
102
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CaseStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
28
          *reinterpret_cast<const void *const *>(Storage)));
419
28
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ReturnStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
74
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
74
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
74
          *reinterpret_cast<const void *const *>(Storage)));
419
74
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BindingDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
32
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
32
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
32
          *reinterpret_cast<const void *const *>(Storage)));
419
32
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecompositionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
16
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
16
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
16
          *reinterpret_cast<const void *const *>(Storage)));
419
16
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXNewExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
71
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
71
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
71
          *reinterpret_cast<const void *const *>(Storage)));
419
71
    }
clang::DynTypedNode::DynCastPtrConverter<clang::EnumDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
781
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
781
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
781
          *reinterpret_cast<const void *const *>(Storage)));
419
781
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPExecutableDirective, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
804
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
804
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
804
          *reinterpret_cast<const void *const *>(Storage)));
419
804
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPDefaultClause, clang::OMPClause>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
174
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
174
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
174
          *reinterpret_cast<const void *const *>(Storage)));
419
174
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.25k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.25k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.25k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.25k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXThisExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
8
          *reinterpret_cast<const void *const *>(Storage)));
419
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FriendDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
181
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
181
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
181
          *reinterpret_cast<const void *const *>(Storage)));
419
181
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TypedefNameDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
370
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
370
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
370
          *reinterpret_cast<const void *const *>(Storage)));
419
370
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
175
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
175
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
175
          *reinterpret_cast<const void *const *>(Storage)));
419
175
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CharacterLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
8
          *reinterpret_cast<const void *const *>(Storage)));
419
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXBoolLiteralExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
422
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
422
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
422
          *reinterpret_cast<const void *const *>(Storage)));
419
422
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FloatingLiteral, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
336
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
336
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
336
          *reinterpret_cast<const void *const *>(Storage)));
419
336
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXUnresolvedConstructExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
19
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
19
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
19
          *reinterpret_cast<const void *const *>(Storage)));
419
19
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXOperatorCallExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
1.63k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
1.63k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
1.63k
          *reinterpret_cast<const void *const *>(Storage)));
419
1.63k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRewrittenBinaryOperator, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
518
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
518
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
518
          *reinterpret_cast<const void *const *>(Storage)));
419
518
    }
clang::DynTypedNode::DynCastPtrConverter<clang::StmtExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
16
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
16
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
16
          *reinterpret_cast<const void *const *>(Storage)));
419
16
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TemplateSpecializationType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
72
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
72
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
72
          *reinterpret_cast<const void *const *>(Storage)));
419
72
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DoStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
2
          *reinterpret_cast<const void *const *>(Storage)));
419
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::WhileStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
7
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
7
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
7
          *reinterpret_cast<const void *const *>(Storage)));
419
7
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::EnumType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::InjectedClassNameType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::LabelStmt, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
38
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
38
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
38
          *reinterpret_cast<const void *const *>(Storage)));
419
38
    }
clang::DynTypedNode::DynCastPtrConverter<clang::AddrLabelExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
8
          *reinterpret_cast<const void *const *>(Storage)));
419
8
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TagType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::TemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedUsingType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::AutoType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionProtoType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
212
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
212
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
212
          *reinterpret_cast<const void *const *>(Storage)));
419
212
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
144
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
144
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
144
          *reinterpret_cast<const void *const *>(Storage)));
419
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ComplexType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
56
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
56
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
56
          *reinterpret_cast<const void *const *>(Storage)));
419
56
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnresolvedMemberExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
42
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
42
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
42
          *reinterpret_cast<const void *const *>(Storage)));
419
42
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SubstTemplateTypeParmType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
4
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
4
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
4
          *reinterpret_cast<const void *const *>(Storage)));
419
4
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ConstantArrayType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
148
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
148
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
148
          *reinterpret_cast<const void *const *>(Storage)));
419
148
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OpaqueValueExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
46
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
46
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
46
          *reinterpret_cast<const void *const *>(Storage)));
419
46
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXFunctionalCastExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
8
          *reinterpret_cast<const void *const *>(Storage)));
419
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXTemporaryObjectExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
8
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
8
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
8
          *reinterpret_cast<const void *const *>(Storage)));
419
8
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundLiteralExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
21
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
21
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
21
          *reinterpret_cast<const void *const *>(Storage)));
419
21
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclaratorDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
26
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
26
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
26
          *reinterpret_cast<const void *const *>(Storage)));
419
26
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCPropertyDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
2
          *reinterpret_cast<const void *const *>(Storage)));
419
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DecltypeType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
16
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
16
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
16
          *reinterpret_cast<const void *const *>(Storage)));
419
16
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::UsingType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::AtomicType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
56
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
56
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
56
          *reinterpret_cast<const void *const *>(Storage)));
419
56
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParenType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
58
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
58
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
58
          *reinterpret_cast<const void *const *>(Storage)));
419
58
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXConversionDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
50
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
50
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
50
          *reinterpret_cast<const void *const *>(Storage)));
419
50
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXDeductionGuideDecl, clang::Decl>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
188
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
188
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
188
          *reinterpret_cast<const void *const *>(Storage)));
419
188
    }
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::BlockPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Unexecuted instantiation: clang::DynTypedNode::DynCastPtrConverter<clang::MemberPointerType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
clang::DynTypedNode::DynCastPtrConverter<clang::ReferenceType, clang::Type>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
305
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
305
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
305
          *reinterpret_cast<const void *const *>(Storage)));
419
305
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXTypeidExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
2
          *reinterpret_cast<const void *const *>(Storage)));
419
2
    }
clang::DynTypedNode::DynCastPtrConverter<clang::GenericSelectionExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
9
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
9
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
9
          *reinterpret_cast<const void *const *>(Storage)));
419
9
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParenListExpr, clang::Stmt>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
415
30
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
416
30
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
417
0
      return *cast<T>(static_cast<const BaseT *>(
418
30
          *reinterpret_cast<const void *const *>(Storage)));
419
30
    }
420
1.14M
    static DynTypedNode create(const BaseT &Node) {
421
1.14M
      DynTypedNode Result;
422
1.14M
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
1.14M
      new (&Result.Storage) const void *(&Node);
424
1.14M
      return Result;
425
1.14M
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Decl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
384k
    static DynTypedNode create(const BaseT &Node) {
421
384k
      DynTypedNode Result;
422
384k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
384k
      new (&Result.Storage) const void *(&Node);
424
384k
      return Result;
425
384k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Stmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
256k
    static DynTypedNode create(const BaseT &Node) {
421
256k
      DynTypedNode Result;
422
256k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
256k
      new (&Result.Storage) const void *(&Node);
424
256k
      return Result;
425
256k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRewrittenBinaryOperator, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
52
    static DynTypedNode create(const BaseT &Node) {
421
52
      DynTypedNode Result;
422
52
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
52
      new (&Result.Storage) const void *(&Node);
424
52
      return Result;
425
52
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Expr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
434k
    static DynTypedNode create(const BaseT &Node) {
421
434k
      DynTypedNode Result;
422
434k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
434k
      new (&Result.Storage) const void *(&Node);
424
434k
      return Result;
425
434k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Attr, clang::Attr>::create(clang::Attr const&)
Line
Count
Source
420
1.03k
    static DynTypedNode create(const BaseT &Node) {
421
1.03k
      DynTypedNode Result;
422
1.03k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
1.03k
      new (&Result.Storage) const void *(&Node);
424
1.03k
      return Result;
425
1.03k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::TranslationUnitDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
452
    static DynTypedNode create(const BaseT &Node) {
421
452
      DynTypedNode Result;
422
452
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
452
      new (&Result.Storage) const void *(&Node);
424
452
      return Result;
425
452
    }
clang::DynTypedNode::DynCastPtrConverter<clang::EnumConstantDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
15
    static DynTypedNode create(const BaseT &Node) {
421
15
      DynTypedNode Result;
422
15
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
15
      new (&Result.Storage) const void *(&Node);
424
15
      return Result;
425
15
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclRefExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
81
    static DynTypedNode create(const BaseT &Node) {
421
81
      DynTypedNode Result;
422
81
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
81
      new (&Result.Storage) const void *(&Node);
424
81
      return Result;
425
81
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CompoundStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
540
    static DynTypedNode create(const BaseT &Node) {
421
540
      DynTypedNode Result;
422
540
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
540
      new (&Result.Storage) const void *(&Node);
424
540
      return Result;
425
540
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UnaryOperator, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
34
    static DynTypedNode create(const BaseT &Node) {
421
34
      DynTypedNode Result;
422
34
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
34
      new (&Result.Storage) const void *(&Node);
424
34
      return Result;
425
34
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ExplicitCastExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
110
    static DynTypedNode create(const BaseT &Node) {
421
110
      DynTypedNode Result;
422
110
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
110
      new (&Result.Storage) const void *(&Node);
424
110
      return Result;
425
110
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCAutoreleasePoolStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
25
    static DynTypedNode create(const BaseT &Node) {
421
25
      DynTypedNode Result;
422
25
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
25
      new (&Result.Storage) const void *(&Node);
424
25
      return Result;
425
25
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMethodDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
18
    static DynTypedNode create(const BaseT &Node) {
421
18
      DynTypedNode Result;
422
18
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
18
      new (&Result.Storage) const void *(&Node);
424
18
      return Result;
425
18
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BlockDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
1
    static DynTypedNode create(const BaseT &Node) {
421
1
      DynTypedNode Result;
422
1
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
1
      new (&Result.Storage) const void *(&Node);
424
1
      return Result;
425
1
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCInterfaceDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
2.35k
    static DynTypedNode create(const BaseT &Node) {
421
2.35k
      DynTypedNode Result;
422
2.35k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
2.35k
      new (&Result.Storage) const void *(&Node);
424
2.35k
      return Result;
425
2.35k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ObjCMessageExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
35
    static DynTypedNode create(const BaseT &Node) {
421
35
      DynTypedNode Result;
422
35
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
35
      new (&Result.Storage) const void *(&Node);
424
35
      return Result;
425
35
    }
clang::DynTypedNode::DynCastPtrConverter<clang::InitListExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
156
    static DynTypedNode create(const BaseT &Node) {
421
156
      DynTypedNode Result;
422
156
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
156
      new (&Result.Storage) const void *(&Node);
424
156
      return Result;
425
156
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ClassTemplateDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
144
    static DynTypedNode create(const BaseT &Node) {
421
144
      DynTypedNode Result;
422
144
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
144
      new (&Result.Storage) const void *(&Node);
424
144
      return Result;
425
144
    }
clang::DynTypedNode::DynCastPtrConverter<clang::VarDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
1.17k
    static DynTypedNode create(const BaseT &Node) {
421
1.17k
      DynTypedNode Result;
422
1.17k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
1.17k
      new (&Result.Storage) const void *(&Node);
424
1.17k
      return Result;
425
1.17k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamedDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
6.36k
    static DynTypedNode create(const BaseT &Node) {
421
6.36k
      DynTypedNode Result;
422
6.36k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
6.36k
      new (&Result.Storage) const void *(&Node);
424
6.36k
      return Result;
425
6.36k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::Type, clang::Type>::create(clang::Type const&)
Line
Count
Source
420
43.2k
    static DynTypedNode create(const BaseT &Node) {
421
43.2k
      DynTypedNode Result;
422
43.2k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
43.2k
      new (&Result.Storage) const void *(&Node);
424
43.2k
      return Result;
425
43.2k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMemberCallExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
188
    static DynTypedNode create(const BaseT &Node) {
421
188
      DynTypedNode Result;
422
188
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
188
      new (&Result.Storage) const void *(&Node);
424
188
      return Result;
425
188
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FieldDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
201
    static DynTypedNode create(const BaseT &Node) {
421
201
      DynTypedNode Result;
422
201
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
201
      new (&Result.Storage) const void *(&Node);
424
201
      return Result;
425
201
    }
clang::DynTypedNode::DynCastPtrConverter<clang::DeclStmt, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
169
    static DynTypedNode create(const BaseT &Node) {
421
169
      DynTypedNode Result;
422
169
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
169
      new (&Result.Storage) const void *(&Node);
424
169
      return Result;
425
169
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXRecordDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
7.00k
    static DynTypedNode create(const BaseT &Node) {
421
7.00k
      DynTypedNode Result;
422
7.00k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
7.00k
      new (&Result.Storage) const void *(&Node);
424
7.00k
      return Result;
425
7.00k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CXXMethodDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
672
    static DynTypedNode create(const BaseT &Node) {
421
672
      DynTypedNode Result;
422
672
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
672
      new (&Result.Storage) const void *(&Node);
424
672
      return Result;
425
672
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ValueDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
75
    static DynTypedNode create(const BaseT &Node) {
421
75
      DynTypedNode Result;
422
75
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
75
      new (&Result.Storage) const void *(&Node);
424
75
      return Result;
425
75
    }
clang::DynTypedNode::DynCastPtrConverter<clang::UsingShadowDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
2.10k
    static DynTypedNode create(const BaseT &Node) {
421
2.10k
      DynTypedNode Result;
422
2.10k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
2.10k
      new (&Result.Storage) const void *(&Node);
424
2.10k
      return Result;
425
2.10k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::NamespaceDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
85
    static DynTypedNode create(const BaseT &Node) {
421
85
      DynTypedNode Result;
422
85
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
85
      new (&Result.Storage) const void *(&Node);
424
85
      return Result;
425
85
    }
clang::DynTypedNode::DynCastPtrConverter<clang::SwitchCase, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
23
    static DynTypedNode create(const BaseT &Node) {
421
23
      DynTypedNode Result;
422
23
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
23
      new (&Result.Storage) const void *(&Node);
424
23
      return Result;
425
23
    }
clang::DynTypedNode::DynCastPtrConverter<clang::BindingDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
14
    static DynTypedNode create(const BaseT &Node) {
421
14
      DynTypedNode Result;
422
14
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
14
      new (&Result.Storage) const void *(&Node);
424
14
      return Result;
425
14
    }
clang::DynTypedNode::DynCastPtrConverter<clang::FunctionDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
2.26k
    static DynTypedNode create(const BaseT &Node) {
421
2.26k
      DynTypedNode Result;
422
2.26k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
2.26k
      new (&Result.Storage) const void *(&Node);
424
2.26k
      return Result;
425
2.26k
    }
clang::DynTypedNode::DynCastPtrConverter<clang::OMPClause, clang::OMPClause>::create(clang::OMPClause const&)
Line
Count
Source
420
352
    static DynTypedNode create(const BaseT &Node) {
421
352
      DynTypedNode Result;
422
352
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
352
      new (&Result.Storage) const void *(&Node);
424
352
      return Result;
425
352
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParmVarDecl, clang::Decl>::create(clang::Decl const&)
Line
Count
Source
420
696
    static DynTypedNode create(const BaseT &Node) {
421
696
      DynTypedNode Result;
422
696
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
696
      new (&Result.Storage) const void *(&Node);
424
696
      return Result;
425
696
    }
clang::DynTypedNode::DynCastPtrConverter<clang::IntegerLiteral, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
170
    static DynTypedNode create(const BaseT &Node) {
421
170
      DynTypedNode Result;
422
170
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
170
      new (&Result.Storage) const void *(&Node);
424
170
      return Result;
425
170
    }
clang::DynTypedNode::DynCastPtrConverter<clang::CastExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
42
    static DynTypedNode create(const BaseT &Node) {
421
42
      DynTypedNode Result;
422
42
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
42
      new (&Result.Storage) const void *(&Node);
424
42
      return Result;
425
42
    }
clang::DynTypedNode::DynCastPtrConverter<clang::ParenListExpr, clang::Stmt>::create(clang::Stmt const&)
Line
Count
Source
420
30
    static DynTypedNode create(const BaseT &Node) {
421
30
      DynTypedNode Result;
422
30
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
423
30
      new (&Result.Storage) const void *(&Node);
424
30
      return Result;
425
30
    }
426
  };
427
428
  /// Converter that stores T* (by pointer).
429
  template <typename T> struct PtrConverter {
430
790
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
431
790
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
432
62
        return &getUnchecked(NodeKind, Storage);
433
728
      return nullptr;
434
790
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
430
425
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
431
425
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
432
45
        return &getUnchecked(NodeKind, Storage);
433
380
      return nullptr;
434
425
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
430
364
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
431
364
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
432
17
        return &getUnchecked(NodeKind, Storage);
433
347
      return nullptr;
434
364
    }
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
430
1
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
431
1
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
432
0
        return &getUnchecked(NodeKind, Storage);
433
1
      return nullptr;
434
1
    }
435
1.09k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
436
1.09k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
437
0
      return *static_cast<const T *>(
438
1.09k
          *reinterpret_cast<const void *const *>(Storage));
439
1.09k
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
435
337
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
436
337
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
437
0
      return *static_cast<const T *>(
438
337
          *reinterpret_cast<const void *const *>(Storage));
439
337
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
435
225
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
436
225
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
437
0
      return *static_cast<const T *>(
438
225
          *reinterpret_cast<const void *const *>(Storage));
439
225
    }
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
435
530
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
436
530
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
437
0
      return *static_cast<const T *>(
438
530
          *reinterpret_cast<const void *const *>(Storage));
439
530
    }
440
1.90k
    static DynTypedNode create(const T &Node) {
441
1.90k
      DynTypedNode Result;
442
1.90k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
443
1.90k
      new (&Result.Storage) const void *(&Node);
444
1.90k
      return Result;
445
1.90k
    }
clang::DynTypedNode::PtrConverter<clang::CXXBaseSpecifier>::create(clang::CXXBaseSpecifier const&)
Line
Count
Source
440
572
    static DynTypedNode create(const T &Node) {
441
572
      DynTypedNode Result;
442
572
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
443
572
      new (&Result.Storage) const void *(&Node);
444
572
      return Result;
445
572
    }
clang::DynTypedNode::PtrConverter<clang::NestedNameSpecifier>::create(clang::NestedNameSpecifier const&)
Line
Count
Source
440
983
    static DynTypedNode create(const T &Node) {
441
983
      DynTypedNode Result;
442
983
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
443
983
      new (&Result.Storage) const void *(&Node);
444
983
      return Result;
445
983
    }
clang::DynTypedNode::PtrConverter<clang::CXXCtorInitializer>::create(clang::CXXCtorInitializer const&)
Line
Count
Source
440
349
    static DynTypedNode create(const T &Node) {
441
349
      DynTypedNode Result;
442
349
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
443
349
      new (&Result.Storage) const void *(&Node);
444
349
      return Result;
445
349
    }
446
  };
447
448
  /// Converter that stores T (by value).
449
  template <typename T> struct ValueConverter {
450
5.95k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
451
5.95k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
452
444
        return reinterpret_cast<const T *>(Storage);
453
5.50k
      return nullptr;
454
5.95k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
450
9
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
451
9
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
452
1
        return reinterpret_cast<const T *>(Storage);
453
8
      return nullptr;
454
9
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
450
27
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
451
27
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
452
18
        return reinterpret_cast<const T *>(Storage);
453
9
      return nullptr;
454
27
    }
clang::DynTypedNode::ValueConverter<clang::TemplateName>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
450
8
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
451
8
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
452
0
        return reinterpret_cast<const T *>(Storage);
453
8
      return nullptr;
454
8
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
450
5.63k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
451
5.63k
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
452
174
        return reinterpret_cast<const T *>(Storage);
453
5.45k
      return nullptr;
454
5.63k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::get(clang::ASTNodeKind, void const*)
Line
Count
Source
450
277
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
451
277
      if (ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind))
452
251
        return reinterpret_cast<const T *>(Storage);
453
26
      return nullptr;
454
277
    }
455
36.4k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
456
36.4k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
457
0
      return *reinterpret_cast<const T *>(Storage);
458
36.4k
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
455
34.3k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
456
34.3k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
457
0
      return *reinterpret_cast<const T *>(Storage);
458
34.3k
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
455
1.52k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
456
1.52k
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
457
0
      return *reinterpret_cast<const T *>(Storage);
458
1.52k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
455
238
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
456
238
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
457
0
      return *reinterpret_cast<const T *>(Storage);
458
238
    }
clang::DynTypedNode::ValueConverter<clang::LambdaCapture>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
455
298
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
456
298
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
457
0
      return *reinterpret_cast<const T *>(Storage);
458
298
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
455
42
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
456
42
      assert(ASTNodeKind::getFromNodeKind<T>().isSame(NodeKind));
457
0
      return *reinterpret_cast<const T *>(Storage);
458
42
    }
459
78.9k
    static DynTypedNode create(const T &Node) {
460
78.9k
      DynTypedNode Result;
461
78.9k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
462
78.9k
      new (&Result.Storage) T(Node);
463
78.9k
      return Result;
464
78.9k
    }
clang::DynTypedNode::ValueConverter<clang::NestedNameSpecifierLoc>::create(clang::NestedNameSpecifierLoc const&)
Line
Count
Source
459
25.4k
    static DynTypedNode create(const T &Node) {
460
25.4k
      DynTypedNode Result;
461
25.4k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
462
25.4k
      new (&Result.Storage) T(Node);
463
25.4k
      return Result;
464
25.4k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgumentLoc>::create(clang::TemplateArgumentLoc const&)
Line
Count
Source
459
515
    static DynTypedNode create(const T &Node) {
460
515
      DynTypedNode Result;
461
515
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
462
515
      new (&Result.Storage) T(Node);
463
515
      return Result;
464
515
    }
clang::DynTypedNode::ValueConverter<clang::QualType>::create(clang::QualType const&)
Line
Count
Source
459
52.4k
    static DynTypedNode create(const T &Node) {
460
52.4k
      DynTypedNode Result;
461
52.4k
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
462
52.4k
      new (&Result.Storage) T(Node);
463
52.4k
      return Result;
464
52.4k
    }
clang::DynTypedNode::ValueConverter<clang::TemplateName>::create(clang::TemplateName const&)
Line
Count
Source
459
2
    static DynTypedNode create(const T &Node) {
460
2
      DynTypedNode Result;
461
2
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
462
2
      new (&Result.Storage) T(Node);
463
2
      return Result;
464
2
    }
clang::DynTypedNode::ValueConverter<clang::LambdaCapture>::create(clang::LambdaCapture const&)
Line
Count
Source
459
298
    static DynTypedNode create(const T &Node) {
460
298
      DynTypedNode Result;
461
298
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
462
298
      new (&Result.Storage) T(Node);
463
298
      return Result;
464
298
    }
clang::DynTypedNode::ValueConverter<clang::TemplateArgument>::create(clang::TemplateArgument const&)
Line
Count
Source
459
265
    static DynTypedNode create(const T &Node) {
460
265
      DynTypedNode Result;
461
265
      Result.NodeKind = ASTNodeKind::getFromNodeKind<T>();
462
265
      new (&Result.Storage) T(Node);
463
265
      return Result;
464
265
    }
465
  };
466
467
  /// Converter that stores nodes by value. It must be possible to dynamically
468
  /// cast the stored node within a type hierarchy without breaking (especially
469
  /// through slicing).
470
  template <typename T, typename BaseT,
471
            typename = std::enable_if_t<(sizeof(T) == sizeof(BaseT))>>
472
  struct DynCastValueConverter {
473
5.54k
    static const T *get(ASTNodeKind NodeKind, const void *Storage) {
474
5.54k
      if (ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind))
475
2.48k
        return &getUnchecked(NodeKind, Storage);
476
3.06k
      return nullptr;
477
5.54k
    }
478
60.2k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
479
60.2k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
480
0
      return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage));
481
60.2k
    }
clang::DynTypedNode::DynCastValueConverter<clang::TypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
478
60.0k
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
479
60.0k
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
480
0
      return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage));
481
60.0k
    }
clang::DynTypedNode::DynCastValueConverter<clang::QualifiedTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
478
18
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
479
18
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
480
0
      return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage));
481
18
    }
clang::DynTypedNode::DynCastValueConverter<clang::PointerTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
478
41
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
479
41
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
480
0
      return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage));
481
41
    }
clang::DynTypedNode::DynCastValueConverter<clang::ReferenceTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
478
28
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
479
28
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
480
0
      return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage));
481
28
    }
clang::DynTypedNode::DynCastValueConverter<clang::TemplateSpecializationTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
478
38
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
479
38
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
480
0
      return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage));
481
38
    }
clang::DynTypedNode::DynCastValueConverter<clang::ElaboratedTypeLoc, clang::TypeLoc, void>::getUnchecked(clang::ASTNodeKind, void const*)
Line
Count
Source
478
2
    static const T &getUnchecked(ASTNodeKind NodeKind, const void *Storage) {
479
2
      assert(ASTNodeKind::getFromNodeKind<T>().isBaseOf(NodeKind));
480
0
      return *static_cast<const T *>(reinterpret_cast<const BaseT *>(Storage));
481
2
    }
482
79.9k
    static DynTypedNode create(const T &Node) {
483
79.9k
      DynTypedNode Result;
484
79.9k
      Result.NodeKind = ASTNodeKind::getFromNode(Node);
485
79.9k
      new (&Result.Storage) T(Node);
486
79.9k
      return Result;
487
79.9k
    }
488
  };
489
490
  ASTNodeKind NodeKind;
491
492
  /// Stores the data of the node.
493
  ///
494
  /// Note that we can store \c Decls, \c Stmts, \c Types,
495
  /// \c NestedNameSpecifiers and \c CXXCtorInitializer by pointer as they are
496
  /// guaranteed to be unique pointers pointing to dedicated storage in the AST.
497
  /// \c QualTypes, \c NestedNameSpecifierLocs, \c TypeLocs,
498
  /// \c TemplateArguments and \c TemplateArgumentLocs on the other hand do not
499
  /// have storage or unique pointers and thus need to be stored by value.
500
  llvm::AlignedCharArrayUnion<const void *, TemplateArgument,
501
                              TemplateArgumentLoc, NestedNameSpecifierLoc,
502
                              QualType, TypeLoc>
503
      Storage;
504
};
505
506
template <typename T>
507
struct DynTypedNode::BaseConverter<
508
    T, std::enable_if_t<std::is_base_of<Decl, T>::value>>
509
    : public DynCastPtrConverter<T, Decl> {};
510
511
template <typename T>
512
struct DynTypedNode::BaseConverter<
513
    T, std::enable_if_t<std::is_base_of<Stmt, T>::value>>
514
    : public DynCastPtrConverter<T, Stmt> {};
515
516
template <typename T>
517
struct DynTypedNode::BaseConverter<
518
    T, std::enable_if_t<std::is_base_of<Type, T>::value>>
519
    : public DynCastPtrConverter<T, Type> {};
520
521
template <typename T>
522
struct DynTypedNode::BaseConverter<
523
    T, std::enable_if_t<std::is_base_of<OMPClause, T>::value>>
524
    : public DynCastPtrConverter<T, OMPClause> {};
525
526
template <typename T>
527
struct DynTypedNode::BaseConverter<
528
    T, std::enable_if_t<std::is_base_of<Attr, T>::value>>
529
    : public DynCastPtrConverter<T, Attr> {};
530
531
template <>
532
struct DynTypedNode::BaseConverter<
533
    NestedNameSpecifier, void> : public PtrConverter<NestedNameSpecifier> {};
534
535
template <>
536
struct DynTypedNode::BaseConverter<
537
    CXXCtorInitializer, void> : public PtrConverter<CXXCtorInitializer> {};
538
539
template <>
540
struct DynTypedNode::BaseConverter<
541
    TemplateArgument, void> : public ValueConverter<TemplateArgument> {};
542
543
template <>
544
struct DynTypedNode::BaseConverter<TemplateArgumentLoc, void>
545
    : public ValueConverter<TemplateArgumentLoc> {};
546
547
template <>
548
struct DynTypedNode::BaseConverter<LambdaCapture, void>
549
    : public ValueConverter<LambdaCapture> {};
550
551
template <>
552
struct DynTypedNode::BaseConverter<
553
    TemplateName, void> : public ValueConverter<TemplateName> {};
554
555
template <>
556
struct DynTypedNode::BaseConverter<
557
    NestedNameSpecifierLoc,
558
    void> : public ValueConverter<NestedNameSpecifierLoc> {};
559
560
template <>
561
struct DynTypedNode::BaseConverter<QualType,
562
                                   void> : public ValueConverter<QualType> {};
563
564
template <typename T>
565
struct DynTypedNode::BaseConverter<
566
    T, std::enable_if_t<std::is_base_of<TypeLoc, T>::value>>
567
    : public DynCastValueConverter<T, TypeLoc> {};
568
569
template <>
570
struct DynTypedNode::BaseConverter<CXXBaseSpecifier, void>
571
    : public PtrConverter<CXXBaseSpecifier> {};
572
573
// The only operation we allow on unsupported types is \c get.
574
// This allows to conveniently use \c DynTypedNode when having an arbitrary
575
// AST node that is not supported, but prevents misuse - a user cannot create
576
// a DynTypedNode from arbitrary types.
577
template <typename T, typename EnablerT> struct DynTypedNode::BaseConverter {
578
  static const T *get(ASTNodeKind NodeKind, const char Storage[]) {
579
    return NULL;
580
  }
581
};
582
583
} // end namespace clang
584
585
namespace llvm {
586
587
template <>
588
struct DenseMapInfo<clang::ASTNodeKind> : clang::ASTNodeKind::DenseMapInfo {};
589
590
template <>
591
struct DenseMapInfo<clang::DynTypedNode> : clang::DynTypedNode::DenseMapInfo {};
592
593
}  // end namespace llvm
594
595
#endif