19 using namespace clang;
27 OS <<
" first " << First;
34 OS <<
" prev " << Prev;
41 #define DECL(DERIVED, BASE) \ 43 return dumpPreviousDeclImpl(OS, cast<DERIVED##Decl>(D)); 44 #define ABSTRACT_DECL(DECL) 45 #include "clang/AST/DeclNodes.inc" 47 llvm_unreachable(
"Decl that isn't part of DeclNodes.inc!");
55 PrintPolicy(PrintPolicy), Traits(Traits) {}
85 #include "clang/Basic/AttrList.inc" 101 OS <<
"TemplateArgument";
125 OS <<
" openmp_structured_block";
127 if (
const auto *E = dyn_cast<Expr>(Node)) {
132 switch (E->getValueKind()) {
146 switch (E->getObjectKind()) {
153 OS <<
" objcproperty";
156 OS <<
" objcsubscript";
159 OS <<
" vectorcomponent";
174 if (isa<LocInfoType>(T)) {
177 OS <<
"LocInfo Type";
193 if (SingleStepDesugar !=
QualType(T, 0))
199 OS <<
" instantiation_dependent";
202 OS <<
" variably_modified";
204 OS <<
" contains_unexpanded_pack";
241 OS <<
" in " << M->getFullModuleName();
242 if (
auto *ND = dyn_cast<NamedDecl>(D))
244 const_cast<NamedDecl *>(ND)))
245 AddChild([=] { OS <<
"also in " << M->getFullModuleName(); });
246 if (
const NamedDecl *ND = dyn_cast<NamedDecl>(D))
259 if (
const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
260 if (FD->isConstexprSpecified())
262 if (FD->isConsteval())
266 if (!isa<FunctionDecl>(*D)) {
268 if (!MD || !MD->isThisDeclarationADefinition()) {
270 if (DC && DC->hasExternalLexicalStorage()) {
272 OS <<
" <undeserialized declarations>";
281 OS <<
"CXXCtorInitializer";
290 llvm_unreachable(
"Unknown initializer type");
309 OS <<
"<<<NULL>>> OMPClause";
315 OS <<
"OMP" << ClauseName.substr(0, 1).upper()
316 << ClauseName.drop_front() <<
"Clause";
354 OS <<
"<invalid sloc>";
358 if (strcmp(PLoc.
getFilename(), LastLocFilename) != 0) {
363 }
else if (PLoc.
getLine() != LastLocLine) {
393 if (Desugar && !T.
isNull()) {
396 if (T_split != D_split)
419 if (
const NamedDecl *ND = dyn_cast<NamedDecl>(D)) {
421 OS <<
" '" << ND->getDeclName() <<
'\'';
424 if (
const ValueDecl *VD = dyn_cast<ValueDecl>(D))
462 const char *TextNodeDumper::getCommandName(
unsigned CommandID) {
469 return "<not a builtin command>";
474 OS <<
" Text=\"" << C->
getText() <<
"\"";
479 OS <<
" Name=\"" << getCommandName(C->
getCommandID()) <<
"\"";
482 OS <<
" RenderNormal";
488 OS <<
" RenderMonospaced";
491 OS <<
" RenderEmphasized";
496 OS <<
" Arg[" <<
i <<
"]=\"" << C->
getArgText(
i) <<
"\"";
506 OS <<
" \"" << Attr.
Name <<
"=\"" << Attr.
Value <<
"\"";
510 OS <<
" SelfClosing";
520 OS <<
" Name=\"" << getCommandName(C->
getCommandID()) <<
"\"";
522 OS <<
" Arg[" <<
i <<
"]=\"" << C->
getArgText(
i) <<
"\"";
557 for (
unsigned i = 0, e = C->
getDepth();
i != e; ++
i) {
577 OS <<
" Text=\"" << C->
getText() <<
"\"";
582 OS <<
" Text=\"" << C->
getText() <<
"\"";
615 OS <<
" template expansion ";
674 OS <<
" '" << Node->
getName() <<
"'";
713 OS <<
" part_of_explicit_cast";
737 OS <<
"ADL) = '" << Node->
getName() <<
'\'';
752 OS <<
"='" << *Node->
getDecl() <<
"'";
770 OS <<
" " << Node->
getValue().toString(10, isSigned);
798 OS <<
" result_dependent";
802 OS <<
" " << (Node->
isPostfix() ?
"postfix" :
"prefix") <<
" '" 805 OS <<
" cannot overflow";
821 OS <<
" __builtin_omp_required_simd_align";
854 <<
"' ComputeLHSTy=";
856 OS <<
" ComputeResultTy=";
874 OS <<
" " << (Node->
getValue() ?
"true" :
"false");
904 OS <<
" std::initializer_list";
911 OS <<
" (CXXTemporary";
943 OS <<
" extended by ";
976 OS <<
" super (instance)";
980 OS <<
" super (class)";
988 BoxingMethod->getSelector().print(OS);
1012 OS <<
" Kind=MethodRef Getter=\"";
1018 OS <<
"\" Setter=\"";
1020 Setter->getSelector().print(OS);
1032 OS <<
" Messaging=";
1034 OS <<
"Getter&Setter";
1044 OS <<
" Kind=ArraySubscript GetterForArray=\"";
1046 OS <<
" Kind=DictionarySubscript GetterForDictionary=\"";
1053 OS <<
"\" SetterForArray=\"";
1055 OS <<
"\" SetterForDictionary=\"";
1063 OS <<
" " << (Node->
getValue() ?
"__objc_yes" :
"__objc_no");
1068 OS <<
" written as lvalue reference";
1117 OS <<
" altivec pixel";
1120 OS <<
" altivec bool";
1134 if (EI.getNoReturn())
1136 if (EI.getProducesResult())
1137 OS <<
" produces_result";
1138 if (EI.getHasRegParm())
1139 OS <<
" regparm " << EI.getRegParm();
1145 if (EPI.HasTrailingReturn)
1146 OS <<
" trailing_return";
1155 switch (EPI.RefQualifier) {
1181 OS <<
" underlying_type";
1199 OS <<
" decltype(auto)";
1223 OS <<
" expansions " << *N;
1232 OS <<
" __module_private__";
1244 OS <<
" __module_private__";
1253 OS <<
" __module_private__";
1255 OS <<
" definition";
1267 for (
const auto *Child : D->
chain())
1283 OS <<
" __module_private__";
1311 if (
const auto *MD = dyn_cast<CXXMethodDecl>(D)) {
1312 if (MD->size_overridden_methods() != 0) {
1315 OS << D <<
" " << D->
getParent()->getName()
1321 auto Overrides = MD->overridden_methods();
1322 OS <<
"Overrides: [ ";
1323 dumpOverride(*Overrides.begin());
1324 for (
const auto *Override :
1325 llvm::make_range(Overrides.begin() + 1, Overrides.end())) {
1327 dumpOverride(Override);
1339 OS <<
" <<<NULL params x " << D->
getNumParams() <<
">>>";
1348 OS <<
" __module_private__";
1364 OS <<
" tls_dynamic";
1368 OS <<
" __module_private__";
1414 llvm_unreachable(
"unexpected pragma comment kind");
1431 StringRef Arg = D->
getArg();
1433 OS <<
" \"" << Arg <<
"\"";
1444 OS <<
" openmp_standalone_directive";
1454 OS <<
" initializer";
1458 OS <<
" omp_priv = ";
1461 OS <<
" omp_priv ()";
1474 OS <<
"<<<NULL>>> OMPClause";
1480 OS <<
"OMP" << ClauseName.substr(0, 1).upper()
1481 << ClauseName.drop_front() <<
"Clause";
1530 OS <<
"DefinitionData";
1532 #define FLAG(fn, name) \ 1535 FLAG(isParsingBaseSpecifiers, parsing_base_specifiers);
1537 FLAG(isGenericLambda,
generic);
1538 FLAG(isLambda, lambda);
1541 FLAG(isEmpty, empty);
1542 FLAG(isAggregate, aggregate);
1543 FLAG(isStandardLayout, standard_layout);
1544 FLAG(isTriviallyCopyable, trivially_copyable);
1547 FLAG(isPolymorphic, polymorphic);
1548 FLAG(isAbstract,
abstract);
1551 FLAG(hasUserDeclaredConstructor, has_user_declared_ctor);
1552 FLAG(hasConstexprNonCopyMoveConstructor, has_constexpr_non_copy_move_ctor);
1553 FLAG(hasMutableFields, has_mutable_fields);
1554 FLAG(hasVariantMembers, has_variant_members);
1555 FLAG(allowConstDefaultInit, can_const_default_init);
1560 OS <<
"DefaultConstructor";
1562 FLAG(hasDefaultConstructor, exists);
1563 FLAG(hasTrivialDefaultConstructor, trivial);
1564 FLAG(hasNonTrivialDefaultConstructor, non_trivial);
1565 FLAG(hasUserProvidedDefaultConstructor, user_provided);
1566 FLAG(hasConstexprDefaultConstructor, constexpr);
1567 FLAG(needsImplicitDefaultConstructor, needs_implicit);
1568 FLAG(defaultedDefaultConstructorIsConstexpr, defaulted_is_constexpr);
1574 OS <<
"CopyConstructor";
1576 FLAG(hasSimpleCopyConstructor, simple);
1577 FLAG(hasTrivialCopyConstructor, trivial);
1578 FLAG(hasNonTrivialCopyConstructor, non_trivial);
1579 FLAG(hasUserDeclaredCopyConstructor, user_declared);
1580 FLAG(hasCopyConstructorWithConstParam, has_const_param);
1581 FLAG(needsImplicitCopyConstructor, needs_implicit);
1582 FLAG(needsOverloadResolutionForCopyConstructor,
1583 needs_overload_resolution);
1585 FLAG(defaultedCopyConstructorIsDeleted, defaulted_is_deleted);
1586 FLAG(implicitCopyConstructorHasConstParam, implicit_has_const_param);
1592 OS <<
"MoveConstructor";
1594 FLAG(hasMoveConstructor, exists);
1595 FLAG(hasSimpleMoveConstructor, simple);
1596 FLAG(hasTrivialMoveConstructor, trivial);
1597 FLAG(hasNonTrivialMoveConstructor, non_trivial);
1598 FLAG(hasUserDeclaredMoveConstructor, user_declared);
1599 FLAG(needsImplicitMoveConstructor, needs_implicit);
1600 FLAG(needsOverloadResolutionForMoveConstructor,
1601 needs_overload_resolution);
1603 FLAG(defaultedMoveConstructorIsDeleted, defaulted_is_deleted);
1609 OS <<
"CopyAssignment";
1611 FLAG(hasTrivialCopyAssignment, trivial);
1612 FLAG(hasNonTrivialCopyAssignment, non_trivial);
1613 FLAG(hasCopyAssignmentWithConstParam, has_const_param);
1614 FLAG(hasUserDeclaredCopyAssignment, user_declared);
1615 FLAG(needsImplicitCopyAssignment, needs_implicit);
1616 FLAG(needsOverloadResolutionForCopyAssignment, needs_overload_resolution);
1617 FLAG(implicitCopyAssignmentHasConstParam, implicit_has_const_param);
1623 OS <<
"MoveAssignment";
1625 FLAG(hasMoveAssignment, exists);
1626 FLAG(hasSimpleMoveAssignment, simple);
1627 FLAG(hasTrivialMoveAssignment, trivial);
1628 FLAG(hasNonTrivialMoveAssignment, non_trivial);
1629 FLAG(hasUserDeclaredMoveAssignment, user_declared);
1630 FLAG(needsImplicitMoveAssignment, needs_implicit);
1631 FLAG(needsOverloadResolutionForMoveAssignment, needs_overload_resolution);
1639 FLAG(hasSimpleDestructor, simple);
1640 FLAG(hasIrrelevantDestructor, irrelevant);
1641 FLAG(hasTrivialDestructor, trivial);
1642 FLAG(hasNonTrivialDestructor, non_trivial);
1643 FLAG(hasUserDeclaredDestructor, user_declared);
1644 FLAG(needsImplicitDestructor, needs_implicit);
1645 FLAG(needsOverloadResolutionForDestructor, needs_overload_resolution);
1647 FLAG(defaultedDestructorIsDeleted, defaulted_is_deleted);
1651 for (
const auto &I : D->
bases()) {
1657 if (I.isPackExpansion())
1754 OS <<
"constructed ";
1786 OS <<
" synthesize";
1830 OS <<
" contravariant";
1856 for (
const auto *Child : D->
protocols())
1865 for (
const auto *Child : D->
protocols())
1912 OS <<
" unsafe_unretained";
1925 OS <<
" synthesize";
1937 OS <<
" captures_this";
ObjCPropertyRefExpr - A dot-syntax expression to access an ObjC property.
bool isBaseInitializer() const
Determine whether this initializer is initializing a base class.
The receiver is the instance of the superclass object.
void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *Node)
void VisitVarTemplateDecl(const VarTemplateDecl *D)
NamedDecl * getTargetDecl() const
Gets the underlying declaration which has been brought into the local scope.
Represents a function declaration or definition.
static const TerminalColor StmtColor
NamedDecl * getFoundDecl()
Get the NamedDecl through which this reference occurred.
void VisitGenericSelectionExpr(const GenericSelectionExpr *E)
The receiver is an object instance.
void VisitCXXDeleteExpr(const CXXDeleteExpr *Node)
protocol_range protocols() const
A class which contains all the information about a particular captured value.
Module * getOwningModule() const
Get the module that owns this declaration (for visibility purposes).
Represents the dependent type named by a dependently-scoped typename using declaration, e.g.
void VisitIfStmt(const IfStmt *Node)
A (possibly-)qualified type.
void VisitNullPtrTemplateArgument(const TemplateArgument &TA)
const char * getDeclKindName() const
ValueDecl * getMemberDecl() const
Retrieve the member declaration to which this expression refers.
ObjCMethodDecl * getAtIndexMethodDecl() const
ObjCInterfaceDecl * getClassInterface()
Selector getSelector() const
void VisitCXXConstructExpr(const CXXConstructExpr *Node)
ObjCIvarDecl * getPropertyIvarDecl() const
bool isSuperReceiver() const
bool hasVarStorage() const
True if this IfStmt has storage for a variable declaration.
static void dumpPreviousDeclImpl(raw_ostream &OS,...)
bool isListInitialization() const
Determine whether this expression models list-initialization.
RetTy Visit(REF(TemplateArgument) TA, ParamTys... P)
void VisitOMPCapturedExprDecl(const OMPCapturedExprDecl *D)
ObjCProtocolDecl * getProtocol() const
Stmt - This represents one statement.
bool isStandaloneDirective() const
Returns whether or not this is a Standalone directive.
FunctionType - C99 6.7.5.3 - Function Declarators.
IfStmt - This represents an if/then/else.
ObjCMethodDecl * setAtIndexMethodDecl() const
An instance of this object exists for each enum constant that is defined.
StorageClass getStorageClass() const
Returns the storage class as written in the source.
Represents the declaration of a typedef-name via the 'typedef' type specifier.
void VisitOMPRequiresDecl(const OMPRequiresDecl *D)
bool isDecltypeAuto() const
void VisitPredefinedExpr(const PredefinedExpr *Node)
void VisitCompoundAssignOperator(const CompoundAssignOperator *Node)
void VisitFriendDecl(const FriendDecl *D)
Decl - This represents one declaration (or definition), e.g.
bool needsOverloadResolutionForDestructor() const
Determine whether we need to eagerly declare a destructor for this class.
TagDecl * getDecl() const
void VisitObjCProtocolExpr(const ObjCProtocolExpr *Node)
ObjCMethodDecl * getImplicitPropertySetter() const
void VisitObjCCategoryDecl(const ObjCCategoryDecl *D)
FunctionDecl * getOperatorNew() const
bool isVirtual() const
Determines whether the base class is a virtual base class (or not).
A reference to a name which we were able to look up during parsing but could not resolve to a specifi...
Defines the C++ template declaration subclasses.
Represents a C++11 auto or C++14 decltype(auto) type.
void visitTParamCommandComment(const comments::TParamCommandComment *C, const comments::FullComment *FC)
void VisitCaseStmt(const CaseStmt *Node)
The base class of the type hierarchy.
bool requiresZeroInitialization() const
Whether this construction first requires zero-initialization before the initializer is called...
void VisitCastExpr(const CastExpr *Node)
The parameter is covariant, e.g., X<T> is a subtype of X<U> when the type parameter is covariant and ...
Declaration of a variable template.
Represents an array type, per C99 6.7.5.2 - Array Declarators.
void VisitImportDecl(const ImportDecl *D)
Represent a C++ namespace.
Represents a call to a C++ constructor.
ObjCSubscriptRefExpr - used for array and dictionary subscripting.
RetTy Visit(const Type *T)
Performs the operation associated with this visitor object.
AccessSpecifier
A C++ access specifier (public, private, protected), plus the special value "none" which means differ...
A container of type source information.
void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D)
bool hasVarStorage() const
True if this SwitchStmt has storage for a condition variable.
IdentKind getIdentKind() const
void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *Node)
TemplateTypeParmDecl * getDecl() const
Represents a C++ constructor within a class.
Represents a prvalue temporary that is written into memory so that a reference can bind to it...
bool isVirtualAsWritten() const
Whether this function is marked as virtual explicitly.
bool needsOverloadResolutionForCopyConstructor() const
Determine whether we need to eagerly declare a defaulted copy constructor for this class...
void VisitObjCProtocolDecl(const ObjCProtocolDecl *D)
static const TerminalColor ObjectKindColor
This name appears in an unevaluated operand.
void dumpSourceRange(SourceRange R)
bool isCompleteDefinition() const
Return true if this decl has its body fully specified.
void VisitSizeOfPackExpr(const SizeOfPackExpr *Node)
void VisitTypedefDecl(const TypedefDecl *D)
const CXXBaseSpecifier *const * path_const_iterator
unsigned getDepth() const
Get the nesting depth of the template parameter.
FriendDecl - Represents the declaration of a friend entity, which can be a function, a type, or a templated function or type.
An Objective-C array/dictionary subscripting which reads an object or writes at the subscripted array...
Represents a variable declaration or definition.
void VisitTagType(const TagType *T)
bool isFixed() const
Returns true if this is an Objective-C, C++11, or Microsoft-style enumeration with a fixed underlying...
const T * getAs() const
Member-template getAs<specific type>'.
ObjCCategoryImplDecl * getImplementation() const
void VisitExtVectorElementExpr(const ExtVectorElementExpr *Node)
Extra information about a function prototype.
ObjCMethodDecl - Represents an instance or class method declaration.
bool hasInitStorage() const
True if this SwitchStmt has storage for an init statement.
void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D)
void VisitVectorType(const VectorType *T)
void VisitClassTemplateDecl(const ClassTemplateDecl *D)
DeclarationName getName() const
Gets the name looked up.
const char * getName() const
bool isInvalidDecl() const
bool requiresADL() const
True if this declaration should be extended by argument-dependent lookup.
Describes how types, statements, expressions, and declarations should be printed. ...
protocol_range protocols() const
Represents an expression – generally a full-expression – that introduces cleanups to be run at the ...
Represents the builtin template declaration which is used to implement __make_integer_seq and other b...
void VisitBindingDecl(const BindingDecl *D)
const ObjCInterfaceDecl * getSuperClass() const
ObjCPropertyDecl * getExplicitProperty() const
void VisitDeclarationTemplateArgument(const TemplateArgument &TA)
void VisitTemplateSpecializationType(const TemplateSpecializationType *T)
const char * getStmtClassName() const
SourceLocation getAttributeLoc() const
LabelStmt - Represents a label, which has a substatement.
Represents a struct/union/class.
void VisitCXXNamedCastExpr(const CXXNamedCastExpr *Node)
clauselist_range clauselists()
LanguageIDs getLanguage() const
Return the language specified by this linkage specification.
void VisitBuiltinTemplateDecl(const BuiltinTemplateDecl *D)
DeclarationName getDeclName() const
Get the actual, stored name of the declaration, which may be a special name.
const char * getOpenMPClauseName(OpenMPClauseKind Kind)
Provides common interface for the Decls that can be redeclared.
void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *Node)
TypeSourceInfo * getFriendType() const
If this friend declaration names an (untemplated but possibly dependent) type, return the type; other...
unsigned getDepth() const
Retrieve the depth of the template parameter.
QualType getComputationResultType() const
bool isImplicit() const
Returns true if the attribute has been implicitly created instead of explicitly written by the user...
void VisitObjCIvarDecl(const ObjCIvarDecl *D)
A vector component is an element or range of elements on a vector.
bool isInline() const
Returns true if this is an inline namespace declaration.
Used for GCC's __alignof.
The parameter is contravariant, e.g., X<T> is a subtype of X<U> when the type parameter is covariant ...
bool isSpelledAsLValue() const
void VisitPackTemplateArgument(const TemplateArgument &TA)
Represents a member of a struct/union/class.
void VisitEnumConstantDecl(const EnumConstantDecl *D)
TemplateName getTemplateName() const
Retrieve the name of the template that we are specializing.
TypeSourceInfo * getTypeSourceInfo() const
Returns the declarator information for a base class or delegating initializer.
void VisitUnresolvedUsingValueDecl(const UnresolvedUsingValueDecl *D)
StringRef getValue() const
void VisitTypeAliasDecl(const TypeAliasDecl *D)
InitKind getInitializerKind() const
Get initializer kind.
ObjCMethodDecl * getSetterMethodDecl() const
The iterator over UnresolvedSets.
void VisitFunctionProtoType(const FunctionProtoType *T)
virtual SourceRange getSourceRange() const LLVM_READONLY
Source range that this declaration covers.
void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D)
ExtVectorElementExpr - This represents access to specific elements of a vector, and may occur on the ...
Represents an access specifier followed by colon ':'.
void VisitUsingDecl(const UsingDecl *D)
Describes a module or submodule.
An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.
Selector getSelector() const
Represents Objective-C's @catch statement.
void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D)
StringRef getOpcodeStr() const
void VisitSwitchStmt(const SwitchStmt *Node)
Describes an C or C++ initializer list.
Represents a C++ using-declaration.
void VisitRecordDecl(const RecordDecl *D)
void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *Node)
Expr * getInitializer()
Get initializer expression (if specified) of the declare reduction construct.
UnresolvedUsingTypenameDecl * getDecl() const
AssociationTy< true > ConstAssociation
void VisitPragmaDetectMismatchDecl(const PragmaDetectMismatchDecl *D)
An lvalue ref-qualifier was provided (&).
bool isMessagingSetter() const
True if the property reference will result in a message to the setter.
FunctionDecl * getOperatorDelete() const
void VisitOMPDeclareReductionDecl(const OMPDeclareReductionDecl *D)
std::string getFullModuleName(bool AllowStringLiterals=false) const
Retrieve the full name of this module, including the path from its top-level module.
bool isElidable() const
Whether this construction is elidable.
void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *Node)
ArrayRef< NamedDecl * > chain() const
An x-value expression is a reference to an object with independent storage but which can be "moved"...
bool isTypeAlias() const
Determine if this template specialization type is for a type alias template that has been substituted...
path_iterator path_begin()
PropertyAttributeKind getPropertyAttributes() const
void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *Node)
const clang::PrintingPolicy & getPrintingPolicy() const
bool isByRef() const
Whether this is a "by ref" capture, i.e.
bool containsUnexpandedParameterPack() const
Whether this type is or contains an unexpanded parameter pack, used to support C++0x variadic templat...
A builtin binary operation expression such as "x + y" or "x <= y".
static bool isPostfix(Opcode Op)
isPostfix - Return true if this is a postfix operation, like x++.
void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node)
bool hasElseStorage() const
True if this IfStmt has storage for an else statement.
CXXRecordDecl * getDecl() const
bool isConstexpr() const
Whether this variable is (C++11) constexpr.
static const TerminalColor DeclNameColor
void VisitTemplateTypeParmType(const TemplateTypeParmType *T)
void VisitTemplateExpansionTemplateArgument(const TemplateArgument &TA)
static const TerminalColor LocationColor
void VisitExpressionTemplateArgument(const TemplateArgument &TA)
CaseStmt - Represent a case statement.
unsigned getIndex() const
Get the index of the template parameter within its parameter list.
bool isAnyMemberInitializer() const
void dumpLocation(SourceLocation Loc)
CastExpr - Base class for type casts, including both implicit casts (ImplicitCastExpr) and explicit c...
Represents an Objective-C protocol declaration.
Represents binding an expression to a temporary.
DeclContext * getLexicalDeclContext()
getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC)...
SourceLocation getSpellingLoc(SourceLocation Loc) const
Given a SourceLocation object, return the spelling location referenced by the ID. ...
FieldDecl * getAnyMember() const
PropertyControl getPropertyImplementation() const
void * getAsOpaquePtr() const
void VisitLabelStmt(const LabelStmt *Node)
An ordinary object is located at an address in memory.
bool hasExplicitBound() const
Whether this type parameter has an explicitly-written type bound, e.g., "T : NSView".
Represents a C++ member access expression where the actual member referenced could not be resolved be...
Represents the body of a CapturedStmt, and serves as its DeclContext.
Represents an ObjC class declaration.
Represents a linkage specification.
QualType getReturnType() const
void print(raw_ostream &OS, const PrintingPolicy &Policy, bool ResolveTemplateArguments=false) const
Print this nested name specifier to the given output stream.
void VisitObjCImplementationDecl(const ObjCImplementationDecl *D)
is ARM Neon polynomial vector
bool isParameterPack() const
Whether this template template parameter is a template parameter pack.
FunctionDecl * SourceDecl
The function whose exception specification this is, for EST_Unevaluated and EST_Uninstantiated.
SplitQualType getSplitDesugaredType() const
A binding in a decomposition declaration.
void visitHTMLStartTagComment(const comments::HTMLStartTagComment *C, const comments::FullComment *)
Represents an extended vector type where either the type or size is dependent.
void visitVerbatimBlockComment(const comments::VerbatimBlockComment *C, const comments::FullComment *)
param_iterator param_begin()
Represents the this expression in C++.
Module * getImportedModule() const
Retrieve the module that was imported by the import declaration.
static bool canPassInRegisters(Sema &S, CXXRecordDecl *D, TargetInfo::CallingConvKind CCK)
Determine whether a type is permitted to be passed or returned in registers, per C++ [class...
ObjCPropertyImplDecl - Represents implementation declaration of a property in a class or category imp...
QualType getTypeAsWritten() const
getTypeAsWritten - Returns the type that this expression is casting to, as written in the source code...
decl_type * getFirstDecl()
Return the first declaration of this declaration or itself if this is the only declaration.
void VisitInjectedClassNameType(const InjectedClassNameType *T)
const ValueDecl * getExtendingDecl() const
Get the declaration which triggered the lifetime-extension of this temporary, if any.
void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T)
void VisitTemplateTemplateArgument(const TemplateArgument &TA)
bool isStdInitListInitialization() const
Whether this constructor call was written as list-initialization, but was interpreted as forming a st...
Represents the declaration of a typedef-name via a C++11 alias-declaration.
ArrayRef< Module * > getModulesWithMergedDefinition(const NamedDecl *Def)
Get the additional modules in which the definition Def has been merged.
Represents a prototype with parameter type info, e.g.
void VisitImplicitCastExpr(const ImplicitCastExpr *Node)
CXXConstructorDecl * getConstructor() const
Get the constructor that this expression will (ultimately) call.
QualType getComputationLHSType() const
OpenMPClauseKind getClauseKind() const
Returns kind of OpenMP clause (private, shared, reduction, etc.).
bool isDelegatingInitializer() const
Determine whether this initializer is creating a delegating constructor.
UnaryExprOrTypeTraitExpr - expression with either a type or (unevaluated) expression operand...
void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *Node)
bool isParameterPack() const
Whether this parameter is a non-type template parameter pack.
ConstantExpr - An expression that occurs in a constant context and optionally the result of evaluatin...
void VisitCXXRecordDecl(const CXXRecordDecl *D)
Expr * getCombiner()
Get combiner expression of the declare reduction construct.
ValueDecl * getAsDecl() const
Retrieve the declaration for a declaration non-type template argument.
void outputString(raw_ostream &OS) const
This represents '#pragma omp requires...' directive.
unsigned getValue() const
An Objective-C property is a logical field of an Objective-C object which is read and written via Obj...
Represents an array type in C++ whose size is a value-dependent expression.
ObjCMethodDecl * getBoxingMethod() const
static const TerminalColor ValueColor
bool isInlineSpecified() const
Determine whether the "inline" keyword was specified for this function.
Represents a shadow constructor declaration introduced into a class by a C++11 using-declaration that...
Represents a block literal declaration, which is like an unnamed FunctionDecl.
static const TerminalColor CommentColor
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...
StringRef getKindName() const
void visitParamCommandComment(const comments::ParamCommandComment *C, const comments::FullComment *FC)
void visitInlineCommandComment(const comments::InlineCommandComment *C, const comments::FullComment *)
bool isDefaulted() const
Whether this function is defaulted per C++0x.
bool isInvalid() const
Return true if this object is invalid or uninitialized.
bool isScopedUsingClassTag() const
Returns true if this is a C++11 scoped enumeration.
Declaration of a template type parameter.
unsigned getIndex() const
NonOdrUseReason isNonOdrUse() const
Is this expression a non-odr-use reference, and if so, why? This is only meaningful if the named memb...
void VisitObjCSelectorExpr(const ObjCSelectorExpr *Node)
unsigned getLine() const
Return the presumed line number of this location.
void VisitOMPExecutableDirective(const OMPExecutableDirective *D)
This name appears as a potential result of an lvalue-to-rvalue conversion that is a constant expressi...
void visitVerbatimBlockLineComment(const comments::VerbatimBlockLineComment *C, const comments::FullComment *)
void VisitCXXFunctionalCastExpr(const CXXFunctionalCastExpr *Node)
bool isImplicit() const
isImplicit - Indicates whether the declaration was implicitly generated by the implementation.
TextNodeDumper(raw_ostream &OS, bool ShowColors, const SourceManager *SM, const PrintingPolicy &PrintPolicy, const comments::CommandTraits *Traits)
const char * getTypeClassName() const
QualType getArgumentType() const
DeclContext * getDeclContext()
ObjCInterfaceDecl * getSuperClass() const
ObjCSelectorExpr used for @selector in Objective-C.
TLSKind getTLSKind() const
Represents an expression that computes the length of a parameter pack.
StorageClass getStorageClass() const
Returns the storage class as written in the source.
NonTypeTemplateParmDecl - Declares a non-type template parameter, e.g., "Size" in.
ConstructorUsingShadowDecl * getNominatedBaseClassShadowDecl() const
Get the inheriting constructor declaration for the direct base class from which this using shadow dec...
IdentifierInfo & getAccessor() const
void VisitUnresolvedUsingTypenameDecl(const UnresolvedUsingTypenameDecl *D)
decls_iterator decls_begin() const
CXXRecordDecl * getConstructedBaseClass() const
Get the base class whose constructor or constructor shadow declaration is passed the constructor argu...
bool isOMPStructuredBlock() const
A std::pair-like structure for storing a qualified type split into its local qualifiers and its local...
void VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D)
bool isSignedIntegerType() const
Return true if this is an integer type that is signed, according to C99 6.2.5p4 [char, signed char, short, int, long..], or an enum decl which has a signed representation.
void print(llvm::raw_ostream &OS) const
Prints the full selector name (e.g. "foo:bar:").
static const TerminalColor ValueKindColor
StorageClass
Storage classes.
void VisitGotoStmt(const GotoStmt *Node)
void dump(raw_ostream &OS) const
Debugging aid that dumps the template name.
Direct list-initialization (C++11)
Qualifiers Quals
The local qualifiers.
Declaration of an alias template.
DeclContext * getParent()
getParent - Returns the containing DeclContext.
LabelDecl * getLabel() const
QualType getEncodedType() const
An expression that sends a message to the given Objective-C object or class.
void VisitTypedefType(const TypedefType *T)
Represents an unpacked "presumed" location which can be presented to the user.
ObjCMethodDecl * getImplicitPropertyGetter() const
SourceLocation getEnd() const
UnaryOperator - This represents the unary-expression's (except sizeof and alignof), the postinc/postdec operators from postfix-expression, and various extensions.
bool isInstanceMethod() const
void dumpBareType(QualType T, bool Desugar=true)
Represents a GCC generic vector type.
ReceiverKind getReceiverKind() const
Determine the kind of receiver that this message is being sent to.
ArraySizeModifier getSizeModifier() const
TemplateTemplateParmDecl - Declares a template template parameter, e.g., "T" in.
StringRef getName() const
void VisitPragmaCommentDecl(const PragmaCommentDecl *D)
Selector getSelector() const
std::string getAsString() const
static QualType Desugar(ASTContext &Context, QualType QT, bool &ShouldAKA)
bool isTrivial() const
Whether this function is "trivial" in some specialized C++ senses.
void VisitExprWithCleanups(const ExprWithCleanups *Node)
bool isNull() const
Return true if this QualType doesn't point to a type yet.
InitializationStyle getInitStyle() const
The style of initialization for this declaration.
void visitBlockCommandComment(const comments::BlockCommandComment *C, const comments::FullComment *)
void VisitFloatingLiteral(const FloatingLiteral *Node)
void VisitObjCMethodDecl(const ObjCMethodDecl *D)
void VisitConstructorUsingShadowDecl(const ConstructorUsingShadowDecl *D)
void VisitCapturedDecl(const CapturedDecl *D)
APValue getAPValueResult() const
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
void VisitNamespaceAliasDecl(const NamespaceAliasDecl *D)
SplitQualType split() const
Divides a QualType into its unqualified type and a set of local qualifiers.
const char * getFilename() const
Return the presumed filename of this location.
void VisitIndirectFieldDecl(const IndirectFieldDecl *D)
is AltiVec 'vector Pixel'
static StringRef getIdentKindName(IdentKind IK)
not a target-specific vector type
ExceptionSpecificationType Type
The kind of exception specification this is.
bool isImplicitProperty() const
decl_type * getPreviousDecl()
Return the previous declaration of this declaration or NULL if this is the first declaration.
void VisitNullTemplateArgument(const TemplateArgument &TA)
ExtProtoInfo getExtProtoInfo() const
unsigned getColumn() const
Return the presumed column number of this location.
bool isParameterPack() const
Returns whether this is a parameter pack.
Encodes a location in the source.
bool getSynthesize() const
ObjCInterfaceDecl * getDecl() const
Get the declaration of this interface.
void VisitIntegralTemplateArgument(const TemplateArgument &TA)
bool isPure() const
Whether this virtual function is pure, i.e.
void VisitDependentSizedArrayType(const DependentSizedArrayType *T)
bool hasVarStorage() const
True if this WhileStmt has storage for a condition variable.
This represents '#pragma omp declare reduction ...' directive.
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
void dumpPointer(const void *Ptr)
Pseudo declaration for capturing expressions.
void VisitFixedPointLiteral(const FixedPointLiteral *Node)
Interfaces are the core concept in Objective-C for object oriented design.
bool isVariablyModifiedType() const
Whether this type is a variably-modified type (C99 6.7.5).
void VisitUsingDirectiveDecl(const UsingDirectiveDecl *D)
This is a basic class for representing single OpenMP executable directive.
std::string getNameAsString() const
Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ c...
Represents a new-expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)"...
bool wasDeclaredWithTypename() const
Whether this template type parameter was declared with the 'typename' keyword.
ASTContext & getASTContext() const LLVM_READONLY
ObjCCategoryDecl * getCategoryDecl() const
void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D)
Represents the declaration of a label.
Represents a dependent using declaration which was not marked with typename.
void VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *Node)
static void dumpBasePath(raw_ostream &OS, const CastExpr *Node)
Represents a static or instance method of a struct/union/class.
QualType getLocallyUnqualifiedSingleStepDesugaredType() const
Pull a single level of sugar off of this locally-unqualified type.
std::string getValueAsString(unsigned Radix) const
void VisitMemberExpr(const MemberExpr *Node)
void VisitCallExpr(const CallExpr *Node)
bool canOverflow() const
Returns true if the unary operator can cause an overflow.
No ref-qualifier was provided.
C-style initialization with assignment.
const char * getNameStart() const
Return the beginning of the actual null-terminated string for this identifier.
This file defines OpenMP nodes for declarative directives.
bool isParameterPack() const
bool isLiteral(TokenKind K)
Return true if this is a "literal" kind, like a numeric constant, string, etc.
void VisitBlockDecl(const BlockDecl *D)
ObjCCategoryDecl - Represents a category declaration.
This is a basic class for representing single OpenMP clause.
UnaryExprOrTypeTrait getKind() const
bool isScoped() const
Returns true if this is a C++11 scoped enumeration.
static const TerminalColor NullColor
void VisitVarDecl(const VarDecl *D)
ObjCProtocolExpr used for protocol expression in Objective-C.
is AltiVec 'vector bool ...'
ConstructorUsingShadowDecl * getConstructedBaseClassShadowDecl() const
Get the inheriting constructor declaration for the base class for which we don't have an explicit ini...
Represents one property declaration in an Objective-C interface.
ImplicitCastExpr - Allows us to explicitly represent implicit type conversions, which have no direct ...
bool isFromASTFile() const
Determine whether this declaration came from an AST file (such as a precompiled header or module) rat...
void dumpDeclRef(const Decl *D, StringRef Label={})
bool isMessagingGetter() const
True if the property reference will result in a message to the getter.
void VisitCXXNewExpr(const CXXNewExpr *Node)
Qualifiers getIndexTypeQualifiers() const
Used for C's _Alignof and C++'s alignof.
void VisitVariableArrayType(const VariableArrayType *T)
bool isUsed(bool CheckUsedAttr=true) const
Whether any (re-)declaration of the entity was used, meaning that a definition is required...
bool isOriginalNamespace() const
Return true if this declaration is an original (first) declaration of the namespace.
VarDecl * getVariable() const
The variable being captured.
llvm::APSInt getAsIntegral() const
Retrieve the template argument as an integral value.
void printPretty(raw_ostream &OS, const ASTContext &Ctx, QualType Ty) const
void VisitInitListExpr(const InitListExpr *ILE)
void VisitFieldDecl(const FieldDecl *D)
An rvalue ref-qualifier was provided (&&).
SourceRange getBracketsRange() const
void VisitPackExpansionType(const PackExpansionType *T)
ObjCBoxedExpr - used for generalized expression boxing.
bool isArgumentType() const
ObjCImplementationDecl * getImplementation() const
Optional< unsigned > getNumExpansions() const
Retrieve the number of expansions that this pack expansion will generate, if known.
bool isPartOfExplicitCast() const
std::string getAsString() const
bool isInstantiationDependentType() const
Determine whether this type is an instantiation-dependent type, meaning that the type involves a temp...
void VisitObjCEncodeExpr(const ObjCEncodeExpr *Node)
Describes a module import declaration, which makes the contents of the named module visible in the cu...
protocol_range protocols() const
NonOdrUseReason isNonOdrUse() const
Is this expression a non-odr-use reference, and if so, why?
The injected class name of a C++ class template or class template partial specialization.
Represents a pack expansion of types.
CompoundAssignOperator - For compound assignments (e.g.
ArrayRef< Decl * > getModuleInitializers(Module *M)
Get the initializations to perform when importing a module, if any.
static const char * getStorageClassSpecifierString(StorageClass SC)
Return the string used to specify the storage class SC.
void VisitArrayType(const ArrayType *T)
Represents a C11 generic selection.
SourceRange getRange() const
void VisitIntegerLiteral(const IntegerLiteral *Node)
AddrLabelExpr - The GNU address of label extension, representing &&label.
ast_type_traits::DynTypedNode Node
void dumpAccessSpecifier(AccessSpecifier AS)
TLS with a dynamic initializer.
Represents a template argument.
bool isThisDeclarationReferenced() const
Whether this declaration was referenced.
This name appears as a potential result of a discarded value expression.
const ObjCInterfaceDecl * getClassInterface() const
NamespaceDecl * getNominatedNamespace()
Returns the namespace nominated by this using-directive.
Dataflow Directional Tag Classes.
bool isResultDependent() const
Whether this generic selection is result-dependent.
ExtInfo getExtInfo() const
not evaluated yet, for special member function
[C99 6.4.2.2] - A predefined identifier such as func.
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
static const TerminalColor AttrColor
Represents a delete expression for memory deallocation and destructor calls, e.g. ...
bool isNested() const
Whether this is a nested capture, i.e.
Kind getPropertyImplementation() const
bool hasInitStorage() const
True if this IfStmt has the storage for an init statement.
Represents a field injected from an anonymous union/struct into the parent scope. ...
void visitTextComment(const comments::TextComment *C, const comments::FullComment *)
QualType getUnderlyingType() const
AccessSpecifier getAccess() const
NamespaceDecl * getOriginalNamespace()
Get the original (first) namespace declaration.
unsigned getIndex() const
Retrieve the index of the template parameter.
DeclarationName getMember() const
Retrieve the name of the member that this expression refers to.
Represents a dependent using declaration which was marked with typename.
Represents the declaration of an Objective-C type parameter.
VectorKind getVectorKind() const
static std::string getAsString(SplitQualType split, const PrintingPolicy &Policy)
void VisitUnresolvedUsingType(const UnresolvedUsingType *T)
bool isListInitialization() const
Whether this constructor call was written as list-initialization.
const Type * getBaseClass() const
If this is a base class initializer, returns the type of the base class.
void VisitDeclRefExpr(const DeclRefExpr *Node)
PresumedLoc getPresumedLoc(SourceLocation Loc, bool UseLineDirectives=true) const
Returns the "presumed" location of a SourceLocation specifies.
bool isParameterPack() const
Determine whether this variable is actually a function parameter pack or init-capture pack...
void VisitObjCMessageExpr(const ObjCMessageExpr *Node)
SourceLocation getBeginLoc() const
Returns the starting location of the clause.
void VisitUsingShadowDecl(const UsingShadowDecl *D)
const ObjCInterfaceDecl * getClassInterface() const
llvm::APInt getValue() const
LabelDecl * getLabel() const
void VisitTypeTemplateArgument(const TemplateArgument &TA)
SourceLocation getEndLoc() const
Returns the ending location of the clause.
QualType getClassReceiver() const
Returns the type of a class message send, or NULL if the message is not a class message.
void VisitAddrLabelExpr(const AddrLabelExpr *Node)
SwitchStmt - This represents a 'switch' stmt.
bool needsOverloadResolutionForMoveConstructor() const
Determine whether we need to eagerly declare a defaulted move constructor for this class...
void Visit(const comments::Comment *C, const comments::FullComment *FC)
ObjCImplementationDecl - Represents a class definition - this is where method definitions are specifi...
FunctionDecl * SourceTemplate
The function template whose exception specification this is instantiated from, for EST_Uninstantiated...
Provides common interface for the Decls that cannot be redeclared, but can be merged if the same decl...
A helper class that allows the use of isa/cast/dyncast to detect TagType objects of structs/unions/cl...
void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *Node)
void VisitFunctionType(const FunctionType *T)
Represents a C++ base or member initializer.
unsigned getNumObjects() const
ObjCEncodeExpr, used for @encode in Objective-C.
bool isFromAST() const
Whether this type comes from an AST file.
void VisitConstantArrayType(const ConstantArrayType *T)
static void dumpPreviousDecl(raw_ostream &OS, const Decl *D)
Dump the previous declaration in the redeclaration chain for a declaration, if any.
static const TerminalColor CastColor
const llvm::APInt & getSize() const
static const TerminalColor TypeColor
Base for LValueReferenceType and RValueReferenceType.
static const TerminalColor DeclKindNameColor
SourceRange getBracketsRange() const
static const char * getCastKindName(CastKind CK)
void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *Node)
bool isArrow() const
Determine whether this member expression used the '->' operator; otherwise, it used the '...
Represents a base class of a C++ class.
A bitfield object is a bitfield on a C or C++ record.
void VisitCharacterLiteral(const CharacterLiteral *Node)
void VisitConceptDecl(const ConceptDecl *D)
ObjCIvarRefExpr - A reference to an ObjC instance variable.
bool capturesCXXThis() const
Describes an explicit type conversion that uses functional notion but could not be resolved because o...
GotoStmt - This represents a direct goto.
void VisitBinaryOperator(const BinaryOperator *Node)
TypedefNameDecl * getDecl() const
void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D)
unsigned getDepth() const
Call-style initialization (C++98)
void dumpName(const NamedDecl *ND)
MemberExpr - [C99 6.5.2.3] Structure and Union Members.
bool isMutable() const
Determines whether this field is mutable (C++ only).
static bool isTrivial(ASTContext &Ctx, const Expr *E)
Checks if the expression is constant or does not have non-trivial function calls. ...
Represents a C++ struct/union/class.
bool isNRVOVariable() const
Determine whether this local variable can be used with the named return value optimization (NRVO)...
void VisitUnaryTransformType(const UnaryTransformType *T)
void VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D)
Represents an explicit C++ type conversion that uses "functional" notation (C++ [expr.type.conv]).
ObjCIvarDecl - Represents an ObjC instance variable.
There is no such object (it's outside its lifetime).
WhileStmt - This represents a 'while' stmt.
void dumpBareDeclRef(const Decl *D)
CleanupObject getObject(unsigned i) const
Declaration of a class template.
void VisitObjCCompatibleAliasDecl(const ObjCCompatibleAliasDecl *D)
void VisitLinkageSpecDecl(const LinkageSpecDecl *D)
SourceRange getSourceRange() const LLVM_READONLY
SourceLocation tokens are not useful in isolation - they are low level value objects created/interpre...
bool isGlobalDelete() const
void VisitObjCInterfaceType(const ObjCInterfaceType *T)
StringLiteral - This represents a string literal expression, e.g.
void dumpType(QualType T)
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
TLS with a known-constant initializer.
QualType getIntegerType() const
Return the integer type this enum decl corresponds to.
StringRef getName() const
Get the name of identifier for this declaration as a StringRef.
void VisitEnumDecl(const EnumDecl *D)
RetTy Visit(PTR(Stmt) S, ParamTys... P)
NestedNameSpecifier * getQualifier() const
Retrieve the nested-name-specifier that qualifies the name.
bool constructsVirtualBase() const
Returns true if the constructed base class is a virtual base class subobject of this declaration's cl...
Abstract class common to all of the C++ "named"/"keyword" casts.
unsigned getNumElements() const
ObjCBoolLiteralExpr - Objective-C Boolean Literal.
bool isDependentType() const
Whether this type is a dependent type, meaning that its definition somehow depends on a template para...
QualType getAsType() const
Retrieve the type for a type template argument.
A reference to a declared variable, function, enum, etc.
Represents a type template specialization; the template must be a class template, a type alias templa...
ObjCPropertyDecl * getPropertyDecl() const
ObjCTypeParamVariance getVariance() const
Determine the variance of this type parameter.
bool isDeleted() const
Whether this function has been deleted.
void VisitAccessSpecDecl(const AccessSpecDecl *D)
const VarDecl * getCatchParamDecl() const
const char * getCastName() const
getCastName - Get the name of the C++ cast being used, e.g., "static_cast", "dynamic_cast", "reinterpret_cast", or "const_cast".
FieldDecl * getInitializedFieldInUnion()
If this initializes a union, specifies which field in the union to initialize.
bool isArraySubscriptRefExpr() const
QualType getTypeAsWritten() const
Retrieve the type that is being constructed, as specified in the source code.
static StringRef getNameForCallConv(CallingConv CC)
An l-value expression is a reference to an object with independent storage.
void VisitNamespaceDecl(const NamespaceDecl *D)
void VisitAutoType(const AutoType *T)
void VisitConstantExpr(const ConstantExpr *Node)
static const TerminalColor AddressColor
A trivial tuple used to represent a source range.
bool isModulePrivate() const
Whether this declaration was marked as being private to the module in which it was defined...
static StringRef getOpcodeStr(Opcode Op)
getOpcodeStr - Turn an Opcode enum value into the punctuation char it corresponds to...
ObjCMethodDecl * getGetterMethodDecl() const
CXXRecordDecl * getNominatedBaseClass() const
Get the base class that was named in the using declaration.
This represents a decl that may have a name.
A boolean literal, per ([C++ lex.bool] Boolean literals).
Represents a C array with a specified size that is not an integer-constant-expression.
void VisitObjCPropertyDecl(const ObjCPropertyDecl *D)
Represents a C++ namespace alias.
APValue::ValueKind getResultAPValueKind() const
void VisitCXXThisExpr(const CXXThisExpr *Node)
bool isInline() const
Whether this variable is (C++1z) inline.
TemplateName getAsTemplate() const
Retrieve the template name for a template name argument.
AccessControl getAccessControl() const
void VisitUnaryExprOrTypeTraitExpr(const UnaryExprOrTypeTraitExpr *Node)
void visitHTMLEndTagComment(const comments::HTMLEndTagComment *C, const comments::FullComment *)
Represents C++ using-directive.
Represents a #pragma detect_mismatch line.
void visitVerbatimLineComment(const comments::VerbatimLineComment *C, const comments::FullComment *)
double getValueAsApproximateDouble() const
getValueAsApproximateDouble - This returns the value as an inaccurate double.
attr::Kind getKind() const
The receiver is a superclass.
TemplateName getAsTemplateOrTemplatePattern() const
Retrieve the template argument as a template name; if the argument is a pack expansion, return the pattern as a template name.
unsigned getNumParams() const
Return the number of parameters this function must have based on its FunctionType.
SourceLocation getBegin() const
NamedDecl * getPack() const
Retrieve the parameter pack.
decls_iterator decls_end() const
ObjCCategoryImplDecl - An object of this class encapsulates a category @implementation declaration...
bool caseStmtIsGNURange() const
True if this case statement is of the form case LHS ...
Represents the canonical version of C arrays with a specified constant size.
This class handles loading and caching of source files into memory.
The parameter is invariant: must match exactly.
ExceptionSpecInfo ExceptionSpec
void VisitUnaryOperator(const UnaryOperator *Node)
void VisitLabelDecl(const LabelDecl *D)
Declaration of a template function.
void AddChild(Fn DoAddChild)
Add a child of the current node. Calls DoAddChild without arguments.
void VisitFunctionDecl(const FunctionDecl *D)
Attr - This represents one attribute.
bool isDeletedAsWritten() const
SourceLocation getLocation() const
void VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D)
Represents a shadow declaration introduced into a scope by a (resolved) using declaration.
QualType getType() const
Return the type wrapped by this type source info.
void VisitObjCBoxedExpr(const ObjCBoxedExpr *Node)
NamedDecl * getAliasedNamespace() const
Retrieve the namespace that this alias refers to, which may either be a NamespaceDecl or a NamespaceA...
ObjCCompatibleAliasDecl - Represents alias of a class.
static const TerminalColor UndeserializedColor
void VisitWhileStmt(const WhileStmt *Node)
void VisitStringLiteral(const StringLiteral *Str)
QualType getType() const
Retrieves the type of the base class.
void VisitRValueReferenceType(const ReferenceType *T)