/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/AST/TypeNodes.def
Line | Count | Source (jump to first uncovered line) |
1 | 0 | //===-- TypeNodes.def - Metadata about Type AST nodes -----------*- C++ -*-===// |
2 | 0 | // |
3 | 0 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | 0 | // See https://llvm.org/LICENSE.txt for license information. |
5 | 0 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | 0 | // |
7 | 0 | //===----------------------------------------------------------------------===// |
8 | 0 | // |
9 | 0 | // This file defines the AST type info database. Each type node is |
10 | 0 | // enumerated by providing its name (e.g., "Builtin" or "Enum") and |
11 | 0 | // base class (e.g., "Type" or "TagType"). Depending on where in the |
12 | 0 | // abstract syntax tree the type will show up, the enumeration uses |
13 | 0 | // one of five different macros: |
14 | 0 | // |
15 | 0 | // TYPE(Class, Base) - A type that can show up anywhere in the AST, |
16 | 0 | // and might be dependent, canonical, or non-canonical. All clients |
17 | 0 | // will need to understand these types. |
18 | 0 | // |
19 | 0 | // ABSTRACT_TYPE(Class, Base) - An abstract class that shows up in |
20 | 0 | // the type hierarchy but has no concrete instances. |
21 | 0 | // |
22 | 0 | // NON_CANONICAL_TYPE(Class, Base) - A type that can show up |
23 | 0 | // anywhere in the AST but will never be a part of a canonical |
24 | 0 | // type. Clients that only need to deal with canonical types |
25 | 0 | // (ignoring, e.g., typedefs and other type aliases used for |
26 | 0 | // pretty-printing) can ignore these types. |
27 | 0 | // |
28 | 0 | // DEPENDENT_TYPE(Class, Base) - A type that will only show up |
29 | 0 | // within a C++ template that has not been instantiated, e.g., a |
30 | 0 | // type that is always dependent. Clients that do not need to deal |
31 | 0 | // with uninstantiated C++ templates can ignore these types. |
32 | 0 | // |
33 | 0 | // NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) - A type that |
34 | 0 | // is non-canonical unless it is dependent. Defaults to TYPE because |
35 | 0 | // it is neither reliably dependent nor reliably non-canonical. |
36 | 0 | // |
37 | 0 | // There is a sixth macro, independent of the others. Most clients |
38 | 0 | // will not need to use it. |
39 | 0 | // |
40 | 0 | // LEAF_TYPE(Class) - A type that never has inner types. Clients |
41 | 0 | // which can operate on such types more efficiently may wish to do so. |
42 | 0 | // |
43 | 0 | //===----------------------------------------------------------------------===// |
44 | 0 |
|
45 | | #ifndef ABSTRACT_TYPE |
46 | | # define ABSTRACT_TYPE(Class, Base) TYPE(Class, Base) |
47 | | #endif |
48 | |
|
49 | | #ifndef NON_CANONICAL_TYPE |
50 | 231M | # define NON_CANONICAL_TYPE(Class, Base) TYPE(Class, Base) |
51 | | #endif |
52 | |
|
53 | | #ifndef DEPENDENT_TYPE |
54 | 150M | # define DEPENDENT_TYPE(Class, Base) TYPE(Class, Base) |
55 | | #endif |
56 | |
|
57 | | #ifndef NON_CANONICAL_UNLESS_DEPENDENT_TYPE |
58 | 130M | # define NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) TYPE(Class, Base) |
59 | | #endif |
60 | |
|
61 | 148M | TYPE(Builtin, Type) |
62 | 48.2M | TYPE79.2k (Complex, Type)
|
63 | 48.8M | TYPE(Pointer, Type) |
64 | 14.1M | TYPE177k (BlockPointer, Type)
|
65 | 43.2k | ABSTRACT_TYPE(Reference, Type) |
66 | 18.7M | TYPE(LValueReference, ReferenceType) |
67 | 5.17M | TYPE(RValueReference, ReferenceType) |
68 | 585k | TYPE(MemberPointer, Type) |
69 | 59.6k | ABSTRACT_TYPE(Array, Type) |
70 | 5.82M | TYPE(ConstantArray, ArrayType) |
71 | 3.96M | TYPE514k (IncompleteArray, ArrayType)
|
72 | 148k | TYPE(VariableArray, ArrayType) |
73 | 509k | DEPENDENT_TYPE(DependentSizedArray, ArrayType) |
74 | 122k | DEPENDENT_TYPE(DependentSizedExtVector, Type) |
75 | 123k | DEPENDENT_TYPE(DependentAddressSpace, Type) |
76 | 18.8M | TYPE(Vector, Type) |
77 | 15.9M | DEPENDENT_TYPE122k (DependentVector, Type)
|
78 | 592k | TYPE(ExtVector, VectorType) |
79 | 498k | ABSTRACT_TYPE(Function, Type) |
80 | 46.4M | TYPE(FunctionProto, FunctionType) |
81 | 2.82M | TYPE247k (FunctionNoProto, FunctionType)
|
82 | 123k | DEPENDENT_TYPE(UnresolvedUsing, Type) |
83 | 2.30M | NON_CANONICAL_TYPE(Paren, Type) |
84 | 177M | NON_CANONICAL_TYPE(Typedef, Type) |
85 | 37.6M | NON_CANONICAL_TYPE69.7k (MacroQualified, Type)
|
86 | 13.0k | NON_CANONICAL_TYPE3.30k (Adjusted, Type)
|
87 | 136k | NON_CANONICAL_TYPE(Decayed, AdjustedType) |
88 | 168k | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(TypeOfExpr, Type) |
89 | 123k | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(TypeOf, Type) |
90 | 2.04M | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Decltype, Type) |
91 | 223k | NON_CANONICAL_UNLESS_DEPENDENT_TYPE134k (UnaryTransform, Type)
|
92 | 3.75k | ABSTRACT_TYPE(Tag, Type) |
93 | 71.3M | TYPE(Record, TagType) |
94 | 26.8M | TYPE5.96M (Enum, TagType)
|
95 | 23.0M | NON_CANONICAL_TYPE(Elaborated, Type) |
96 | 10.2M | NON_CANONICAL_TYPE1.46M (Attributed, Type)
|
97 | 113M | DEPENDENT_TYPE(TemplateTypeParm, Type) |
98 | 26.5M | NON_CANONICAL_TYPE(SubstTemplateTypeParm, Type) |
99 | 5.00M | DEPENDENT_TYPE180k (SubstTemplateTypeParmPack, Type)
|
100 | 125M | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(TemplateSpecialization, Type) |
101 | 9.22M | ABSTRACT_TYPE(Deduced, Type) |
102 | 9.22M | TYPE808k (Auto, DeducedType)
|
103 | 226k | TYPE19.8k (DeducedTemplateSpecialization, DeducedType)
|
104 | 10.9M | DEPENDENT_TYPE(InjectedClassName, Type) |
105 | 24.1M | DEPENDENT_TYPE(DependentName, Type) |
106 | 783k | DEPENDENT_TYPE(DependentTemplateSpecialization, Type) |
107 | 1.44M | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(PackExpansion, Type) |
108 | 117k | NON_CANONICAL_TYPE68.4k (ObjCTypeParam, Type)
|
109 | 250k | TYPE(ObjCObject, Type) |
110 | 848k | TYPE(ObjCInterface, ObjCObjectType) |
111 | 1.06M | TYPE(ObjCObjectPointer, Type) |
112 | 366k | TYPE1.03k (Pipe, Type)
|
113 | 20.9k | TYPE(Atomic, Type) |
114 | 3.01k | |
115 | | #ifdef LAST_TYPE |
116 | | LAST_TYPE(Atomic) |
117 | | #undef LAST_TYPE |
118 | | #endif |
119 | | |
120 | 3.01k | // These types are always leaves in the type hierarchy. |
121 | | #ifdef LEAF_TYPE |
122 | | LEAF_TYPE(Enum) |
123 | | LEAF_TYPE(Builtin) |
124 | | LEAF_TYPE(Record) |
125 | | LEAF_TYPE(InjectedClassName) |
126 | | LEAF_TYPE(ObjCInterface) |
127 | | LEAF_TYPE(TemplateTypeParm) |
128 | | #undef LEAF_TYPE |
129 | | #endif |
130 | | |
131 | 3.01k | #undef NON_CANONICAL_UNLESS_DEPENDENT_TYPE |
132 | 3.01k | #undef DEPENDENT_TYPE |
133 | 3.01k | #undef NON_CANONICAL_TYPE |
134 | 3.01k | #undef ABSTRACT_TYPE |
135 | 3.01k | #undef TYPE |