Go to the documentation of this file.
15 #ifndef LLVM_CLANG_AST_ASTNODETRAVERSER_H
16 #define LLVM_CLANG_AST_ASTNODETRAVERSER_H
60 template <
typename Derived,
typename NodeDelegateType>
65 const comments::FullComment *>,
72 bool Deserialize =
false;
76 NodeDelegateType &getNodeDelegate() {
77 return getDerived().doGetNodeDelegate();
79 Derived &getDerived() {
return *
static_cast<Derived *
>(
this); }
92 getNodeDelegate().AddChild([=] {
93 getNodeDelegate().Visit(D);
99 for (
const auto &A : D->
attrs())
104 Visit(Comment, Comment);
107 if (!isa<FunctionDecl>(*D) && !isa<ObjCMethodDecl>(*D)) {
109 if (
const auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(D)) {
110 auto SK = CTSD->getSpecializationKind();
116 if (
const auto *DC = dyn_cast<DeclContext>(D))
123 getNodeDelegate().AddChild(
Label, [=] {
126 if (
auto *E = dyn_cast_or_null<Expr>(S)) {
131 S = E->IgnoreUnlessSpelledInSource();
136 getNodeDelegate().Visit(S);
145 if (isa<DeclStmt>(S) || isa<GenericSelectionExpr>(S) ||
146 isa<RequiresExpr>(S))
150 isa<LambdaExpr, CXXForRangeStmt, CallExpr,
151 CXXRewrittenBinaryOperator>(S))
154 for (
const Stmt *SubStmt : S->children())
164 getNodeDelegate().AddChild([=] {
165 getNodeDelegate().Visit(T);
171 getNodeDelegate().AddChild([=] {
172 getNodeDelegate().Visit(T);
179 if (SingleStepDesugar !=
QualType(T, 0))
180 Visit(SingleStepDesugar);
185 getNodeDelegate().AddChild([=] {
186 getNodeDelegate().Visit(A);
194 getNodeDelegate().AddChild([=] {
195 getNodeDelegate().Visit(Init);
196 Visit(Init->getInit());
201 const Decl *From =
nullptr,
const char *
Label =
nullptr) {
202 getNodeDelegate().AddChild([=] {
203 getNodeDelegate().Visit(A, R, From,
Label);
209 getNodeDelegate().AddChild([=] {
210 getNodeDelegate().Visit(C);
212 Visit(C.getCopyExpr());
217 getNodeDelegate().AddChild([=] {
218 getNodeDelegate().Visit(C);
219 for (
const auto *S : C->children())
225 getNodeDelegate().AddChild([=] {
226 getNodeDelegate().Visit(A);
228 Visit(TSI->getType());
229 Visit(A.getAssociationExpr());
234 getNodeDelegate().AddChild([=] {
235 getNodeDelegate().Visit(R);
238 if (
auto *TR = dyn_cast<concepts::TypeRequirement>(R)) {
239 if (!TR->isSubstitutionFailure())
240 Visit(TR->getType()->getType().getTypePtr());
241 }
else if (
auto *ER = dyn_cast<concepts::ExprRequirement>(R)) {
242 if (!ER->isExprSubstitutionFailure())
243 Visit(ER->getExpr());
244 if (!ER->getReturnTypeRequirement().isEmpty())
245 Visit(ER->getReturnTypeRequirement()
247 ->getImmediatelyDeclaredConstraint());
248 }
else if (
auto *NR = dyn_cast<concepts::NestedRequirement>(R)) {
249 if (!NR->isSubstitutionFailure())
250 Visit(NR->getConstraintExpr());
256 getNodeDelegate().AddChild([=] { getNodeDelegate().Visit(
Value, Ty); });
260 getNodeDelegate().AddChild([=] {
261 getNodeDelegate().Visit(C, FC);
277 if (
const auto *D = N.
get<
Decl>())
279 else if (
const auto *S = N.
get<
Stmt>())
283 else if (
const auto *T = N.
get<
Type>())
305 for (
const auto &TP : *TPL)
308 if (
const Expr *RC = TPL->getRequiresClause())
322 const Decl *From =
nullptr,
323 const char *
Label =
nullptr) {
328 for (
unsigned i = 0, e = TAL.
size(); i < e; ++i)
336 for (
const auto &typeParam : *typeParams) {
401 for (
const auto &Arg : *T)
438 if (
const auto *C = dyn_cast<CXXConstructorDecl>(D))
439 for (
const auto *I : C->inits())
507 template <
typename SpecializationDecl>
509 for (
const auto *RedeclWithBadType : D->redecls()) {
513 auto *Redecl = dyn_cast<SpecializationDecl>(RedeclWithBadType);
518 assert(isa<CXXRecordDecl>(RedeclWithBadType) &&
519 "expected an injected-class-name");
526 template <
typename TemplateDecl>
533 for (
const auto *Child : D->specializations())
596 Visit(TC->getImmediatelyDeclaredConstraint());
633 Visit(TD->getTypeForDecl());
661 for (
const auto &I : D->
inits())
675 for (
const auto &D :
Node->decls())
680 for (
const auto *A :
Node->getAttrs())
693 for (
const auto *C :
Node->clauses())
699 Visit(Filler,
"array_filler");
706 if (
Expr *Source =
Node->getSourceExpr())
728 for (
unsigned I = 0, N =
Node->capture_size(); I != N; ++I) {
729 const auto *C =
Node->capture_begin() + I;
730 if (!C->isExplicit())
732 if (
Node->isInitCapture(C))
733 Visit(C->getCapturedVar());
738 for (
const auto *
P :
Node->getCallOperator()->parameters())
747 if (
Node->isPartiallySubstituted())
748 for (
const auto &A :
Node->getPartialArguments())
762 if (
const VarDecl *CatchParam =
Node->getCatchParamDecl())
776 for (
const auto *Child :
777 make_filter_range(
Node->children(), [
this](
const Stmt *Child) {
778 if (Traversal != TK_IgnoreUnlessSpelledInSource)
780 return !isa<CXXDefaultArgExpr>(Child);
809 #include "clang/AST/AttrNodeTraverse.inc"
814 #endif // LLVM_CLANG_AST_ASTNODETRAVERSER_H
TemplateParameterList * getTemplateParameters() const
Get the list of template parameters.
NamedDecl * getTemplatedDecl() const
Get the underlying, templated declaration.
Represents an ObjC class declaration.
This represents '#pragma omp allocate ...' directive.
Represents a reference to a non-type template parameter that has been substituted with a template arg...
TraversalKind
Defines how we descend a level in the AST when we pass through expressions.
Expr * getConstraintExpr() const
Expr * getInitializer()
Get initializer expression (if specified) of the declare reduction construct.
bool doesThisDeclarationHaveABody() const
Returns whether this specific declaration of the function has a body.
ASTContext & getASTContext() const LLVM_READONLY
bool isDefaulted() const
Whether this function is defaulted.
ArrayRef< ParmVarDecl * > parameters() const
void VisitConceptSpecializationExpr(const ConceptSpecializationExpr *CSE)
void VisitCXXCatchStmt(const CXXCatchStmt *Node)
void VisitOMPAllocateDecl(const OMPAllocateDecl *D)
decl_range decls() const
decls_begin/decls_end - Iterate over the declarations stored in this context.
void Visit(const DynTypedNode &N)
Expr * getSizeExpr() const
const DefArgStorage & getDefaultArgStorage() const
QualType getType() const
Return the type wrapped by this type source info.
bool hasDefaultArgument() const
Determine whether this template parameter has a default argument.
bool defaultArgumentWasInherited() const
Determines whether the default argument was inherited from a previous declaration of this template.
void VisitConceptDecl(const ConceptDecl *D)
An attributed type is a type to which a type attribute has been applied.
void VisitInitListExpr(const InitListExpr *ILE)
AssociationTy< true > ConstAssociation
TemplateArgument getArgumentPack() const
void VisitFunctionTemplateDecl(const FunctionTemplateDecl *D)
A trivial tuple used to represent a source range.
ArrayRef< BindingDecl * > bindings() const
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
void VisitNonTypeTemplateParmDecl(const NonTypeTemplateParmDecl *D)
void dumpTemplateParameters(const TemplateParameterList *TPL)
@ Parameter
The parameter type of a method or function.
QualType getDefaultArgument() const
Retrieve the default argument, if any.
void VisitBTFTagAttributedType(const BTFTagAttributedType *T)
void VisitAttributedStmt(const AttributedStmt *Node)
QualType getElementType() const
void dumpDeclContext(const DeclContext *DC)
ArrayRef< TemplateArgument > pack_elements() const
Iterator range referencing all of the elements of a template argument pack.
ObjCImplementationDecl - Represents a class definition - this is where method definitions are specifi...
TemplateParameterList * getTemplateParameters() const
Get the list of template parameters.
Expr * getSizeExpr() const
void VisitUsingShadowDecl(const UsingShadowDecl *D)
ArrayRef< concepts::Requirement * > getRequirements() const
A binding in a decomposition declaration.
Represents a reference to a non-type template parameter pack that has been substituted with a non-tem...
This represents '#pragma omp threadprivate ...' directive.
void VisitCXXForRangeStmt(const CXXForRangeStmt *Node)
void VisitDeclStmt(const DeclStmt *Node)
void VisitVectorType(const VectorType *T)
NamedDecl * getUnderlyingDecl()
Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl.
A (possibly-)qualified type.
NonTypeTemplateParmDecl - Declares a non-type template parameter, e.g., "Size" in.
const DefArgStorage & getDefaultArgStorage() const
Declaration of a function specialization at template class scope.
Expr * getUnderlyingExpr() const
Represents a member of a struct/union/class.
C++2a [expr.prim.req]: A requires-expression provides a concise way to express requirements on templa...
void VisitObjCMethodDecl(const ObjCMethodDecl *D)
association_range associations()
Expr * getInClassInitializer() const
Get the C++11 default member initializer for this member, or null if one has not been set.
Represents a parameter to a function.
QualType getPointeeType() const
Gets the type pointed to by this ObjC pointer.
const Expr * getInitExpr() const
Represents a shadow declaration implicitly introduced into a scope by a (resolved) using-declaration ...
Represents a type template specialization; the template must be a class template, a type alias templa...
Stmt * getBody() const override
getBody - If this Decl represents a declaration for a body of code, such as a function or method defi...
Holds a QualType and a TypeSourceInfo* that came out of a declarator parsing.
FunctionTemplateSpecializationInfo * getTemplateSpecializationInfo() const
If this function is actually a function template specialization, retrieve information about this func...
QualType getElementType() const
Describes an C or C++ initializer list.
void VisitCXXRewrittenBinaryOperator(const CXXRewrittenBinaryOperator *Node)
void VisitObjCAtCatchStmt(const ObjCAtCatchStmt *Node)
clauselist_range clauselists()
void VisitUnaryTransformType(const UnaryTransformType *T)
bool hasDefaultArgument() const
Determine whether this template parameter has a default argument.
void VisitBlockExpr(const BlockExpr *Node)
const TemplateArgumentList & getTemplateArgs() const
Retrieve the template arguments of the variable template specialization.
void VisitObjCObjectPointerType(const ObjCObjectPointerType *T)
void VisitFunctionProtoType(const FunctionProtoType *T)
void VisitFunctionType(const FunctionType *T)
Expr * getControllingExpr()
Return the controlling expression of this generic selection expression.
FunctionType - C99 6.7.5.3 - Function Declarators.
Represents a variable template specialization, which refers to a variable template with a given set o...
comments::FullComment * getLocalCommentForDeclUncached(const Decl *D) const
Return parsed documentation comment attached to a given declaration.
Represents the body of a CapturedStmt, and serves as its DeclContext.
void VisitDecltypeType(const DecltypeType *T)
const TemplateTypeParmType * getReplacedParameter() const
Gets the template parameter that was substituted for.
Expr * getAsExpr() const
Retrieve the template argument as an expression.
bool getDeserialize() const
llvm::ArrayRef< TemplateArgumentLoc > arguments() const
void VisitPointerType(const PointerType *T)
void VisitClassTemplateDecl(const ClassTemplateDecl *D)
OpaqueValueExpr - An expression referring to an opaque object of a fixed type and value class.
The base class of the type hierarchy.
bool hasDefaultArgument() const
Determine whether this template parameter has a default argument.
const TemplateTypeParmType * getReplacedParameter() const
Gets the template parameter that was substituted for.
void VisitMemberPointerType(const MemberPointerType *T)
decl_range noload_decls() const
noload_decls_begin/end - Iterate over the declarations stored in this context that are currently load...
void VisitSizeOfPackExpr(const SizeOfPackExpr *Node)
ArrayRef< Capture > captures() const
QualType getPointeeType() const
TypeAliasDecl * getTemplatedDecl() const
Get the underlying function declaration of the template.
void Visit(const Type *T)
void VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D)
void VisitEnumConstantDecl(const EnumConstantDecl *D)
void VisitBlockDecl(const BlockDecl *D)
Declaration of a template function.
Represents an attribute applied to a statement.
@ TSK_ExplicitInstantiationDeclaration
This template specialization was instantiated from a template due to an explicit instantiation declar...
QualType getPattern() const
Retrieve the pattern of this pack expansion, which is the type that will be repeatedly instantiated w...
bool defaultArgumentWasInherited() const
Determines whether the default argument was inherited from a previous declaration of this template.
Represents Objective-C's @catch statement.
const ASTTemplateArgumentListInfo * getTemplateArgsAsWritten() const
A simple visitor class that helps create template argument visitors.
void VisitAtomicType(const AtomicType *T)
const TemplateArgumentList & getTemplateArgs() const
Retrieve the template arguments of the class template specialization.
Represents a pack expansion of types.
This represents '#pragma omp declare reduction ...' directive.
A rewritten comparison expression that was originally written using operator syntax.
Represents an expression that computes the length of a parameter pack.
Represents a block literal declaration, which is like an unnamed FunctionDecl.
void VisitReferenceType(const ReferenceType *T)
void VisitClassScopeFunctionSpecializationDecl(const ClassScopeFunctionSpecializationDecl *D)
void Visit(const comments::Comment *C, const comments::FullComment *FC)
This is a basic class for representing single OpenMP clause.
void VisitDependentSizedArrayType(const DependentSizedArrayType *T)
NonTypeTemplateParmDecl * getParameterPack() const
Retrieve the non-type template parameter pack being substituted.
A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...
Declaration of a C++2a concept.
void VisitFriendDecl(const FriendDecl *D)
Represents a GCC generic vector type.
Expr * getBitWidth() const
const ASTTemplateArgumentListInfo * getTemplateArgsAsWritten() const
Represents the specialization of a concept - evaluates to a prvalue of type bool.
NamedDecl * getFriendDecl() const
If this friend declaration doesn't name a type, return the inner declaration.
void VisitFileScopeAsmDecl(const FileScopeAsmDecl *D)
Represents an array type, per C99 6.7.5.2 - Array Declarators.
ASTNodeTraverser traverses the Clang AST for dumping purposes.
void VisitOpaqueValueExpr(const OpaqueValueExpr *Node)
QualType getPointeeType() const
void VisitCapturedDecl(const CapturedDecl *D)
A decomposition declaration.
Stmt * getBody(const FunctionDecl *&Definition) const
Retrieve the body (definition) of the function.
void VisitSubstTemplateTypeParmPackType(const SubstTemplateTypeParmPackType *T)
Represents a template argument.
A static requirement that can be used in a requires-expression to check properties of types and expre...
StringLiteral * getMessage()
void dumpTemplateDecl(const TemplateDecl *D)
void Visit(PTR(Stmt) S, ParamTys... P)
void VisitSubstNonTypeTemplateParmPackExpr(const SubstNonTypeTemplateParmPackExpr *E)
void dumpTemplateArgumentLoc(const TemplateArgumentLoc &A, const Decl *From=nullptr, const char *Label=nullptr)
TypeSourceInfo * getTypeSourceInfo() const
void VisitClassTemplateSpecializationDecl(const ClassTemplateSpecializationDecl *D)
QualType getUnderlyingType() const
bool isa(CodeGen::Address addr)
Expr * getSizeExpr() const
SourceRange getSourceRange() const LLVM_READONLY
Location wrapper for a TemplateArgument.
void Visit(const CXXCtorInitializer *Init)
FriendDecl - Represents the declaration of a friend entity, which can be a function,...
TemplateTemplateParmDecl - Declares a template template parameter, e.g., "T" in.
void VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D)
void VisitPipeType(const PipeType *T)
Represents a variable declaration or definition.
const TemplateArgument & getArgument() const
ArrayRef< QualType > getParamTypes() const
void VisitPackTemplateArgument(const TemplateArgument &TA)
bool hasExplicitTemplateArgs() const
Whether or not template arguments were explicitly specified in the concept reference (they might not ...
This represents '#pragma omp declare mapper ...' directive.
Stores a list of template parameters for a TemplateDecl and its derived classes.
@ TSK_ExplicitInstantiationDefinition
This template specialization was instantiated from a template due to an explicit instantiation defini...
void VisitObjCCategoryDecl(const ObjCCategoryDecl *D)
This captures a statement into a function.
Expr * getTrailingRequiresClause()
Get the constraint-expression introduced by the trailing requires-clause in the function/member decla...
const Type * Ty
The locally-unqualified type.
void VisitTemplateTemplateParmDecl(const TemplateTemplateParmDecl *D)
void VisitTypedefDecl(const TypedefDecl *D)
Represents the result of substituting a type for a template type parameter.
An instance of this object exists for each enum constant that is defined.
ObjCTypeParamList * getTypeParamListAsWritten() const
Retrieve the type parameters written on this particular declaration of the class.
const Type * getClass() const
QualType getLocallyUnqualifiedSingleStepDesugaredType() const
Pull a single level of sugar off of this locally-unqualified type.
void Visit(const TemplateArgument &A, SourceRange R={}, const Decl *From=nullptr, const char *Label=nullptr)
void VisitLocInfoType(const LocInfoType *T)
ArrayRef< ParmVarDecl * > getLocalParameters() const
Represents the result of substituting a set of types for a template type parameter pack.
void VisitBindingDecl(const BindingDecl *D)
void VisitStaticAssertDecl(const StaticAssertDecl *D)
QualType getValueType() const
Gets the type contained by this atomic type, i.e.
A simple visitor class that helps create attribute visitors.
Declaration of a template type parameter.
Represents a type which was implicitly adjusted by the semantic engine for arbitrary reasons.
bool isImplicit() const
isImplicit - Indicates whether the declaration was implicitly generated by the implementation.
SplitQualType split() const
Divides a QualType into its unqualified type and a set of local qualifiers.
TemplateParameterList * getTemplateParameters() const
Get the list of template parameters.
void VisitArrayType(const ArrayType *T)
void VisitTypeAliasDecl(const TypeAliasDecl *D)
ObjCCategoryDecl - Represents a category declaration.
void VisitAdjustedType(const AdjustedType *T)
void VisitDecompositionDecl(const DecompositionDecl *D)
Represents a pointer to an Objective C object.
void VisitTypeTemplateArgument(const TemplateArgument &TA)
bool defaultArgumentWasInherited() const
Determines whether the default argument was inherited from a previous declaration of this template.
void VisitOMPThreadPrivateDecl(const OMPThreadPrivateDecl *D)
void VisitClassTemplatePartialSpecializationDecl(const ClassTemplatePartialSpecializationDecl *D)
void VisitCallExpr(const CallExpr *Node)
Represents an array type in C++ whose size is a value-dependent expression.
void dumpObjCTypeParamList(const ObjCTypeParamList *typeParams)
Represents a C array with a specified size that is not an integer-constant-expression.
bool isBitField() const
Determines whether this field is a bitfield.
TraversalKind GetTraversalKind() const
void VisitLambdaExpr(const LambdaExpr *Node)
Expr * getDefaultArgument() const
Retrieve the default argument, if any.
const TypeConstraint * getTypeConstraint() const
Returns the type constraint associated with this template parameter (if any).
Represents a C++11 static_assert declaration.
Declaration of a class template.
Complex values, per C99 6.2.5p11.
A simple visitor class that helps create declaration visitors.
QualType getWrappedType() const
Represents the type decltype(expr) (C++11).
NonTypeTemplateParmDecl * getParameter() const
Represents a prototype with parameter type info, e.g.
Pseudo declaration for capturing expressions.
@ TK_AsIs
Will traverse all child nodes.
Expr * getUnderlyingExpr() const
void VisitVarDecl(const VarDecl *D)
The base class of all kinds of template declarations (e.g., class, function, etc.).
QualType getPointeeType() const
BlockExpr - Adaptor class for mixing a BlockDecl with expressions.
Decl - This represents one declaration (or definition), e.g.
void VisitOMPExecutableDirective(const OMPExecutableDirective *Node)
void dumpTemplateArgumentList(const TemplateArgumentList &TAL)
CXXMethodDecl * getSpecialization() const
Stmt * getBody() const override
getBody - If this Decl represents a declaration for a body of code, such as a function or method defi...
void VisitBuiltinTemplateDecl(const BuiltinTemplateDecl *D)
QualType getElementType() const
void Visit(const Attr *A)
Expr * getArrayFiller()
If this initializer list initializes an array with more elements than there are initializers in the l...
void Visit(const Decl *D)
bool hasQualifiers() const
Return true if the set contains any qualifiers.
@ TK_IgnoreUnlessSpelledInSource
Ignore AST nodes not written in the source.
A template argument list.
void Visit(REF(TemplateArgument) TA, ParamTys... P)
const Expr * getInit() const
A std::pair-like structure for storing a qualified type split into its local qualifiers and its local...
ConstStmtVisitor - This class implements a simple visitor for Stmt subclasses.
Represents the declaration of a typedef-name via the 'typedef' type specifier.
Expr * getCombiner()
Get combiner expression of the declare reduction construct.
This is a basic class for representing single OpenMP executable directive.
Represents a typeof (or typeof) expression (a GCC extension).
void VisitGenericSelectionExpr(const GenericSelectionExpr *E)
CXXForRangeStmt - This represents C++0x [stmt.ranged]'s ranged for statement, represented as 'for (ra...
A pointer to member type per C++ 8.3.3 - Pointers to members.
const DefArgStorage & getDefaultArgStorage() const
void VisitComplexType(const ComplexType *T)
DeclStmt - Adaptor class for mixing declarations with statements and expressions.
Stmt * getBody() const override
Retrieve the body of this method, if it has one.
bool isCXXForRangeDecl() const
Determine whether this variable is the for-range-declaration in a C++0x for-range statement.
void VisitOMPCapturedExprDecl(const OMPCapturedExprDecl *D)
void setDeserialize(bool D)
ObjCMethodDecl - Represents an instance or class method declaration.
PointerType - C99 6.7.5.1 - Pointer Declarators.
void VisitAttributedType(const AttributedType *T)
bool hasBody() const override
Determine whether this method has a body.
void VisitFieldDecl(const FieldDecl *D)
void VisitFunctionDecl(const FunctionDecl *D)
void SetTraversalKind(TraversalKind TK)
Stores a list of Objective-C type parameters for a parameterized class or a category/extension thereo...
const TemplateArgumentLoc & getDefaultArgument() const
Retrieve the default argument, if any.
void VisitExpressionTemplateArgument(const TemplateArgument &TA)
void Visit(const APValue &Value, QualType Ty)
QualType getElementType() const
void VisitOMPDeclareReductionDecl(const OMPDeclareReductionDecl *D)
const StringLiteral * getAsmString() const
Stmt - This represents one statement.
void Visit(const BlockDecl::Capture &C)
void Visit(const Stmt *Node, StringRef Label={})
CXXCatchStmt - This represents a C++ catch block.
Represents a C11 generic selection.
void Visit(const GenericSelectionExpr::ConstAssociation &A)
void VisitTemplateSpecializationType(const TemplateSpecializationType *T)
Attr - This represents one attribute.
A container of type source information.
QualType getReturnType() const
Expr * getPlaceholderTypeConstraint() const
Return the constraint introduced by the placeholder type of this non-type template parameter (if any)...
ObjCTypeParamList * getTypeParamList() const
Retrieve the type parameter list associated with this category or extension.
void VisitOMPDeclareMapperDecl(const OMPDeclareMapperDecl *D)
void VisitVarTemplateDecl(const VarTemplateDecl *D)
void VisitSubstNonTypeTemplateParmExpr(const SubstNonTypeTemplateParmExpr *E)
const T * get() const
Retrieve the stored node as type T.
RetTy Visit(const Type *T)
Performs the operation associated with this visitor object.
Represents the builtin template declaration which is used to implement __make_integer_seq and other b...
param_iterator param_begin()
void VisitDependentSizedExtVectorType(const DependentSizedExtVectorType *T)
void VisitRequiresExpr(const RequiresExpr *E)
Declaration of an alias template.
void Visit(const OMPClause *C)
A dynamically typed AST node container.
Expr * getBinding() const
Get the expression to which this declaration is bound.
ArrayRef< ParmVarDecl * > parameters() const
Base for LValueReferenceType and RValueReferenceType.
QualType getPointeeType() const
APValue - This class implements a discriminated union of [uninitialized] [APSInt] [APFloat],...
Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>".
const ParmDecl * getInheritedFrom() const
Get the parameter from which we inherit the default argument, if any.
void VisitVarTemplateSpecializationDecl(const VarTemplateSpecializationDecl *D)
TemplateArgument getArgumentPack() const
Retrieve the template argument pack containing the substituted template arguments.
Represents the declaration of a typedef-name via a C++11 alias-declaration.
Declaration of a variable template.
void VisitVariableArrayType(const VariableArrayType *T)
QualType getElementType() const
This represents one expression.
void dumpASTTemplateArgumentListInfo(const ASTTemplateArgumentListInfo *TALI)
void VisitBlockPointerType(const BlockPointerType *T)
Represents a C++ base or member initializer.
A class which contains all the information about a particular captured value.
void VisitTypeAliasTemplateDecl(const TypeAliasTemplateDecl *D)
clauselist_range clauselists()
Represents a class template specialization, which refers to a class template with a given set of temp...
bool isThisDeclarationADefinition() const
Returns whether this specific method is a definition.
Represents an extended vector type where either the type or size is dependent.
ArrayRef< ParmVarDecl * > parameters() const
QualType getModifiedType() const
Qualifiers Quals
The local qualifiers.
unsigned size() const
Retrieve the number of template arguments in this template argument list.
Represents a function declaration or definition.
void VisitVarTemplatePartialSpecializationDecl(const VarTemplatePartialSpecializationDecl *D)
void VisitObjCImplementationDecl(const ObjCImplementationDecl *D)
CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).
void VisitSubstTemplateTypeParmType(const SubstTemplateTypeParmType *T)
void dumpTemplateDeclSpecialization(const SpecializationDecl *D)
QualType getOriginalType() const
void VisitCapturedStmt(const CapturedStmt *Node)
void Visit(const concepts::Requirement *R)
TypeSourceInfo * getFriendType() const
If this friend declaration names an (untemplated but possibly dependent) type, return the type; other...
void VisitTypeOfExprType(const TypeOfExprType *T)
QualType getAsType() const
Retrieve the type for a type template argument.
void VisitPackExpansionType(const PackExpansionType *T)