clang API Documentation
A semantic tree transformation that allows one to transform one abstract syntax tree into another. More...
#include <TreeTransform.h>
Classes | |
class | ForgetPartiallySubstitutedPackRAII |
Private RAII object that helps us forget and then re-remember the template argument corresponding to a partially-substituted parameter pack. | |
class | TemporaryBase |
RAII object that temporarily sets the base location and entity used for reporting diagnostics in types. More... | |
Public Types | |
typedef std::pair< ExprResult, QualType > | InitCaptureInfoTy |
Public Member Functions | |
TreeTransform (Sema &SemaRef) | |
Initializes a new tree transformer. | |
Derived & | getDerived () |
Retrieves a reference to the derived class. | |
const Derived & | getDerived () const |
Retrieves a reference to the derived class. | |
Sema & | getSema () const |
Retrieves a reference to the semantic analysis object used for this tree transform. | |
bool | AlwaysRebuild () |
Whether the transformation should always rebuild AST nodes, even if none of the children have changed. | |
SourceLocation | getBaseLocation () |
Returns the location of the entity being transformed, if that information was not available elsewhere in the AST. | |
DeclarationName | getBaseEntity () |
Returns the name of the entity being transformed, if that information was not available elsewhere in the AST. | |
void | setBase (SourceLocation Loc, DeclarationName Entity) |
Sets the "base" location and entity when that information is known based on another transformation. | |
bool | AlreadyTransformed (QualType T) |
Determine whether the given type T has already been transformed. | |
bool | DropCallArgument (Expr *E) |
Determine whether the given call argument should be dropped, e.g., because it is a default argument. | |
bool | TryExpandParameterPacks (SourceLocation EllipsisLoc, SourceRange PatternRange, ArrayRef< UnexpandedParameterPack > Unexpanded, bool &ShouldExpand, bool &RetainExpansion, Optional< unsigned > &NumExpansions) |
Determine whether we should expand a pack expansion with the given set of parameter packs into separate arguments by repeatedly transforming the pattern. | |
TemplateArgument | ForgetPartiallySubstitutedPack () |
"Forget" about the partially-substituted pack template argument, when performing an instantiation that must preserve the parameter pack use. | |
void | RememberPartiallySubstitutedPack (TemplateArgument Arg) |
"Remember" the partially-substituted pack template argument after performing an instantiation that must preserve the parameter pack use. | |
void | ExpandingFunctionParameterPack (ParmVarDecl *Pack) |
Note to the derived class when a function parameter pack is being expanded. | |
QualType | TransformType (QualType T) |
Transforms the given type into another type. | |
TypeSourceInfo * | TransformType (TypeSourceInfo *DI) |
Transforms the given type-with-location into a new type-with-location. | |
QualType | TransformType (TypeLocBuilder &TLB, TypeLoc TL) |
Transform the given type-with-location into a new type, collecting location information in the given builder as necessary. | |
StmtResult | TransformStmt (Stmt *S) |
Transform the given statement. | |
OMPClause * | TransformOMPClause (OMPClause *S) |
Transform the given statement. | |
const Attr * | TransformAttr (const Attr *S) |
Transform the given attribute. | |
ExprResult | TransformExpr (Expr *E) |
Transform the given expression. | |
ExprResult | TransformInitializer (Expr *Init, bool NotCopyInit) |
Transform the given initializer. | |
bool | TransformExprs (Expr **Inputs, unsigned NumInputs, bool IsCall, SmallVectorImpl< Expr * > &Outputs, bool *ArgChanged=nullptr) |
Transform the given list of expressions. | |
Decl * | TransformDecl (SourceLocation Loc, Decl *D) |
Transform the given declaration, which is referenced from a type or expression. | |
void | transformAttrs (Decl *Old, Decl *New) |
Transform the attributes associated with the given declaration and place them on the new declaration. | |
void | transformedLocalDecl (Decl *Old, Decl *New) |
Note that a local declaration has been transformed by this transformer. | |
Decl * | TransformDefinition (SourceLocation Loc, Decl *D) |
Transform the definition of the given declaration. | |
NamedDecl * | TransformFirstQualifierInScope (NamedDecl *D, SourceLocation Loc) |
Transform the given declaration, which was the first part of a nested-name-specifier in a member access expression. | |
NestedNameSpecifierLoc | TransformNestedNameSpecifierLoc (NestedNameSpecifierLoc NNS, QualType ObjectType=QualType(), NamedDecl *FirstQualifierInScope=nullptr) |
Transform the given nested-name-specifier with source-location information. | |
DeclarationNameInfo | TransformDeclarationNameInfo (const DeclarationNameInfo &NameInfo) |
Transform the given declaration name. | |
TemplateName | TransformTemplateName (CXXScopeSpec &SS, TemplateName Name, SourceLocation NameLoc, QualType ObjectType=QualType(), NamedDecl *FirstQualifierInScope=nullptr) |
Transform the given template name. | |
bool | TransformTemplateArgument (const TemplateArgumentLoc &Input, TemplateArgumentLoc &Output) |
Transform the given template argument. | |
bool | TransformTemplateArguments (const TemplateArgumentLoc *Inputs, unsigned NumInputs, TemplateArgumentListInfo &Outputs) |
Transform the given set of template arguments. | |
template<typename InputIterator > | |
bool | TransformTemplateArguments (InputIterator First, InputIterator Last, TemplateArgumentListInfo &Outputs) |
Transform the given set of template arguments. | |
void | InventTemplateArgumentLoc (const TemplateArgument &Arg, TemplateArgumentLoc &ArgLoc) |
Fakes up a TemplateArgumentLoc for a given TemplateArgument. | |
TypeSourceInfo * | InventTypeSourceInfo (QualType T) |
Fakes up a TypeSourceInfo for a type. | |
template<typename Fn > | |
QualType | TransformFunctionProtoType (TypeLocBuilder &TLB, FunctionProtoTypeLoc TL, CXXRecordDecl *ThisContext, unsigned ThisTypeQuals, Fn TransformExceptionSpec) |
bool | TransformExceptionSpec (SourceLocation Loc, FunctionProtoType::ExceptionSpecInfo &ESI, SmallVectorImpl< QualType > &Exceptions, bool &Changed) |
StmtResult | TransformSEHHandler (Stmt *Handler) |
QualType | TransformTemplateSpecializationType (TypeLocBuilder &TLB, TemplateSpecializationTypeLoc TL, TemplateName Template) |
QualType | TransformDependentTemplateSpecializationType (TypeLocBuilder &TLB, DependentTemplateSpecializationTypeLoc TL, TemplateName Template, CXXScopeSpec &SS) |
QualType | TransformDependentTemplateSpecializationType (TypeLocBuilder &TLB, DependentTemplateSpecializationTypeLoc TL, NestedNameSpecifierLoc QualifierLoc) |
bool | TransformFunctionTypeParams (SourceLocation Loc, ParmVarDecl **Params, unsigned NumParams, const QualType *ParamTypes, SmallVectorImpl< QualType > &PTypes, SmallVectorImpl< ParmVarDecl * > *PVars) |
Transforms the parameters of a function type into the given vectors. | |
ParmVarDecl * | TransformFunctionTypeParam (ParmVarDecl *OldParm, int indexAdjustment, Optional< unsigned > NumExpansions, bool ExpectParameterPack) |
Transforms a single function-type parameter. Return null on error. | |
QualType | TransformReferenceType (TypeLocBuilder &TLB, ReferenceTypeLoc TL) |
StmtResult | TransformCompoundStmt (CompoundStmt *S, bool IsStmtExpr) |
ExprResult | TransformCXXNamedCastExpr (CXXNamedCastExpr *E) |
ExprResult | TransformLambdaScope (LambdaExpr *E, CXXMethodDecl *CallOperator, ArrayRef< InitCaptureInfoTy > InitCaptureExprsAndTypes) |
Transform the captures and body of a lambda expression. | |
TemplateParameterList * | TransformTemplateParameterList (TemplateParameterList *TPL) |
ExprResult | TransformAddressOfOperand (Expr *E) |
The operand of a unary address-of operator has special rules: it's allowed to refer to a non-static member of a class even if there's no 'this' object available. | |
ExprResult | TransformDependentScopeDeclRefExpr (DependentScopeDeclRefExpr *E, bool IsAddressOfOperand, TypeSourceInfo **RecoveryTSI) |
ExprResult | TransformParenDependentScopeDeclRefExpr (ParenExpr *PE, DependentScopeDeclRefExpr *DRE, bool IsAddressOfOperand, TypeSourceInfo **RecoveryTSI) |
StmtResult | TransformOMPExecutableDirective (OMPExecutableDirective *S) |
QualType | RebuildPointerType (QualType PointeeType, SourceLocation Sigil) |
Build a new pointer type given its pointee type. | |
QualType | RebuildBlockPointerType (QualType PointeeType, SourceLocation Sigil) |
Build a new block pointer type given its pointee type. | |
QualType | RebuildReferenceType (QualType ReferentType, bool LValue, SourceLocation Sigil) |
Build a new reference type given the type it references. | |
QualType | RebuildMemberPointerType (QualType PointeeType, QualType ClassType, SourceLocation Sigil) |
Build a new member pointer type given the pointee type and the class type it refers into. | |
QualType | RebuildArrayType (QualType ElementType, ArrayType::ArraySizeModifier SizeMod, const llvm::APInt *Size, Expr *SizeExpr, unsigned IndexTypeQuals, SourceRange BracketsRange) |
Build a new array type given the element type, size modifier, size of the array (if known), size expression, and index type qualifiers. | |
QualType | RebuildConstantArrayType (QualType ElementType, ArrayType::ArraySizeModifier SizeMod, const llvm::APInt &Size, unsigned IndexTypeQuals, SourceRange BracketsRange) |
Build a new constant array type given the element type, size modifier, (known) size of the array, and index type qualifiers. | |
QualType | RebuildIncompleteArrayType (QualType ElementType, ArrayType::ArraySizeModifier SizeMod, unsigned IndexTypeQuals, SourceRange BracketsRange) |
Build a new incomplete array type given the element type, size modifier, and index type qualifiers. | |
QualType | RebuildVariableArrayType (QualType ElementType, ArrayType::ArraySizeModifier SizeMod, Expr *SizeExpr, unsigned IndexTypeQuals, SourceRange BracketsRange) |
Build a new variable-length array type given the element type, size modifier, size expression, and index type qualifiers. | |
QualType | RebuildDependentSizedArrayType (QualType ElementType, ArrayType::ArraySizeModifier SizeMod, Expr *SizeExpr, unsigned IndexTypeQuals, SourceRange BracketsRange) |
Build a new dependent-sized array type given the element type, size modifier, size expression, and index type qualifiers. | |
QualType | RebuildVectorType (QualType ElementType, unsigned NumElements, VectorType::VectorKind VecKind) |
Build a new vector type given the element type and number of elements. | |
QualType | RebuildExtVectorType (QualType ElementType, unsigned NumElements, SourceLocation AttributeLoc) |
Build a new extended vector type given the element type and number of elements. | |
QualType | RebuildDependentSizedExtVectorType (QualType ElementType, Expr *SizeExpr, SourceLocation AttributeLoc) |
Build a new potentially dependently-sized extended vector type given the element type and number of elements. | |
QualType | RebuildFunctionProtoType (QualType T, MutableArrayRef< QualType > ParamTypes, const FunctionProtoType::ExtProtoInfo &EPI) |
Build a new function type. | |
QualType | RebuildFunctionNoProtoType (QualType ResultType) |
Build a new unprototyped function type. | |
QualType | RebuildUnresolvedUsingType (Decl *D) |
Rebuild an unresolved typename type, given the decl that the UnresolvedUsingTypenameDecl was transformed to. | |
QualType | RebuildTypedefType (TypedefNameDecl *Typedef) |
Build a new typedef type. | |
QualType | RebuildRecordType (RecordDecl *Record) |
Build a new class/struct/union type. | |
QualType | RebuildEnumType (EnumDecl *Enum) |
Build a new Enum type. | |
QualType | RebuildTypeOfExprType (Expr *Underlying, SourceLocation Loc) |
Build a new typeof(expr) type. | |
QualType | RebuildTypeOfType (QualType Underlying) |
Build a new typeof(type) type. | |
QualType | RebuildUnaryTransformType (QualType BaseType, UnaryTransformType::UTTKind UKind, SourceLocation Loc) |
Build a new unary transform type. | |
QualType | RebuildDecltypeType (Expr *Underlying, SourceLocation Loc) |
Build a new C++11 decltype type. | |
QualType | RebuildAutoType (QualType Deduced, bool IsDecltypeAuto) |
Build a new C++11 auto type. | |
QualType | RebuildTemplateSpecializationType (TemplateName Template, SourceLocation TemplateLoc, TemplateArgumentListInfo &Args) |
Build a new template specialization type. | |
QualType | RebuildParenType (QualType InnerType) |
Build a new parenthesized type. | |
QualType | RebuildElaboratedType (SourceLocation KeywordLoc, ElaboratedTypeKeyword Keyword, NestedNameSpecifierLoc QualifierLoc, QualType Named) |
Build a new qualified name type. | |
QualType | RebuildDependentTemplateSpecializationType (ElaboratedTypeKeyword Keyword, NestedNameSpecifierLoc QualifierLoc, const IdentifierInfo *Name, SourceLocation NameLoc, TemplateArgumentListInfo &Args) |
Build a new typename type that refers to a template-id. | |
QualType | RebuildDependentNameType (ElaboratedTypeKeyword Keyword, SourceLocation KeywordLoc, NestedNameSpecifierLoc QualifierLoc, const IdentifierInfo *Id, SourceLocation IdLoc) |
Build a new typename type that refers to an identifier. | |
QualType | RebuildPackExpansionType (QualType Pattern, SourceRange PatternRange, SourceLocation EllipsisLoc, Optional< unsigned > NumExpansions) |
Build a new pack expansion type. | |
QualType | RebuildAtomicType (QualType ValueType, SourceLocation KWLoc) |
Build a new atomic type given its value type. | |
TemplateName | RebuildTemplateName (CXXScopeSpec &SS, bool TemplateKW, TemplateDecl *Template) |
Build a new template name given a nested name specifier, a flag indicating whether the "template" keyword was provided, and the template that the template name refers to. | |
TemplateName | RebuildTemplateName (CXXScopeSpec &SS, const IdentifierInfo &Name, SourceLocation NameLoc, QualType ObjectType, NamedDecl *FirstQualifierInScope) |
Build a new template name given a nested name specifier and the name that is referred to as a template. | |
TemplateName | RebuildTemplateName (CXXScopeSpec &SS, OverloadedOperatorKind Operator, SourceLocation NameLoc, QualType ObjectType) |
Build a new template name given a nested name specifier and the overloaded operator name that is referred to as a template. | |
TemplateName | RebuildTemplateName (TemplateTemplateParmDecl *Param, const TemplateArgument &ArgPack) |
Build a new template name given a template template parameter pack and the. | |
StmtResult | RebuildCompoundStmt (SourceLocation LBraceLoc, MultiStmtArg Statements, SourceLocation RBraceLoc, bool IsStmtExpr) |
Build a new compound statement. | |
StmtResult | RebuildCaseStmt (SourceLocation CaseLoc, Expr *LHS, SourceLocation EllipsisLoc, Expr *RHS, SourceLocation ColonLoc) |
Build a new case statement. | |
StmtResult | RebuildCaseStmtBody (Stmt *S, Stmt *Body) |
Attach the body to a new case statement. | |
StmtResult | RebuildDefaultStmt (SourceLocation DefaultLoc, SourceLocation ColonLoc, Stmt *SubStmt) |
Build a new default statement. | |
StmtResult | RebuildLabelStmt (SourceLocation IdentLoc, LabelDecl *L, SourceLocation ColonLoc, Stmt *SubStmt) |
Build a new label statement. | |
StmtResult | RebuildAttributedStmt (SourceLocation AttrLoc, ArrayRef< const Attr * > Attrs, Stmt *SubStmt) |
Build a new label statement. | |
StmtResult | RebuildIfStmt (SourceLocation IfLoc, Sema::FullExprArg Cond, VarDecl *CondVar, Stmt *Then, SourceLocation ElseLoc, Stmt *Else) |
Build a new "if" statement. | |
StmtResult | RebuildSwitchStmtStart (SourceLocation SwitchLoc, Expr *Cond, VarDecl *CondVar) |
Start building a new switch statement. | |
StmtResult | RebuildSwitchStmtBody (SourceLocation SwitchLoc, Stmt *Switch, Stmt *Body) |
Attach the body to the switch statement. | |
StmtResult | RebuildWhileStmt (SourceLocation WhileLoc, Sema::FullExprArg Cond, VarDecl *CondVar, Stmt *Body) |
Build a new while statement. | |
StmtResult | RebuildDoStmt (SourceLocation DoLoc, Stmt *Body, SourceLocation WhileLoc, SourceLocation LParenLoc, Expr *Cond, SourceLocation RParenLoc) |
Build a new do-while statement. | |
StmtResult | RebuildForStmt (SourceLocation ForLoc, SourceLocation LParenLoc, Stmt *Init, Sema::FullExprArg Cond, VarDecl *CondVar, Sema::FullExprArg Inc, SourceLocation RParenLoc, Stmt *Body) |
Build a new for statement. | |
StmtResult | RebuildGotoStmt (SourceLocation GotoLoc, SourceLocation LabelLoc, LabelDecl *Label) |
Build a new goto statement. | |
StmtResult | RebuildIndirectGotoStmt (SourceLocation GotoLoc, SourceLocation StarLoc, Expr *Target) |
Build a new indirect goto statement. | |
StmtResult | RebuildReturnStmt (SourceLocation ReturnLoc, Expr *Result) |
Build a new return statement. | |
StmtResult | RebuildDeclStmt (MutableArrayRef< Decl * > Decls, SourceLocation StartLoc, SourceLocation EndLoc) |
Build a new declaration statement. | |
StmtResult | RebuildGCCAsmStmt (SourceLocation AsmLoc, bool IsSimple, bool IsVolatile, unsigned NumOutputs, unsigned NumInputs, IdentifierInfo **Names, MultiExprArg Constraints, MultiExprArg Exprs, Expr *AsmString, MultiExprArg Clobbers, SourceLocation RParenLoc) |
Build a new inline asm statement. | |
StmtResult | RebuildMSAsmStmt (SourceLocation AsmLoc, SourceLocation LBraceLoc, ArrayRef< Token > AsmToks, StringRef AsmString, unsigned NumOutputs, unsigned NumInputs, ArrayRef< StringRef > Constraints, ArrayRef< StringRef > Clobbers, ArrayRef< Expr * > Exprs, SourceLocation EndLoc) |
Build a new MS style inline asm statement. | |
StmtResult | RebuildObjCAtTryStmt (SourceLocation AtLoc, Stmt *TryBody, MultiStmtArg CatchStmts, Stmt *Finally) |
Build a new Objective-C @try statement. | |
VarDecl * | RebuildObjCExceptionDecl (VarDecl *ExceptionDecl, TypeSourceInfo *TInfo, QualType T) |
Rebuild an Objective-C exception declaration. | |
StmtResult | RebuildObjCAtCatchStmt (SourceLocation AtLoc, SourceLocation RParenLoc, VarDecl *Var, Stmt *Body) |
Build a new Objective-C @catch statement. | |
StmtResult | RebuildObjCAtFinallyStmt (SourceLocation AtLoc, Stmt *Body) |
Build a new Objective-C @finally statement. | |
StmtResult | RebuildObjCAtThrowStmt (SourceLocation AtLoc, Expr *Operand) |
Build a new Objective-C @throw statement. | |
StmtResult | RebuildOMPExecutableDirective (OpenMPDirectiveKind Kind, DeclarationNameInfo DirName, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc) |
Build a new OpenMP executable directive. | |
OMPClause * | RebuildOMPIfClause (Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'if' clause. | |
OMPClause * | RebuildOMPFinalClause (Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'final' clause. | |
OMPClause * | RebuildOMPNumThreadsClause (Expr *NumThreads, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'num_threads' clause. | |
OMPClause * | RebuildOMPSafelenClause (Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'safelen' clause. | |
OMPClause * | RebuildOMPCollapseClause (Expr *Num, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'collapse' clause. | |
OMPClause * | RebuildOMPDefaultClause (OpenMPDefaultClauseKind Kind, SourceLocation KindKwLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'default' clause. | |
OMPClause * | RebuildOMPProcBindClause (OpenMPProcBindClauseKind Kind, SourceLocation KindKwLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'proc_bind' clause. | |
OMPClause * | RebuildOMPScheduleClause (OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc) |
Build a new OpenMP 'schedule' clause. | |
OMPClause * | RebuildOMPPrivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'private' clause. | |
OMPClause * | RebuildOMPFirstprivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'firstprivate' clause. | |
OMPClause * | RebuildOMPLastprivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'lastprivate' clause. | |
OMPClause * | RebuildOMPSharedClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'shared' clause. | |
OMPClause * | RebuildOMPReductionClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId) |
Build a new OpenMP 'reduction' clause. | |
OMPClause * | RebuildOMPLinearClause (ArrayRef< Expr * > VarList, Expr *Step, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc) |
Build a new OpenMP 'linear' clause. | |
OMPClause * | RebuildOMPAlignedClause (ArrayRef< Expr * > VarList, Expr *Alignment, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc) |
Build a new OpenMP 'aligned' clause. | |
OMPClause * | RebuildOMPCopyinClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'copyin' clause. | |
OMPClause * | RebuildOMPCopyprivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'copyprivate' clause. | |
OMPClause * | RebuildOMPFlushClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) |
Build a new OpenMP 'flush' pseudo clause. | |
ExprResult | RebuildObjCAtSynchronizedOperand (SourceLocation atLoc, Expr *object) |
Rebuild the operand to an Objective-C @synchronized statement. | |
StmtResult | RebuildObjCAtSynchronizedStmt (SourceLocation AtLoc, Expr *Object, Stmt *Body) |
Build a new Objective-C @synchronized statement. | |
StmtResult | RebuildObjCAutoreleasePoolStmt (SourceLocation AtLoc, Stmt *Body) |
Build a new Objective-C @autoreleasepool statement. | |
StmtResult | RebuildObjCForCollectionStmt (SourceLocation ForLoc, Stmt *Element, Expr *Collection, SourceLocation RParenLoc, Stmt *Body) |
Build a new Objective-C fast enumeration statement. | |
VarDecl * | RebuildExceptionDecl (VarDecl *ExceptionDecl, TypeSourceInfo *Declarator, SourceLocation StartLoc, SourceLocation IdLoc, IdentifierInfo *Id) |
Build a new C++ exception declaration. | |
StmtResult | RebuildCXXCatchStmt (SourceLocation CatchLoc, VarDecl *ExceptionDecl, Stmt *Handler) |
Build a new C++ catch statement. | |
StmtResult | RebuildCXXTryStmt (SourceLocation TryLoc, Stmt *TryBlock, ArrayRef< Stmt * > Handlers) |
Build a new C++ try statement. | |
StmtResult | RebuildCXXForRangeStmt (SourceLocation ForLoc, SourceLocation ColonLoc, Stmt *Range, Stmt *BeginEnd, Expr *Cond, Expr *Inc, Stmt *LoopVar, SourceLocation RParenLoc) |
Build a new C++0x range-based for statement. | |
StmtResult | RebuildMSDependentExistsStmt (SourceLocation KeywordLoc, bool IsIfExists, NestedNameSpecifierLoc QualifierLoc, DeclarationNameInfo NameInfo, Stmt *Nested) |
Build a new C++0x range-based for statement. | |
StmtResult | FinishCXXForRangeStmt (Stmt *ForRange, Stmt *Body) |
Attach body to a C++0x range-based for statement. | |
StmtResult | RebuildSEHTryStmt (bool IsCXXTry, SourceLocation TryLoc, Stmt *TryBlock, Stmt *Handler) |
StmtResult | RebuildSEHExceptStmt (SourceLocation Loc, Expr *FilterExpr, Stmt *Block) |
StmtResult | RebuildSEHFinallyStmt (SourceLocation Loc, Stmt *Block) |
ExprResult | RebuildPredefinedExpr (SourceLocation Loc, PredefinedExpr::IdentType IT) |
Build a new predefined expression. | |
ExprResult | RebuildDeclarationNameExpr (const CXXScopeSpec &SS, LookupResult &R, bool RequiresADL) |
Build a new expression that references a declaration. | |
ExprResult | RebuildDeclRefExpr (NestedNameSpecifierLoc QualifierLoc, ValueDecl *VD, const DeclarationNameInfo &NameInfo, TemplateArgumentListInfo *TemplateArgs) |
Build a new expression that references a declaration. | |
ExprResult | RebuildParenExpr (Expr *SubExpr, SourceLocation LParen, SourceLocation RParen) |
Build a new expression in parentheses. | |
ExprResult | RebuildCXXPseudoDestructorExpr (Expr *Base, SourceLocation OperatorLoc, bool isArrow, CXXScopeSpec &SS, TypeSourceInfo *ScopeType, SourceLocation CCLoc, SourceLocation TildeLoc, PseudoDestructorTypeStorage Destroyed) |
Build a new pseudo-destructor expression. | |
ExprResult | RebuildUnaryOperator (SourceLocation OpLoc, UnaryOperatorKind Opc, Expr *SubExpr) |
Build a new unary operator expression. | |
ExprResult | RebuildOffsetOfExpr (SourceLocation OperatorLoc, TypeSourceInfo *Type, Sema::OffsetOfComponent *Components, unsigned NumComponents, SourceLocation RParenLoc) |
Build a new builtin offsetof expression. | |
ExprResult | RebuildUnaryExprOrTypeTrait (TypeSourceInfo *TInfo, SourceLocation OpLoc, UnaryExprOrTypeTrait ExprKind, SourceRange R) |
Build a new sizeof, alignof or vec_step expression with a type argument. | |
ExprResult | RebuildUnaryExprOrTypeTrait (Expr *SubExpr, SourceLocation OpLoc, UnaryExprOrTypeTrait ExprKind, SourceRange R) |
Build a new sizeof, alignof or vec step expression with an expression argument. | |
ExprResult | RebuildArraySubscriptExpr (Expr *LHS, SourceLocation LBracketLoc, Expr *RHS, SourceLocation RBracketLoc) |
Build a new array subscript expression. | |
ExprResult | RebuildCallExpr (Expr *Callee, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc, Expr *ExecConfig=nullptr) |
Build a new call expression. | |
ExprResult | RebuildMemberExpr (Expr *Base, SourceLocation OpLoc, bool isArrow, NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc, const DeclarationNameInfo &MemberNameInfo, ValueDecl *Member, NamedDecl *FoundDecl, const TemplateArgumentListInfo *ExplicitTemplateArgs, NamedDecl *FirstQualifierInScope) |
Build a new member access expression. | |
ExprResult | RebuildBinaryOperator (SourceLocation OpLoc, BinaryOperatorKind Opc, Expr *LHS, Expr *RHS) |
Build a new binary operator expression. | |
ExprResult | RebuildConditionalOperator (Expr *Cond, SourceLocation QuestionLoc, Expr *LHS, SourceLocation ColonLoc, Expr *RHS) |
Build a new conditional operator expression. | |
ExprResult | RebuildCStyleCastExpr (SourceLocation LParenLoc, TypeSourceInfo *TInfo, SourceLocation RParenLoc, Expr *SubExpr) |
Build a new C-style cast expression. | |
ExprResult | RebuildCompoundLiteralExpr (SourceLocation LParenLoc, TypeSourceInfo *TInfo, SourceLocation RParenLoc, Expr *Init) |
Build a new compound literal expression. | |
ExprResult | RebuildExtVectorElementExpr (Expr *Base, SourceLocation OpLoc, SourceLocation AccessorLoc, IdentifierInfo &Accessor) |
Build a new extended vector element access expression. | |
ExprResult | RebuildInitList (SourceLocation LBraceLoc, MultiExprArg Inits, SourceLocation RBraceLoc, QualType ResultTy) |
Build a new initializer list expression. | |
ExprResult | RebuildDesignatedInitExpr (Designation &Desig, MultiExprArg ArrayExprs, SourceLocation EqualOrColonLoc, bool GNUSyntax, Expr *Init) |
Build a new designated initializer expression. | |
ExprResult | RebuildImplicitValueInitExpr (QualType T) |
Build a new value-initialized expression. | |
ExprResult | RebuildVAArgExpr (SourceLocation BuiltinLoc, Expr *SubExpr, TypeSourceInfo *TInfo, SourceLocation RParenLoc) |
Build a new va_arg expression. | |
ExprResult | RebuildParenListExpr (SourceLocation LParenLoc, MultiExprArg SubExprs, SourceLocation RParenLoc) |
Build a new expression list in parentheses. | |
ExprResult | RebuildAddrLabelExpr (SourceLocation AmpAmpLoc, SourceLocation LabelLoc, LabelDecl *Label) |
Build a new address-of-label expression. | |
ExprResult | RebuildStmtExpr (SourceLocation LParenLoc, Stmt *SubStmt, SourceLocation RParenLoc) |
Build a new GNU statement expression. | |
ExprResult | RebuildChooseExpr (SourceLocation BuiltinLoc, Expr *Cond, Expr *LHS, Expr *RHS, SourceLocation RParenLoc) |
Build a new __builtin_choose_expr expression. | |
ExprResult | RebuildGenericSelectionExpr (SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, Expr *ControllingExpr, ArrayRef< TypeSourceInfo * > Types, ArrayRef< Expr * > Exprs) |
Build a new generic selection expression. | |
ExprResult | RebuildCXXOperatorCallExpr (OverloadedOperatorKind Op, SourceLocation OpLoc, Expr *Callee, Expr *First, Expr *Second) |
Build a new overloaded operator call expression. | |
ExprResult | RebuildCXXNamedCastExpr (SourceLocation OpLoc, Stmt::StmtClass Class, SourceLocation LAngleLoc, TypeSourceInfo *TInfo, SourceLocation RAngleLoc, SourceLocation LParenLoc, Expr *SubExpr, SourceLocation RParenLoc) |
Build a new C++ "named" cast expression, such as static_cast or reinterpret_cast. | |
ExprResult | RebuildCXXStaticCastExpr (SourceLocation OpLoc, SourceLocation LAngleLoc, TypeSourceInfo *TInfo, SourceLocation RAngleLoc, SourceLocation LParenLoc, Expr *SubExpr, SourceLocation RParenLoc) |
Build a new C++ static_cast expression. | |
ExprResult | RebuildCXXDynamicCastExpr (SourceLocation OpLoc, SourceLocation LAngleLoc, TypeSourceInfo *TInfo, SourceLocation RAngleLoc, SourceLocation LParenLoc, Expr *SubExpr, SourceLocation RParenLoc) |
Build a new C++ dynamic_cast expression. | |
ExprResult | RebuildCXXReinterpretCastExpr (SourceLocation OpLoc, SourceLocation LAngleLoc, TypeSourceInfo *TInfo, SourceLocation RAngleLoc, SourceLocation LParenLoc, Expr *SubExpr, SourceLocation RParenLoc) |
Build a new C++ reinterpret_cast expression. | |
ExprResult | RebuildCXXConstCastExpr (SourceLocation OpLoc, SourceLocation LAngleLoc, TypeSourceInfo *TInfo, SourceLocation RAngleLoc, SourceLocation LParenLoc, Expr *SubExpr, SourceLocation RParenLoc) |
Build a new C++ const_cast expression. | |
ExprResult | RebuildCXXFunctionalCastExpr (TypeSourceInfo *TInfo, SourceLocation LParenLoc, Expr *Sub, SourceLocation RParenLoc) |
Build a new C++ functional-style cast expression. | |
ExprResult | RebuildCXXTypeidExpr (QualType TypeInfoType, SourceLocation TypeidLoc, TypeSourceInfo *Operand, SourceLocation RParenLoc) |
Build a new C++ typeid(type) expression. | |
ExprResult | RebuildCXXTypeidExpr (QualType TypeInfoType, SourceLocation TypeidLoc, Expr *Operand, SourceLocation RParenLoc) |
Build a new C++ typeid(expr) expression. | |
ExprResult | RebuildCXXUuidofExpr (QualType TypeInfoType, SourceLocation TypeidLoc, TypeSourceInfo *Operand, SourceLocation RParenLoc) |
Build a new C++ __uuidof(type) expression. | |
ExprResult | RebuildCXXUuidofExpr (QualType TypeInfoType, SourceLocation TypeidLoc, Expr *Operand, SourceLocation RParenLoc) |
Build a new C++ __uuidof(expr) expression. | |
ExprResult | RebuildCXXThisExpr (SourceLocation ThisLoc, QualType ThisType, bool isImplicit) |
Build a new C++ "this" expression. | |
ExprResult | RebuildCXXThrowExpr (SourceLocation ThrowLoc, Expr *Sub, bool IsThrownVariableInScope) |
Build a new C++ throw expression. | |
ExprResult | RebuildCXXDefaultArgExpr (SourceLocation Loc, ParmVarDecl *Param) |
Build a new C++ default-argument expression. | |
ExprResult | RebuildCXXDefaultInitExpr (SourceLocation Loc, FieldDecl *Field) |
Build a new C++11 default-initialization expression. | |
ExprResult | RebuildCXXScalarValueInitExpr (TypeSourceInfo *TSInfo, SourceLocation LParenLoc, SourceLocation RParenLoc) |
Build a new C++ zero-initialization expression. | |
ExprResult | RebuildCXXNewExpr (SourceLocation StartLoc, bool UseGlobal, SourceLocation PlacementLParen, MultiExprArg PlacementArgs, SourceLocation PlacementRParen, SourceRange TypeIdParens, QualType AllocatedType, TypeSourceInfo *AllocatedTypeInfo, Expr *ArraySize, SourceRange DirectInitRange, Expr *Initializer) |
Build a new C++ "new" expression. | |
ExprResult | RebuildCXXDeleteExpr (SourceLocation StartLoc, bool IsGlobalDelete, bool IsArrayForm, Expr *Operand) |
Build a new C++ "delete" expression. | |
ExprResult | RebuildTypeTrait (TypeTrait Trait, SourceLocation StartLoc, ArrayRef< TypeSourceInfo * > Args, SourceLocation RParenLoc) |
Build a new type trait expression. | |
ExprResult | RebuildArrayTypeTrait (ArrayTypeTrait Trait, SourceLocation StartLoc, TypeSourceInfo *TSInfo, Expr *DimExpr, SourceLocation RParenLoc) |
Build a new array type trait expression. | |
ExprResult | RebuildExpressionTrait (ExpressionTrait Trait, SourceLocation StartLoc, Expr *Queried, SourceLocation RParenLoc) |
Build a new expression trait expression. | |
ExprResult | RebuildDependentScopeDeclRefExpr (NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc, const DeclarationNameInfo &NameInfo, const TemplateArgumentListInfo *TemplateArgs, bool IsAddressOfOperand, TypeSourceInfo **RecoveryTSI) |
Build a new (previously unresolved) declaration reference expression. | |
ExprResult | RebuildTemplateIdExpr (const CXXScopeSpec &SS, SourceLocation TemplateKWLoc, LookupResult &R, bool RequiresADL, const TemplateArgumentListInfo *TemplateArgs) |
Build a new template-id expression. | |
ExprResult | RebuildCXXConstructExpr (QualType T, SourceLocation Loc, CXXConstructorDecl *Constructor, bool IsElidable, MultiExprArg Args, bool HadMultipleCandidates, bool ListInitialization, bool StdInitListInitialization, bool RequiresZeroInit, CXXConstructExpr::ConstructionKind ConstructKind, SourceRange ParenRange) |
Build a new object-construction expression. | |
ExprResult | RebuildCXXTemporaryObjectExpr (TypeSourceInfo *TSInfo, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc) |
Build a new object-construction expression. | |
ExprResult | RebuildCXXUnresolvedConstructExpr (TypeSourceInfo *TSInfo, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc) |
Build a new object-construction expression. | |
ExprResult | RebuildCXXDependentScopeMemberExpr (Expr *BaseE, QualType BaseType, bool IsArrow, SourceLocation OperatorLoc, NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, const DeclarationNameInfo &MemberNameInfo, const TemplateArgumentListInfo *TemplateArgs) |
Build a new member reference expression. | |
ExprResult | RebuildUnresolvedMemberExpr (Expr *BaseE, QualType BaseType, SourceLocation OperatorLoc, bool IsArrow, NestedNameSpecifierLoc QualifierLoc, SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierInScope, LookupResult &R, const TemplateArgumentListInfo *TemplateArgs) |
Build a new member reference expression. | |
ExprResult | RebuildCXXNoexceptExpr (SourceRange Range, Expr *Arg) |
Build a new noexcept expression. | |
ExprResult | RebuildSizeOfPackExpr (SourceLocation OperatorLoc, NamedDecl *Pack, SourceLocation PackLoc, SourceLocation RParenLoc, Optional< unsigned > Length) |
Build a new expression to compute the length of a parameter pack. | |
ExprResult | RebuildObjCBoxedExpr (SourceRange SR, Expr *ValueExpr) |
Build a new Objective-C boxed expression. | |
ExprResult | RebuildObjCArrayLiteral (SourceRange Range, Expr **Elements, unsigned NumElements) |
Build a new Objective-C array literal. | |
ExprResult | RebuildObjCSubscriptRefExpr (SourceLocation RB, Expr *Base, Expr *Key, ObjCMethodDecl *getterMethod, ObjCMethodDecl *setterMethod) |
ExprResult | RebuildObjCDictionaryLiteral (SourceRange Range, ObjCDictionaryElement *Elements, unsigned NumElements) |
Build a new Objective-C dictionary literal. | |
ExprResult | RebuildObjCEncodeExpr (SourceLocation AtLoc, TypeSourceInfo *EncodeTypeInfo, SourceLocation RParenLoc) |
Build a new Objective-C @encode expression. | |
ExprResult | RebuildObjCMessageExpr (TypeSourceInfo *ReceiverTypeInfo, Selector Sel, ArrayRef< SourceLocation > SelectorLocs, ObjCMethodDecl *Method, SourceLocation LBracLoc, MultiExprArg Args, SourceLocation RBracLoc) |
Build a new Objective-C class message. | |
ExprResult | RebuildObjCMessageExpr (Expr *Receiver, Selector Sel, ArrayRef< SourceLocation > SelectorLocs, ObjCMethodDecl *Method, SourceLocation LBracLoc, MultiExprArg Args, SourceLocation RBracLoc) |
Build a new Objective-C instance message. | |
ExprResult | RebuildObjCIvarRefExpr (Expr *BaseArg, ObjCIvarDecl *Ivar, SourceLocation IvarLoc, bool IsArrow, bool IsFreeIvar) |
Build a new Objective-C ivar reference expression. | |
ExprResult | RebuildObjCPropertyRefExpr (Expr *BaseArg, ObjCPropertyDecl *Property, SourceLocation PropertyLoc) |
Build a new Objective-C property reference expression. | |
ExprResult | RebuildObjCPropertyRefExpr (Expr *Base, QualType T, ObjCMethodDecl *Getter, ObjCMethodDecl *Setter, SourceLocation PropertyLoc) |
Build a new Objective-C property reference expression. | |
ExprResult | RebuildObjCIsaExpr (Expr *BaseArg, SourceLocation IsaLoc, SourceLocation OpLoc, bool IsArrow) |
Build a new Objective-C "isa" expression. | |
ExprResult | RebuildShuffleVectorExpr (SourceLocation BuiltinLoc, MultiExprArg SubExprs, SourceLocation RParenLoc) |
Build a new shuffle vector expression. | |
ExprResult | RebuildConvertVectorExpr (SourceLocation BuiltinLoc, Expr *SrcExpr, TypeSourceInfo *DstTInfo, SourceLocation RParenLoc) |
Build a new convert vector expression. | |
TemplateArgumentLoc | RebuildPackExpansion (TemplateArgumentLoc Pattern, SourceLocation EllipsisLoc, Optional< unsigned > NumExpansions) |
Build a new template argument pack expansion. | |
ExprResult | RebuildPackExpansion (Expr *Pattern, SourceLocation EllipsisLoc, Optional< unsigned > NumExpansions) |
Build a new expression pack expansion. | |
ExprResult | RebuildCXXFoldExpr (SourceLocation LParenLoc, Expr *LHS, BinaryOperatorKind Operator, SourceLocation EllipsisLoc, Expr *RHS, SourceLocation RParenLoc) |
Build a new C++1z fold-expression. | |
ExprResult | RebuildEmptyCXXFoldExpr (SourceLocation EllipsisLoc, BinaryOperatorKind Operator) |
Build an empty C++1z fold-expression with the given operator. | |
ExprResult | RebuildAtomicExpr (SourceLocation BuiltinLoc, MultiExprArg SubExprs, QualType RetTy, AtomicExpr::AtomicOp Op, SourceLocation RParenLoc) |
Build a new atomic operation expression. | |
template<typename Derived > | |
QualType | TransformFunctionProtoType (TypeLocBuilder &TLB, FunctionProtoTypeLoc TL) |
Static Public Member Functions | |
static ExprResult | Owned (Expr *E) |
static StmtResult | Owned (Stmt *S) |
Protected Attributes | |
Sema & | SemaRef |
llvm::DenseMap< Decl *, Decl * > | TransformedLocalDecls |
The set of local declarations that have been transformed, for cases where we are forced to build new declarations within the transformer rather than in the subclass (e.g., lambda closure types). |
A semantic tree transformation that allows one to transform one abstract syntax tree into another.
A new tree transformation is defined by creating a new subclass X
of TreeTransform<X>
and then overriding certain operations to provide behavior specific to that transformation. For example, template instantiation is implemented as a tree transformation where the transformation of TemplateTypeParmType nodes involves substituting the template arguments for their corresponding template parameters; a similar transformation is performed for non-type template parameters and template template parameters.
This tree-transformation template uses static polymorphism to allow subclasses to customize any of its operations. Thus, a subclass can override any of the transformation or rebuild operators by providing an operation with the same signature as the default implementation. The overridding function should not be virtual.
Semantic tree transformations are split into two stages, either of which can be replaced by a subclass. The "transform" step transforms an AST node or the parts of an AST node using the various transformation functions, then passes the pieces on to the "rebuild" step, which constructs a new AST node of the appropriate kind from the pieces. The default transformation routines recursively transform the operands to composite AST nodes (e.g., the pointee type of a PointerType node) and, if any of those operand nodes were changed by the transformation, invokes the rebuild operation to create a new AST node.
Subclasses can customize the transformation at various levels. The most coarse-grained transformations involve replacing TransformType(), TransformExpr(), TransformDecl(), TransformNestedNameSpecifierLoc(), TransformTemplateName(), or TransformTemplateArgument() with entirely new implementations.
For more fine-grained transformations, subclasses can replace any of the TransformXXX
functions (where XXX is the name of an AST node, e.g., PointerType, StmtExpr) to alter the transformation. As mentioned previously, replacing TransformTemplateTypeParmType() allows template instantiation to substitute template arguments for their corresponding template parameters. Additionally, subclasses can override the RebuildXXX
functions to control how AST nodes are rebuilt when their operands change. By default, TreeTransform
will invoke semantic analysis to rebuild AST nodes. However, certain other tree transformations (e.g, cloning) may be able to use more efficient rebuild steps.
There are a handful of other functions that can be overridden, allowing one to avoid traversing nodes that don't need any transformation (AlreadyTransformed()
), force rebuilding AST nodes even when their operands have not changed (AlwaysRebuild()
), and customize the default locations and entity names used for type-checking (getBaseLocation()
, getBaseEntity()
).
Definition at line 94 of file TreeTransform.h.
typedef std::pair<ExprResult, QualType> clang::TreeTransform< Derived >::InitCaptureInfoTy |
Definition at line 623 of file TreeTransform.h.
clang::TreeTransform< Derived >::TreeTransform | ( | Sema & | SemaRef | ) | [inline] |
Initializes a new tree transformer.
Definition at line 122 of file TreeTransform.h.
bool clang::TreeTransform< Derived >::AlreadyTransformed | ( | QualType | T | ) | [inline] |
Determine whether the given type T
has already been transformed.
Subclasses can provide an alternative implementation of this routine to short-circuit evaluation when it is known that a given type will not change. For example, template instantiation need not traverse non-dependent types.
Definition at line 201 of file TreeTransform.h.
References clang::QualType::isNull().
bool clang::TreeTransform< Derived >::AlwaysRebuild | ( | ) | [inline] |
Whether the transformation should always rebuild AST nodes, even if none of the children have changed.
Subclasses may override this function to specify when the transformation should rebuild all AST nodes.
We must always rebuild all AST nodes when performing variadic template pack expansion, in order to avoid violating the AST invariant that each statement node appears at most once in its containing declaration.
Definition at line 148 of file TreeTransform.h.
bool clang::TreeTransform< Derived >::DropCallArgument | ( | Expr * | E | ) | [inline] |
Determine whether the given call argument should be dropped, e.g., because it is a default argument.
Subclasses can provide an alternative implementation of this routine to determine which kinds of call arguments get dropped. By default, CXXDefaultArgument nodes are dropped (prior to transformation).
Definition at line 211 of file TreeTransform.h.
References clang::Expr::isDefaultArgument().
void clang::TreeTransform< Derived >::ExpandingFunctionParameterPack | ( | ParmVarDecl * | Pack | ) | [inline] |
Note to the derived class when a function parameter pack is being expanded.
Definition at line 280 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::FinishCXXForRangeStmt | ( | Stmt * | ForRange, |
Stmt * | Body | ||
) | [inline] |
Attach body to a C++0x range-based for statement.
By default, performs semantic analysis to finish the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1690 of file TreeTransform.h.
TemplateArgument clang::TreeTransform< Derived >::ForgetPartiallySubstitutedPack | ( | ) | [inline] |
"Forget" about the partially-substituted pack template argument, when performing an instantiation that must preserve the parameter pack use.
This routine is meant to be overridden by the template instantiator.
Definition at line 267 of file TreeTransform.h.
DeclarationName clang::TreeTransform< Derived >::getBaseEntity | ( | ) | [inline] |
Returns the name of the entity being transformed, if that information was not available elsewhere in the AST.
By default, returns an empty name. Subclasses can provide an alternative implementation with a more precise name.
Definition at line 163 of file TreeTransform.h.
SourceLocation clang::TreeTransform< Derived >::getBaseLocation | ( | ) | [inline] |
Returns the location of the entity being transformed, if that information was not available elsewhere in the AST.
By default, returns no source-location information. Subclasses can provide an alternative implementation that provides better location information.
Definition at line 156 of file TreeTransform.h.
Derived& clang::TreeTransform< Derived >::getDerived | ( | ) | [inline] |
Retrieves a reference to the derived class.
Definition at line 125 of file TreeTransform.h.
Referenced by clang::TreeTransform< Derived >::TemporaryBase::TemporaryBase().
const Derived& clang::TreeTransform< Derived >::getDerived | ( | ) | const [inline] |
Retrieves a reference to the derived class.
Definition at line 128 of file TreeTransform.h.
Sema& clang::TreeTransform< Derived >::getSema | ( | ) | const [inline] |
Retrieves a reference to the semantic analysis object used for this tree transform.
Definition at line 137 of file TreeTransform.h.
void clang::TreeTransform< Derived >::InventTemplateArgumentLoc | ( | const TemplateArgument & | Arg, |
TemplateArgumentLoc & | ArgLoc | ||
) |
Fakes up a TemplateArgumentLoc for a given TemplateArgument.
Definition at line 3356 of file TreeTransform.h.
References Builder, clang::TemplateArgument::Declaration, clang::TemplateArgument::Expression, clang::TemplateName::getAsDependentTemplateName(), clang::TemplateArgument::getAsExpr(), clang::TemplateName::getAsQualifiedTemplateName(), clang::TemplateArgument::getAsTemplate(), clang::TemplateArgument::getAsType(), clang::TemplateArgument::getKind(), clang::NestedNameSpecifierLocBuilder::getWithLocInContext(), clang::TemplateArgument::Integral, clang::NestedNameSpecifierLocBuilder::MakeTrivial(), clang::TemplateArgument::Null, clang::TemplateArgument::NullPtr, clang::TemplateArgument::Pack, clang::TemplateArgument::Template, clang::TemplateArgument::TemplateExpansion, and clang::TemplateArgument::Type.
TypeSourceInfo* clang::TreeTransform< Derived >::InventTypeSourceInfo | ( | QualType | T | ) | [inline] |
Fakes up a TypeSourceInfo for a type.
Definition at line 556 of file TreeTransform.h.
static ExprResult clang::TreeTransform< Derived >::Owned | ( | Expr * | E | ) | [inline, static] |
Definition at line 132 of file TreeTransform.h.
static StmtResult clang::TreeTransform< Derived >::Owned | ( | Stmt * | S | ) | [inline, static] |
Definition at line 133 of file TreeTransform.h.
References S.
ExprResult clang::TreeTransform< Derived >::RebuildAddrLabelExpr | ( | SourceLocation | AmpAmpLoc, |
SourceLocation | LabelLoc, | ||
LabelDecl * | Label | ||
) | [inline] |
Build a new address-of-label expression.
By default, performs semantic analysis, using the name of the label rather than attempting to map the label statement itself. Subclasses may override this routine to provide different behavior.
Definition at line 2039 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildArraySubscriptExpr | ( | Expr * | LHS, |
SourceLocation | LBracketLoc, | ||
Expr * | RHS, | ||
SourceLocation | RBracketLoc | ||
) | [inline] |
Build a new array subscript expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1821 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildArrayType | ( | QualType | ElementType, |
ArrayType::ArraySizeModifier | SizeMod, | ||
const llvm::APInt * | Size, | ||
Expr * | SizeExpr, | ||
unsigned | IndexTypeQuals, | ||
SourceRange | BracketsRange | ||
) |
Build a new array type given the element type, size modifier, size of the array (if known), size expression, and index type qualifiers.
By default, performs semantic analysis when building the array type. Subclasses may override this routine to provide different behavior. Also by default, all of the other Rebuild*Array
Definition at line 10402 of file TreeTransform.h.
References clang::IntegerLiteral::Create(), and clang::SourceRange::getBegin().
Referenced by clang::TreeTransform< Derived >::RebuildConstantArrayType(), clang::TreeTransform< Derived >::RebuildDependentSizedArrayType(), clang::TreeTransform< Derived >::RebuildIncompleteArrayType(), and clang::TreeTransform< Derived >::RebuildVariableArrayType().
ExprResult clang::TreeTransform< Derived >::RebuildArrayTypeTrait | ( | ArrayTypeTrait | Trait, |
SourceLocation | StartLoc, | ||
TypeSourceInfo * | TSInfo, | ||
Expr * | DimExpr, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new array type trait expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2371 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildAtomicExpr | ( | SourceLocation | BuiltinLoc, |
MultiExprArg | SubExprs, | ||
QualType | RetTy, | ||
AtomicExpr::AtomicOp | Op, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new atomic operation expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2819 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildAtomicType | ( | QualType | ValueType, |
SourceLocation | KWLoc | ||
) |
Build a new atomic type given its value type.
By default, performs semantic analysis when building the atomic type. Subclasses may override this routine to provide different behavior.
Definition at line 10583 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildAttributedStmt | ( | SourceLocation | AttrLoc, |
ArrayRef< const Attr * > | Attrs, | ||
Stmt * | SubStmt | ||
) | [inline] |
Build a new label statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1133 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildAutoType | ( | QualType | Deduced, |
bool | IsDecltypeAuto | ||
) | [inline] |
Build a new C++11 auto type.
By default, builds a new AutoType with the given deduced type.
Definition at line 830 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildBinaryOperator | ( | SourceLocation | OpLoc, |
BinaryOperatorKind | Opc, | ||
Expr * | LHS, | ||
Expr * | RHS | ||
) | [inline] |
Build a new binary operator expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1903 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildBlockPointerType | ( | QualType | PointeeType, |
SourceLocation | Sigil | ||
) |
Build a new block pointer type given its pointee type.
By default, performs semantic analysis when building the block pointer type. Subclasses may override this routine to provide different behavior.
Definition at line 10376 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCallExpr | ( | Expr * | Callee, |
SourceLocation | LParenLoc, | ||
MultiExprArg | Args, | ||
SourceLocation | RParenLoc, | ||
Expr * | ExecConfig = nullptr |
||
) | [inline] |
Build a new call expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1834 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildCaseStmt | ( | SourceLocation | CaseLoc, |
Expr * | LHS, | ||
SourceLocation | EllipsisLoc, | ||
Expr * | RHS, | ||
SourceLocation | ColonLoc | ||
) | [inline] |
Build a new case statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1091 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildCaseStmtBody | ( | Stmt * | S, |
Stmt * | Body | ||
) | [inline] |
Attach the body to a new case statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1104 of file TreeTransform.h.
References S.
ExprResult clang::TreeTransform< Derived >::RebuildChooseExpr | ( | SourceLocation | BuiltinLoc, |
Expr * | Cond, | ||
Expr * | LHS, | ||
Expr * | RHS, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new __builtin_choose_expr expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2058 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCompoundLiteralExpr | ( | SourceLocation | LParenLoc, |
TypeSourceInfo * | TInfo, | ||
SourceLocation | RParenLoc, | ||
Expr * | Init | ||
) | [inline] |
Build a new compound literal expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1938 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildCompoundStmt | ( | SourceLocation | LBraceLoc, |
MultiStmtArg | Statements, | ||
SourceLocation | RBraceLoc, | ||
bool | IsStmtExpr | ||
) | [inline] |
Build a new compound statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1079 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildConditionalOperator | ( | Expr * | Cond, |
SourceLocation | QuestionLoc, | ||
Expr * | LHS, | ||
SourceLocation | ColonLoc, | ||
Expr * | RHS | ||
) | [inline] |
Build a new conditional operator expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1913 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildConstantArrayType | ( | QualType | ElementType, |
ArrayType::ArraySizeModifier | SizeMod, | ||
const llvm::APInt & | Size, | ||
unsigned | IndexTypeQuals, | ||
SourceRange | BracketsRange | ||
) |
Build a new constant array type given the element type, size modifier, (known) size of the array, and index type qualifiers.
By default, performs semantic analysis when building the array type. Subclasses may override this routine to provide different behavior.
Definition at line 10438 of file TreeTransform.h.
References clang::TreeTransform< Derived >::RebuildArrayType().
ExprResult clang::TreeTransform< Derived >::RebuildConvertVectorExpr | ( | SourceLocation | BuiltinLoc, |
Expr * | SrcExpr, | ||
TypeSourceInfo * | DstTInfo, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new convert vector expression.
Definition at line 2729 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCStyleCastExpr | ( | SourceLocation | LParenLoc, |
TypeSourceInfo * | TInfo, | ||
SourceLocation | RParenLoc, | ||
Expr * | SubExpr | ||
) | [inline] |
Build a new C-style cast expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1926 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildCXXCatchStmt | ( | SourceLocation | CatchLoc, |
VarDecl * | ExceptionDecl, | ||
Stmt * | Handler | ||
) | [inline] |
Build a new C++ catch statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1625 of file TreeTransform.h.
References Context.
ExprResult clang::TreeTransform< Derived >::RebuildCXXConstCastExpr | ( | SourceLocation | OpLoc, |
SourceLocation | LAngleLoc, | ||
TypeSourceInfo * | TInfo, | ||
SourceLocation | RAngleLoc, | ||
SourceLocation | LParenLoc, | ||
Expr * | SubExpr, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ const_cast expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2190 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXConstructExpr | ( | QualType | T, |
SourceLocation | Loc, | ||
CXXConstructorDecl * | Constructor, | ||
bool | IsElidable, | ||
MultiExprArg | Args, | ||
bool | HadMultipleCandidates, | ||
bool | ListInitialization, | ||
bool | StdInitListInitialization, | ||
bool | RequiresZeroInit, | ||
CXXConstructExpr::ConstructionKind | ConstructKind, | ||
SourceRange | ParenRange | ||
) | [inline] |
Build a new object-construction expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2430 of file TreeTransform.h.
References clang::ExprError().
ExprResult clang::TreeTransform< Derived >::RebuildCXXDefaultArgExpr | ( | SourceLocation | Loc, |
ParmVarDecl * | Param | ||
) | [inline] |
Build a new C++ default-argument expression.
By default, builds a new default-argument expression, which does not require any semantic analysis. Subclasses may override this routine to provide different behavior.
Definition at line 2291 of file TreeTransform.h.
References Context, and clang::CXXDefaultArgExpr::Create().
ExprResult clang::TreeTransform< Derived >::RebuildCXXDefaultInitExpr | ( | SourceLocation | Loc, |
FieldDecl * | Field | ||
) | [inline] |
Build a new C++11 default-initialization expression.
By default, builds a new default field initialization expression, which does not require any semantic analysis. Subclasses may override this routine to provide different behavior.
Definition at line 2301 of file TreeTransform.h.
References Context, and clang::CXXDefaultInitExpr::Create().
ExprResult clang::TreeTransform< Derived >::RebuildCXXDeleteExpr | ( | SourceLocation | StartLoc, |
bool | IsGlobalDelete, | ||
bool | IsArrayForm, | ||
Expr * | Operand | ||
) | [inline] |
Build a new C++ "delete" expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2348 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXDependentScopeMemberExpr | ( | Expr * | BaseE, |
QualType | BaseType, | ||
bool | IsArrow, | ||
SourceLocation | OperatorLoc, | ||
NestedNameSpecifierLoc | QualifierLoc, | ||
SourceLocation | TemplateKWLoc, | ||
NamedDecl * | FirstQualifierInScope, | ||
const DeclarationNameInfo & | MemberNameInfo, | ||
const TemplateArgumentListInfo * | TemplateArgs | ||
) | [inline] |
Build a new member reference expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2487 of file TreeTransform.h.
References clang::CXXScopeSpec::Adopt().
ExprResult clang::TreeTransform< Derived >::RebuildCXXDynamicCastExpr | ( | SourceLocation | OpLoc, |
SourceLocation | LAngleLoc, | ||
TypeSourceInfo * | TInfo, | ||
SourceLocation | RAngleLoc, | ||
SourceLocation | LParenLoc, | ||
Expr * | SubExpr, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ dynamic_cast expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2156 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXFoldExpr | ( | SourceLocation | LParenLoc, |
Expr * | LHS, | ||
BinaryOperatorKind | Operator, | ||
SourceLocation | EllipsisLoc, | ||
Expr * | RHS, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++1z fold-expression.
By default, performs semantic analysis in order to build a new fold expression.
Definition at line 2798 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildCXXForRangeStmt | ( | SourceLocation | ForLoc, |
SourceLocation | ColonLoc, | ||
Stmt * | Range, | ||
Stmt * | BeginEnd, | ||
Expr * | Cond, | ||
Expr * | Inc, | ||
Stmt * | LoopVar, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++0x range-based for statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1645 of file TreeTransform.h.
References clang::Sema::BFRK_Rebuild, clang::Expr::getType(), clang::Type::isObjCObjectPointerType(), clang::Expr::isTypeDependent(), and clang::StmtError().
ExprResult clang::TreeTransform< Derived >::RebuildCXXFunctionalCastExpr | ( | TypeSourceInfo * | TInfo, |
SourceLocation | LParenLoc, | ||
Expr * | Sub, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ functional-style cast expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2207 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXNamedCastExpr | ( | SourceLocation | OpLoc, |
Stmt::StmtClass | Class, | ||
SourceLocation | LAngleLoc, | ||
TypeSourceInfo * | TInfo, | ||
SourceLocation | RAngleLoc, | ||
SourceLocation | LParenLoc, | ||
Expr * | SubExpr, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ "named" cast expression, such as static_cast or reinterpret_cast.
By default, this routine dispatches to one of the more-specific routines for a particular named case, e.g., RebuildCXXStaticCastExpr(). Subclasses may override this routine to provide different behavior.
Definition at line 2100 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXNewExpr | ( | SourceLocation | StartLoc, |
bool | UseGlobal, | ||
SourceLocation | PlacementLParen, | ||
MultiExprArg | PlacementArgs, | ||
SourceLocation | PlacementRParen, | ||
SourceRange | TypeIdParens, | ||
QualType | AllocatedType, | ||
TypeSourceInfo * | AllocatedTypeInfo, | ||
Expr * | ArraySize, | ||
SourceRange | DirectInitRange, | ||
Expr * | Initializer | ||
) | [inline] |
Build a new C++ "new" expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2321 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXNoexceptExpr | ( | SourceRange | Range, |
Expr * | Arg | ||
) | [inline] |
Build a new noexcept expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2533 of file TreeTransform.h.
References clang::SourceRange::getBegin(), and clang::SourceRange::getEnd().
ExprResult clang::TreeTransform< Derived >::RebuildCXXOperatorCallExpr | ( | OverloadedOperatorKind | Op, |
SourceLocation | OpLoc, | ||
Expr * | Callee, | ||
Expr * | First, | ||
Expr * | Second | ||
) |
Build a new overloaded operator call expression.
By default, performs semantic analysis to build the new expression. The semantic analysis provides the behavior of template instantiation, copying with transformations that turn what looks like an overloaded operator call into a use of a builtin operator, performing argument-dependent lookup, etc. Subclasses may override this routine to provide different behavior.
Definition at line 10638 of file TreeTransform.h.
References clang::UnresolvedSetImpl::addDecl(), clang::UnresolvedSetImpl::append(), clang::DeclarationNameLoc::CXXOpName::BeginOpNameLoc, clang::DeclarationNameLoc::CXXOperatorName, clang::DeclarationNameLoc::CXXOpName::EndOpNameLoc, clang::ExprError(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::SourceLocation::getFromRawEncoding(), clang::Stmt::getLocStart(), clang::Expr::getObjectKind(), clang::UnaryOperator::getOverloadedOpcode(), clang::BinaryOperator::getOverloadedOpcode(), clang::Expr::getType(), clang::Expr::IgnoreParenCasts(), clang::BinaryOperator::isAssignmentOp(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::Type::isOverloadableType(), and clang::OK_ObjCProperty.
ExprResult clang::TreeTransform< Derived >::RebuildCXXPseudoDestructorExpr | ( | Expr * | Base, |
SourceLocation | OperatorLoc, | ||
bool | isArrow, | ||
CXXScopeSpec & | SS, | ||
TypeSourceInfo * | ScopeType, | ||
SourceLocation | CCLoc, | ||
SourceLocation | TildeLoc, | ||
PseudoDestructorTypeStorage | Destroyed | ||
) |
Build a new pseudo-destructor expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 10756 of file TreeTransform.h.
References clang::ExprError(), clang::CXXScopeSpec::Extend(), clang::Type::getAs(), clang::TypeLoc::getBeginLoc(), clang::PseudoDestructorTypeStorage::getIdentifier(), clang::PseudoDestructorTypeStorage::getLocation(), clang::PointerType::getPointeeType(), clang::TypeSourceInfo::getType(), clang::Expr::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::PseudoDestructorTypeStorage::getTypeSourceInfo(), clang::Expr::isTypeDependent(), and clang::DeclarationNameInfo::setNamedTypeInfo().
ExprResult clang::TreeTransform< Derived >::RebuildCXXReinterpretCastExpr | ( | SourceLocation | OpLoc, |
SourceLocation | LAngleLoc, | ||
TypeSourceInfo * | TInfo, | ||
SourceLocation | RAngleLoc, | ||
SourceLocation | LParenLoc, | ||
Expr * | SubExpr, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ reinterpret_cast expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2173 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXScalarValueInitExpr | ( | TypeSourceInfo * | TSInfo, |
SourceLocation | LParenLoc, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ zero-initialization expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2310 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXStaticCastExpr | ( | SourceLocation | OpLoc, |
SourceLocation | LAngleLoc, | ||
TypeSourceInfo * | TInfo, | ||
SourceLocation | RAngleLoc, | ||
SourceLocation | LParenLoc, | ||
Expr * | SubExpr, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ static_cast expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2139 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXTemporaryObjectExpr | ( | TypeSourceInfo * | TSInfo, |
SourceLocation | LParenLoc, | ||
MultiExprArg | Args, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new object-construction expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2459 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXThisExpr | ( | SourceLocation | ThisLoc, |
QualType | ThisType, | ||
bool | isImplicit | ||
) | [inline] |
Build a new C++ "this" expression.
By default, builds a new "this" expression without performing any semantic analysis. Subclasses may override this routine to provide different behavior.
Definition at line 2270 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXThrowExpr | ( | SourceLocation | ThrowLoc, |
Expr * | Sub, | ||
bool | IsThrownVariableInScope | ||
) | [inline] |
Build a new C++ throw expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2281 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildCXXTryStmt | ( | SourceLocation | TryLoc, |
Stmt * | TryBlock, | ||
ArrayRef< Stmt * > | Handlers | ||
) | [inline] |
Build a new C++ try statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1636 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXTypeidExpr | ( | QualType | TypeInfoType, |
SourceLocation | TypeidLoc, | ||
TypeSourceInfo * | Operand, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ typeid(type) expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2220 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXTypeidExpr | ( | QualType | TypeInfoType, |
SourceLocation | TypeidLoc, | ||
Expr * | Operand, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ typeid(expr) expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2233 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXUnresolvedConstructExpr | ( | TypeSourceInfo * | TSInfo, |
SourceLocation | LParenLoc, | ||
MultiExprArg | Args, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new object-construction expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2473 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXUuidofExpr | ( | QualType | TypeInfoType, |
SourceLocation | TypeidLoc, | ||
TypeSourceInfo * | Operand, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ __uuidof(type) expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2245 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildCXXUuidofExpr | ( | QualType | TypeInfoType, |
SourceLocation | TypeidLoc, | ||
Expr * | Operand, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new C++ __uuidof(expr) expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2257 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildDeclarationNameExpr | ( | const CXXScopeSpec & | SS, |
LookupResult & | R, | ||
bool | RequiresADL | ||
) | [inline] |
Build a new expression that references a declaration.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1721 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildDeclRefExpr | ( | NestedNameSpecifierLoc | QualifierLoc, |
ValueDecl * | VD, | ||
const DeclarationNameInfo & | NameInfo, | ||
TemplateArgumentListInfo * | TemplateArgs | ||
) | [inline] |
Build a new expression that references a declaration.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1732 of file TreeTransform.h.
References clang::CXXScopeSpec::Adopt().
StmtResult clang::TreeTransform< Derived >::RebuildDeclStmt | ( | MutableArrayRef< Decl * > | Decls, |
SourceLocation | StartLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new declaration statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1231 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildDecltypeType | ( | Expr * | Underlying, |
SourceLocation | Loc | ||
) |
Build a new C++11 decltype type.
By default, performs semantic analysis when building the decltype type. Subclasses may override this routine to provide different behavior.
Definition at line 10562 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildDefaultStmt | ( | SourceLocation | DefaultLoc, |
SourceLocation | ColonLoc, | ||
Stmt * | SubStmt | ||
) | [inline] |
Build a new default statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1113 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildDependentNameType | ( | ElaboratedTypeKeyword | Keyword, |
SourceLocation | KeywordLoc, | ||
NestedNameSpecifierLoc | QualifierLoc, | ||
const IdentifierInfo * | Id, | ||
SourceLocation | IdLoc | ||
) | [inline] |
Build a new typename type that refers to an identifier.
By default, performs semantic analysis when building the typename type (or elaborated type). Subclasses may override this routine to provide different behavior.
Definition at line 917 of file TreeTransform.h.
References clang::CXXScopeSpec::Adopt(), clang::LookupResult::Ambiguous, clang::ETK_None, clang::ETK_Typename, clang::LookupResult::Found, clang::LookupResult::FoundOverloaded, clang::LookupResult::FoundUnresolvedValue, clang::LookupResult::getAsSingle(), clang::Decl::getLocation(), clang::NestedNameSpecifierLoc::getNestedNameSpecifier(), clang::LookupResult::getRepresentativeDecl(), clang::LookupResult::getResultKind(), clang::NestedNameSpecifierLoc::getSourceRange(), clang::TypeWithKeyword::getTagTypeKindForKeyword(), clang::NestedNameSpecifier::isDependent(), clang::Sema::LookupTagName, clang::LookupResult::NotFound, and clang::LookupResult::NotFoundInCurrentInstantiation.
ExprResult clang::TreeTransform< Derived >::RebuildDependentScopeDeclRefExpr | ( | NestedNameSpecifierLoc | QualifierLoc, |
SourceLocation | TemplateKWLoc, | ||
const DeclarationNameInfo & | NameInfo, | ||
const TemplateArgumentListInfo * | TemplateArgs, | ||
bool | IsAddressOfOperand, | ||
TypeSourceInfo ** | RecoveryTSI | ||
) | [inline] |
Build a new (previously unresolved) declaration reference expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2395 of file TreeTransform.h.
References clang::CXXScopeSpec::Adopt(), and clang::SourceLocation::isValid().
QualType clang::TreeTransform< Derived >::RebuildDependentSizedArrayType | ( | QualType | ElementType, |
ArrayType::ArraySizeModifier | SizeMod, | ||
Expr * | SizeExpr, | ||
unsigned | IndexTypeQuals, | ||
SourceRange | BracketsRange | ||
) |
Build a new dependent-sized array type given the element type, size modifier, size expression, and index type qualifiers.
By default, performs semantic analysis when building the array type. Subclasses may override this routine to provide different behavior.
Definition at line 10471 of file TreeTransform.h.
References clang::TreeTransform< Derived >::RebuildArrayType().
QualType clang::TreeTransform< Derived >::RebuildDependentSizedExtVectorType | ( | QualType | ElementType, |
Expr * | SizeExpr, | ||
SourceLocation | AttributeLoc | ||
) |
Build a new potentially dependently-sized extended vector type given the element type and number of elements.
By default, performs semantic analysis when building the vector type. Subclasses may override this routine to provide different behavior.
Definition at line 10503 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildDependentTemplateSpecializationType | ( | ElaboratedTypeKeyword | Keyword, |
NestedNameSpecifierLoc | QualifierLoc, | ||
const IdentifierInfo * | Name, | ||
SourceLocation | NameLoc, | ||
TemplateArgumentListInfo & | Args | ||
) | [inline] |
Build a new typename type that refers to a template-id.
By default, builds a new DependentNameType type from the nested-name-specifier and the given type. Subclasses may override this routine to provide different behavior.
Definition at line 874 of file TreeTransform.h.
References clang::CXXScopeSpec::Adopt(), clang::ETK_None, clang::TemplateName::getAsDependentTemplateName(), clang::NestedNameSpecifierLoc::getNestedNameSpecifier(), clang::TemplateName::isNull(), and clang::QualType::isNull().
ExprResult clang::TreeTransform< Derived >::RebuildDesignatedInitExpr | ( | Designation & | Desig, |
MultiExprArg | ArrayExprs, | ||
SourceLocation | EqualOrColonLoc, | ||
bool | GNUSyntax, | ||
Expr * | Init | ||
) | [inline] |
Build a new designated initializer expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1989 of file TreeTransform.h.
References clang::ExprError(), and clang::ActionResult< PtrTy, CompressInvalid >::isInvalid().
StmtResult clang::TreeTransform< Derived >::RebuildDoStmt | ( | SourceLocation | DoLoc, |
Stmt * | Body, | ||
SourceLocation | WhileLoc, | ||
SourceLocation | LParenLoc, | ||
Expr * | Cond, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new do-while statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1181 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildElaboratedType | ( | SourceLocation | KeywordLoc, |
ElaboratedTypeKeyword | Keyword, | ||
NestedNameSpecifierLoc | QualifierLoc, | ||
QualType | Named | ||
) | [inline] |
Build a new qualified name type.
By default, builds a new ElaboratedType type from the keyword, the nested-name-specifier and the named type. Subclasses may override this routine to provide different behavior.
Definition at line 860 of file TreeTransform.h.
References clang::NestedNameSpecifierLoc::getNestedNameSpecifier().
ExprResult clang::TreeTransform< Derived >::RebuildEmptyCXXFoldExpr | ( | SourceLocation | EllipsisLoc, |
BinaryOperatorKind | Operator | ||
) | [inline] |
Build an empty C++1z fold-expression with the given operator.
By default, produces the fallback value for the fold-expression, or produce an error if there is no fallback value.
Definition at line 2810 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildEnumType | ( | EnumDecl * | Enum | ) | [inline] |
Build a new Enum type.
Definition at line 801 of file TreeTransform.h.
VarDecl* clang::TreeTransform< Derived >::RebuildExceptionDecl | ( | VarDecl * | ExceptionDecl, |
TypeSourceInfo * | Declarator, | ||
SourceLocation | StartLoc, | ||
SourceLocation | IdLoc, | ||
IdentifierInfo * | Id | ||
) | [inline] |
Build a new C++ exception declaration.
By default, performs semantic analysis to build the new decaration. Subclasses may override this routine to provide different behavior.
Definition at line 1609 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildExpressionTrait | ( | ExpressionTrait | Trait, |
SourceLocation | StartLoc, | ||
Expr * | Queried, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new expression trait expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2383 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildExtVectorElementExpr | ( | Expr * | Base, |
SourceLocation | OpLoc, | ||
SourceLocation | AccessorLoc, | ||
IdentifierInfo & | Accessor | ||
) | [inline] |
Build a new extended vector element access expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1950 of file TreeTransform.h.
References clang::Expr::getType().
QualType clang::TreeTransform< Derived >::RebuildExtVectorType | ( | QualType | ElementType, |
unsigned | NumElements, | ||
SourceLocation | AttributeLoc | ||
) |
Build a new extended vector type given the element type and number of elements.
By default, performs semantic analysis when building the vector type. Subclasses may override this routine to provide different behavior.
Definition at line 10490 of file TreeTransform.h.
References clang::IntegerLiteral::Create().
StmtResult clang::TreeTransform< Derived >::RebuildForStmt | ( | SourceLocation | ForLoc, |
SourceLocation | LParenLoc, | ||
Stmt * | Init, | ||
Sema::FullExprArg | Cond, | ||
VarDecl * | CondVar, | ||
Sema::FullExprArg | Inc, | ||
SourceLocation | RParenLoc, | ||
Stmt * | Body | ||
) | [inline] |
Build a new for statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1192 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildFunctionNoProtoType | ( | QualType | ResultType | ) |
Build a new unprototyped function type.
Definition at line 10521 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildFunctionProtoType | ( | QualType | T, |
MutableArrayRef< QualType > | ParamTypes, | ||
const FunctionProtoType::ExtProtoInfo & | EPI | ||
) |
Build a new function type.
By default, performs semantic analysis when building the function type. Subclasses may override this routine to provide different behavior.
Definition at line 10510 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildGCCAsmStmt | ( | SourceLocation | AsmLoc, |
bool | IsSimple, | ||
bool | IsVolatile, | ||
unsigned | NumOutputs, | ||
unsigned | NumInputs, | ||
IdentifierInfo ** | Names, | ||
MultiExprArg | Constraints, | ||
MultiExprArg | Exprs, | ||
Expr * | AsmString, | ||
MultiExprArg | Clobbers, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new inline asm statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1241 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildGenericSelectionExpr | ( | SourceLocation | KeyLoc, |
SourceLocation | DefaultLoc, | ||
SourceLocation | RParenLoc, | ||
Expr * | ControllingExpr, | ||
ArrayRef< TypeSourceInfo * > | Types, | ||
ArrayRef< Expr * > | Exprs | ||
) | [inline] |
Build a new generic selection expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2070 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildGotoStmt | ( | SourceLocation | GotoLoc, |
SourceLocation | LabelLoc, | ||
LabelDecl * | Label | ||
) | [inline] |
Build a new goto statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1204 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildIfStmt | ( | SourceLocation | IfLoc, |
Sema::FullExprArg | Cond, | ||
VarDecl * | CondVar, | ||
Stmt * | Then, | ||
SourceLocation | ElseLoc, | ||
Stmt * | Else | ||
) | [inline] |
Build a new "if" statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1143 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildImplicitValueInitExpr | ( | QualType | T | ) | [inline] |
Build a new value-initialized expression.
By default, builds the implicit value initialization without performing any semantic analysis. Subclasses may override this routine to provide different behavior.
Definition at line 2008 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildIncompleteArrayType | ( | QualType | ElementType, |
ArrayType::ArraySizeModifier | SizeMod, | ||
unsigned | IndexTypeQuals, | ||
SourceRange | BracketsRange | ||
) |
Build a new incomplete array type given the element type, size modifier, and index type qualifiers.
By default, performs semantic analysis when building the array type. Subclasses may override this routine to provide different behavior.
Definition at line 10449 of file TreeTransform.h.
References clang::TreeTransform< Derived >::RebuildArrayType().
StmtResult clang::TreeTransform< Derived >::RebuildIndirectGotoStmt | ( | SourceLocation | GotoLoc, |
SourceLocation | StarLoc, | ||
Expr * | Target | ||
) | [inline] |
Build a new indirect goto statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1213 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildInitList | ( | SourceLocation | LBraceLoc, |
MultiExprArg | Inits, | ||
SourceLocation | RBraceLoc, | ||
QualType | ResultTy | ||
) | [inline] |
Build a new initializer list expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1969 of file TreeTransform.h.
References clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Type::isDependentType(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), and clang::Expr::setType().
StmtResult clang::TreeTransform< Derived >::RebuildLabelStmt | ( | SourceLocation | IdentLoc, |
LabelDecl * | L, | ||
SourceLocation | ColonLoc, | ||
Stmt * | SubStmt | ||
) | [inline] |
Build a new label statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1124 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildMemberExpr | ( | Expr * | Base, |
SourceLocation | OpLoc, | ||
bool | isArrow, | ||
NestedNameSpecifierLoc | QualifierLoc, | ||
SourceLocation | TemplateKWLoc, | ||
const DeclarationNameInfo & | MemberNameInfo, | ||
ValueDecl * | Member, | ||
NamedDecl * | FoundDecl, | ||
const TemplateArgumentListInfo * | ExplicitTemplateArgs, | ||
NamedDecl * | FirstQualifierInScope | ||
) | [inline] |
Build a new member access expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1846 of file TreeTransform.h.
References clang::LookupResult::addDecl(), clang::CXXScopeSpec::Adopt(), clang::ExprError(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::NamedDecl::getDeclName(), clang::NestedNameSpecifierLoc::getNestedNameSpecifier(), clang::Expr::getType(), clang::ValueDecl::getType(), clang::Expr::getValueKind(), clang::Type::isRecordType(), clang::Sema::LookupMemberName, clang::OK_Ordinary, clang::LookupResult::resolveKind(), and clang::VK_LValue.
QualType clang::TreeTransform< Derived >::RebuildMemberPointerType | ( | QualType | PointeeType, |
QualType | ClassType, | ||
SourceLocation | Sigil | ||
) |
Build a new member pointer type given the pointee type and the class type it refers into.
By default, performs semantic analysis when building the member pointer type. Subclasses may override this routine to provide different behavior.
Definition at line 10393 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildMSAsmStmt | ( | SourceLocation | AsmLoc, |
SourceLocation | LBraceLoc, | ||
ArrayRef< Token > | AsmToks, | ||
StringRef | AsmString, | ||
unsigned | NumOutputs, | ||
unsigned | NumInputs, | ||
ArrayRef< StringRef > | Constraints, | ||
ArrayRef< StringRef > | Clobbers, | ||
ArrayRef< Expr * > | Exprs, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new MS style inline asm statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1256 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildMSDependentExistsStmt | ( | SourceLocation | KeywordLoc, |
bool | IsIfExists, | ||
NestedNameSpecifierLoc | QualifierLoc, | ||
DeclarationNameInfo | NameInfo, | ||
Stmt * | Nested | ||
) | [inline] |
Build a new C++0x range-based for statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1677 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildObjCArrayLiteral | ( | SourceRange | Range, |
Expr ** | Elements, | ||
unsigned | NumElements | ||
) | [inline] |
Build a new Objective-C array literal.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2564 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildObjCAtCatchStmt | ( | SourceLocation | AtLoc, |
SourceLocation | RParenLoc, | ||
VarDecl * | Var, | ||
Stmt * | Body | ||
) | [inline] |
Build a new Objective-C @catch statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1297 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildObjCAtFinallyStmt | ( | SourceLocation | AtLoc, |
Stmt * | Body | ||
) | [inline] |
Build a new Objective-C @finally statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1309 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildObjCAtSynchronizedOperand | ( | SourceLocation | atLoc, |
Expr * | object | ||
) | [inline] |
Rebuild the operand to an Objective-C @synchronized statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1563 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildObjCAtSynchronizedStmt | ( | SourceLocation | AtLoc, |
Expr * | Object, | ||
Stmt * | Body | ||
) | [inline] |
Build a new Objective-C @synchronized statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1572 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildObjCAtThrowStmt | ( | SourceLocation | AtLoc, |
Expr * | Operand | ||
) | [inline] |
Build a new Objective-C @throw statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1318 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildObjCAtTryStmt | ( | SourceLocation | AtLoc, |
Stmt * | TryBody, | ||
MultiStmtArg | CatchStmts, | ||
Stmt * | Finally | ||
) | [inline] |
Build a new Objective-C @try statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1273 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildObjCAutoreleasePoolStmt | ( | SourceLocation | AtLoc, |
Stmt * | Body | ||
) | [inline] |
Build a new Objective-C @autoreleasepool statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1581 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildObjCBoxedExpr | ( | SourceRange | SR, |
Expr * | ValueExpr | ||
) | [inline] |
Build a new Objective-C boxed expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2556 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildObjCDictionaryLiteral | ( | SourceRange | Range, |
ObjCDictionaryElement * | Elements, | ||
unsigned | NumElements | ||
) | [inline] |
Build a new Objective-C dictionary literal.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2582 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildObjCEncodeExpr | ( | SourceLocation | AtLoc, |
TypeSourceInfo * | EncodeTypeInfo, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new Objective-C @encode expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2592 of file TreeTransform.h.
VarDecl* clang::TreeTransform< Derived >::RebuildObjCExceptionDecl | ( | VarDecl * | ExceptionDecl, |
TypeSourceInfo * | TInfo, | ||
QualType | T | ||
) | [inline] |
Rebuild an Objective-C exception declaration.
By default, performs semantic analysis to build the new declaration. Subclasses may override this routine to provide different behavior.
Definition at line 1285 of file TreeTransform.h.
References clang::NamedDecl::getIdentifier(), clang::DeclaratorDecl::getInnerLocStart(), and clang::Decl::getLocation().
StmtResult clang::TreeTransform< Derived >::RebuildObjCForCollectionStmt | ( | SourceLocation | ForLoc, |
Stmt * | Element, | ||
Expr * | Collection, | ||
SourceLocation | RParenLoc, | ||
Stmt * | Body | ||
) | [inline] |
Build a new Objective-C fast enumeration statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1590 of file TreeTransform.h.
References clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), and clang::StmtError().
ExprResult clang::TreeTransform< Derived >::RebuildObjCIsaExpr | ( | Expr * | BaseArg, |
SourceLocation | IsaLoc, | ||
SourceLocation | OpLoc, | ||
bool | IsArrow | ||
) | [inline] |
Build a new Objective-C "isa" expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2684 of file TreeTransform.h.
References Context, and clang::Expr::getType().
ExprResult clang::TreeTransform< Derived >::RebuildObjCIvarRefExpr | ( | Expr * | BaseArg, |
ObjCIvarDecl * | Ivar, | ||
SourceLocation | IvarLoc, | ||
bool | IsArrow, | ||
bool | IsFreeIvar | ||
) | [inline] |
Build a new Objective-C ivar reference expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2632 of file TreeTransform.h.
References clang::NamedDecl::getDeclName(), and clang::Expr::getType().
ExprResult clang::TreeTransform< Derived >::RebuildObjCMessageExpr | ( | TypeSourceInfo * | ReceiverTypeInfo, |
Selector | Sel, | ||
ArrayRef< SourceLocation > | SelectorLocs, | ||
ObjCMethodDecl * | Method, | ||
SourceLocation | LBracLoc, | ||
MultiExprArg | Args, | ||
SourceLocation | RBracLoc | ||
) | [inline] |
Build a new Objective-C class message.
Definition at line 2599 of file TreeTransform.h.
References clang::TypeSourceInfo::getType().
ExprResult clang::TreeTransform< Derived >::RebuildObjCMessageExpr | ( | Expr * | Receiver, |
Selector | Sel, | ||
ArrayRef< SourceLocation > | SelectorLocs, | ||
ObjCMethodDecl * | Method, | ||
SourceLocation | LBracLoc, | ||
MultiExprArg | Args, | ||
SourceLocation | RBracLoc | ||
) | [inline] |
Build a new Objective-C instance message.
Definition at line 2614 of file TreeTransform.h.
References clang::Expr::getType().
ExprResult clang::TreeTransform< Derived >::RebuildObjCPropertyRefExpr | ( | Expr * | BaseArg, |
ObjCPropertyDecl * | Property, | ||
SourceLocation | PropertyLoc | ||
) | [inline] |
Build a new Objective-C property reference expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2650 of file TreeTransform.h.
References clang::NamedDecl::getDeclName(), and clang::Expr::getType().
ExprResult clang::TreeTransform< Derived >::RebuildObjCPropertyRefExpr | ( | Expr * | Base, |
QualType | T, | ||
ObjCMethodDecl * | Getter, | ||
ObjCMethodDecl * | Setter, | ||
SourceLocation | PropertyLoc | ||
) | [inline] |
Build a new Objective-C property reference expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2668 of file TreeTransform.h.
References Context, clang::OK_ObjCProperty, and clang::VK_LValue.
ExprResult clang::TreeTransform< Derived >::RebuildObjCSubscriptRefExpr | ( | SourceLocation | RB, |
Expr * | Base, | ||
Expr * | Key, | ||
ObjCMethodDecl * | getterMethod, | ||
ObjCMethodDecl * | setterMethod | ||
) | [inline] |
Definition at line 2570 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildOffsetOfExpr | ( | SourceLocation | OperatorLoc, |
TypeSourceInfo * | Type, | ||
Sema::OffsetOfComponent * | Components, | ||
unsigned | NumComponents, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new builtin offsetof expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1780 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPAlignedClause | ( | ArrayRef< Expr * > | VarList, |
Expr * | Alignment, | ||
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | ColonLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'aligned' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1514 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPCollapseClause | ( | Expr * | Num, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'collapse' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1385 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPCopyinClause | ( | ArrayRef< Expr * > | VarList, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'copyin' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1527 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPCopyprivateClause | ( | ArrayRef< Expr * > | VarList, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'copyprivate' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1539 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPDefaultClause | ( | OpenMPDefaultClauseKind | Kind, |
SourceLocation | KindKwLoc, | ||
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'default' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1396 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildOMPExecutableDirective | ( | OpenMPDirectiveKind | Kind, |
DeclarationNameInfo | DirName, | ||
ArrayRef< OMPClause * > | Clauses, | ||
Stmt * | AStmt, | ||
SourceLocation | StartLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP executable directive.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1327 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPFinalClause | ( | Expr * | Condition, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'final' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1352 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPFirstprivateClause | ( | ArrayRef< Expr * > | VarList, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'firstprivate' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1449 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPFlushClause | ( | ArrayRef< Expr * > | VarList, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'flush' pseudo clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1551 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPIfClause | ( | Expr * | Condition, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'if' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1340 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPLastprivateClause | ( | ArrayRef< Expr * > | VarList, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'lastprivate' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1461 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPLinearClause | ( | ArrayRef< Expr * > | VarList, |
Expr * | Step, | ||
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | ColonLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'linear' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1501 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPNumThreadsClause | ( | Expr * | NumThreads, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'num_threads' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1363 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPPrivateClause | ( | ArrayRef< Expr * > | VarList, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'private' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1437 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPProcBindClause | ( | OpenMPProcBindClauseKind | Kind, |
SourceLocation | KindKwLoc, | ||
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'proc_bind' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1409 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPReductionClause | ( | ArrayRef< Expr * > | VarList, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | ColonLoc, | ||
SourceLocation | EndLoc, | ||
CXXScopeSpec & | ReductionIdScopeSpec, | ||
const DeclarationNameInfo & | ReductionId | ||
) | [inline] |
Build a new OpenMP 'reduction' clause.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1485 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPSafelenClause | ( | Expr * | Len, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'safelen' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1375 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPScheduleClause | ( | OpenMPScheduleClauseKind | Kind, |
Expr * | ChunkSize, | ||
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | KindLoc, | ||
SourceLocation | CommaLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'schedule' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1422 of file TreeTransform.h.
OMPClause* clang::TreeTransform< Derived >::RebuildOMPSharedClause | ( | ArrayRef< Expr * > | VarList, |
SourceLocation | StartLoc, | ||
SourceLocation | LParenLoc, | ||
SourceLocation | EndLoc | ||
) | [inline] |
Build a new OpenMP 'shared' clause.
By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.
Definition at line 1473 of file TreeTransform.h.
TemplateArgumentLoc clang::TreeTransform< Derived >::RebuildPackExpansion | ( | TemplateArgumentLoc | Pattern, |
SourceLocation | EllipsisLoc, | ||
Optional< unsigned > | NumExpansions | ||
) | [inline] |
Build a new template argument pack expansion.
By default, performs semantic analysis to build a new pack expansion for a template argument. Subclasses may override this routine to provide different behavior.
Definition at line 2741 of file TreeTransform.h.
References clang::TemplateArgument::Declaration, clang::TemplateArgument::Expression, clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::TemplateArgumentLoc::getArgument(), clang::TemplateArgument::getAsTemplate(), clang::TemplateArgument::getKind(), clang::TemplateArgumentLoc::getSourceExpression(), clang::TemplateArgumentLoc::getTemplateNameLoc(), clang::TemplateArgumentLoc::getTemplateQualifierLoc(), clang::TemplateArgumentLoc::getTypeSourceInfo(), clang::TemplateArgument::Integral, clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::TemplateArgument::Null, clang::TemplateArgument::NullPtr, clang::TemplateArgument::Pack, clang::TemplateArgument::Template, clang::TemplateArgument::TemplateExpansion, and clang::TemplateArgument::Type.
ExprResult clang::TreeTransform< Derived >::RebuildPackExpansion | ( | Expr * | Pattern, |
SourceLocation | EllipsisLoc, | ||
Optional< unsigned > | NumExpansions | ||
) | [inline] |
Build a new expression pack expansion.
By default, performs semantic analysis to build a new pack expansion for an expression. Subclasses may override this routine to provide different behavior.
Definition at line 2789 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildPackExpansionType | ( | QualType | Pattern, |
SourceRange | PatternRange, | ||
SourceLocation | EllipsisLoc, | ||
Optional< unsigned > | NumExpansions | ||
) | [inline] |
Build a new pack expansion type.
By default, builds a new PackExpansionType type from the given pattern. Subclasses may override this routine to provide different behavior.
Definition at line 1014 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildParenExpr | ( | Expr * | SubExpr, |
SourceLocation | LParen, | ||
SourceLocation | RParen | ||
) | [inline] |
Build a new expression in parentheses.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1748 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildParenListExpr | ( | SourceLocation | LParenLoc, |
MultiExprArg | SubExprs, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new expression list in parentheses.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2028 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildParenType | ( | QualType | InnerType | ) | [inline] |
Build a new parenthesized type.
By default, builds a new ParenType type from the inner type. Subclasses may override this routine to provide different behavior.
Definition at line 851 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildPointerType | ( | QualType | PointeeType, |
SourceLocation | Sigil | ||
) |
Build a new pointer type given its pointee type.
By default, performs semantic analysis when building the pointer type. Subclasses may override this routine to provide different behavior.
Definition at line 10369 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildPredefinedExpr | ( | SourceLocation | Loc, |
PredefinedExpr::IdentType | IT | ||
) | [inline] |
Build a new predefined expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1712 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildRecordType | ( | RecordDecl * | Record | ) | [inline] |
Build a new class/struct/union type.
Definition at line 796 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildReferenceType | ( | QualType | ReferentType, |
bool | LValue, | ||
SourceLocation | Sigil | ||
) |
Build a new reference type given the type it references.
By default, performs semantic analysis when building the reference type. Subclasses may override this routine to provide different behavior.
LValue | whether the type was written with an lvalue sigil or an rvalue sigil. |
Definition at line 10384 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildReturnStmt | ( | SourceLocation | ReturnLoc, |
Expr * | Result | ||
) | [inline] |
Build a new return statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1223 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildSEHExceptStmt | ( | SourceLocation | Loc, |
Expr * | FilterExpr, | ||
Stmt * | Block | ||
) | [inline] |
Definition at line 1699 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildSEHFinallyStmt | ( | SourceLocation | Loc, |
Stmt * | Block | ||
) | [inline] |
Definition at line 1704 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildSEHTryStmt | ( | bool | IsCXXTry, |
SourceLocation | TryLoc, | ||
Stmt * | TryBlock, | ||
Stmt * | Handler | ||
) | [inline] |
Definition at line 1694 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildShuffleVectorExpr | ( | SourceLocation | BuiltinLoc, |
MultiExprArg | SubExprs, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new shuffle vector expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2700 of file TreeTransform.h.
References clang::CK_BuiltinFnToFnPtr, clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Decl::getTranslationUnitDecl(), clang::Expr::getValueKindForType(), clang::DeclContext::lookup(), and clang::VK_RValue.
ExprResult clang::TreeTransform< Derived >::RebuildSizeOfPackExpr | ( | SourceLocation | OperatorLoc, |
NamedDecl * | Pack, | ||
SourceLocation | PackLoc, | ||
SourceLocation | RParenLoc, | ||
Optional< unsigned > | Length | ||
) | [inline] |
Build a new expression to compute the length of a parameter pack.
Definition at line 2538 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildStmtExpr | ( | SourceLocation | LParenLoc, |
Stmt * | SubStmt, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new GNU statement expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2048 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildSwitchStmtBody | ( | SourceLocation | SwitchLoc, |
Stmt * | Switch, | ||
Stmt * | Body | ||
) | [inline] |
Attach the body to the switch statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1163 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildSwitchStmtStart | ( | SourceLocation | SwitchLoc, |
Expr * | Cond, | ||
VarDecl * | CondVar | ||
) | [inline] |
Start building a new switch statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1153 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildTemplateIdExpr | ( | const CXXScopeSpec & | SS, |
SourceLocation | TemplateKWLoc, | ||
LookupResult & | R, | ||
bool | RequiresADL, | ||
const TemplateArgumentListInfo * | TemplateArgs | ||
) | [inline] |
Build a new template-id expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2417 of file TreeTransform.h.
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName | ( | CXXScopeSpec & | SS, |
bool | TemplateKW, | ||
TemplateDecl * | Template | ||
) |
Build a new template name given a nested name specifier, a flag indicating whether the "template" keyword was provided, and the template that the template name refers to.
By default, builds the new template name directly. Subclasses may override this routine to provide different behavior.
Definition at line 10590 of file TreeTransform.h.
References clang::CXXScopeSpec::getScopeRep().
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName | ( | CXXScopeSpec & | SS, |
const IdentifierInfo & | Name, | ||
SourceLocation | NameLoc, | ||
QualType | ObjectType, | ||
NamedDecl * | FirstQualifierInScope | ||
) |
Build a new template name given a nested name specifier and the name that is referred to as a template.
By default, performs semantic analysis to determine whether the name can be resolved to a specific template, then builds the appropriate kind of template name. Subclasses may override this routine to provide different behavior.
Definition at line 10599 of file TreeTransform.h.
References clang::OpaquePtr< PtrTy >::get(), clang::OpaquePtr< QualType >::make(), and clang::UnqualifiedId::setIdentifier().
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName | ( | CXXScopeSpec & | SS, |
OverloadedOperatorKind | Operator, | ||
SourceLocation | NameLoc, | ||
QualType | ObjectType | ||
) |
Build a new template name given a nested name specifier and the overloaded operator name that is referred to as a template.
By default, performs semantic analysis to determine whether the name can be resolved to a specific template, then builds the appropriate kind of template name. Subclasses may override this routine to provide different behavior.
Definition at line 10618 of file TreeTransform.h.
References clang::OpaquePtr< PtrTy >::get(), clang::OpaquePtr< QualType >::make(), and clang::UnqualifiedId::setOperatorFunctionId().
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName | ( | TemplateTemplateParmDecl * | Param, |
const TemplateArgument & | ArgPack | ||
) | [inline] |
Build a new template name given a template template parameter pack and the.
By default, performs semantic analysis to determine whether the name can be resolved to a specific template, then builds the appropriate kind of template name. Subclasses may override this routine to provide different behavior.
Definition at line 1070 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildTemplateSpecializationType | ( | TemplateName | Template, |
SourceLocation | TemplateLoc, | ||
TemplateArgumentListInfo & | Args | ||
) |
Build a new template specialization type.
By default, performs semantic analysis when building the template specialization type. Subclasses may override this routine to provide different behavior.
Definition at line 10575 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildTypedefType | ( | TypedefNameDecl * | Typedef | ) | [inline] |
Build a new typedef type.
Definition at line 791 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildTypeOfExprType | ( | Expr * | Underlying, |
SourceLocation | Loc | ||
) |
Build a new typeof(expr) type.
By default, performs semantic analysis when building the typeof type. Subclasses may override this routine to provide different behavior.
Definition at line 10551 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildTypeOfType | ( | QualType | Underlying | ) |
Build a new typeof(type) type.
By default, builds a new TypeOfType with the given underlying type.
Definition at line 10557 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildTypeTrait | ( | TypeTrait | Trait, |
SourceLocation | StartLoc, | ||
ArrayRef< TypeSourceInfo * > | Args, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new type trait expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2360 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildUnaryExprOrTypeTrait | ( | TypeSourceInfo * | TInfo, |
SourceLocation | OpLoc, | ||
UnaryExprOrTypeTrait | ExprKind, | ||
SourceRange | R | ||
) | [inline] |
Build a new sizeof, alignof or vec_step expression with a type argument.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1794 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildUnaryExprOrTypeTrait | ( | Expr * | SubExpr, |
SourceLocation | OpLoc, | ||
UnaryExprOrTypeTrait | ExprKind, | ||
SourceRange | R | ||
) | [inline] |
Build a new sizeof, alignof or vec step expression with an expression argument.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1806 of file TreeTransform.h.
References clang::ExprError(), and clang::ActionResult< PtrTy, CompressInvalid >::isInvalid().
ExprResult clang::TreeTransform< Derived >::RebuildUnaryOperator | ( | SourceLocation | OpLoc, |
UnaryOperatorKind | Opc, | ||
Expr * | SubExpr | ||
) | [inline] |
Build a new unary operator expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 1770 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildUnaryTransformType | ( | QualType | BaseType, |
UnaryTransformType::UTTKind | UKind, | ||
SourceLocation | Loc | ||
) |
Build a new unary transform type.
Definition at line 10568 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::RebuildUnresolvedMemberExpr | ( | Expr * | BaseE, |
QualType | BaseType, | ||
SourceLocation | OperatorLoc, | ||
bool | IsArrow, | ||
NestedNameSpecifierLoc | QualifierLoc, | ||
SourceLocation | TemplateKWLoc, | ||
NamedDecl * | FirstQualifierInScope, | ||
LookupResult & | R, | ||
const TemplateArgumentListInfo * | TemplateArgs | ||
) | [inline] |
Build a new member reference expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2511 of file TreeTransform.h.
References clang::CXXScopeSpec::Adopt().
QualType clang::TreeTransform< Derived >::RebuildUnresolvedUsingType | ( | Decl * | D | ) |
Rebuild an unresolved typename type, given the decl that the UnresolvedUsingTypenameDecl was transformed to.
Definition at line 10526 of file TreeTransform.h.
References clang::UsingDecl::hasTypename(), clang::Decl::isInvalidDecl(), clang::UsingDecl::shadow_begin(), and clang::UsingDecl::shadow_end().
ExprResult clang::TreeTransform< Derived >::RebuildVAArgExpr | ( | SourceLocation | BuiltinLoc, |
Expr * | SubExpr, | ||
TypeSourceInfo * | TInfo, | ||
SourceLocation | RParenLoc | ||
) | [inline] |
Build a new va_arg
expression.
By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.
Definition at line 2016 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::RebuildVariableArrayType | ( | QualType | ElementType, |
ArrayType::ArraySizeModifier | SizeMod, | ||
Expr * | SizeExpr, | ||
unsigned | IndexTypeQuals, | ||
SourceRange | BracketsRange | ||
) |
Build a new variable-length array type given the element type, size modifier, size expression, and index type qualifiers.
By default, performs semantic analysis when building the array type. Subclasses may override this routine to provide different behavior.
Definition at line 10459 of file TreeTransform.h.
References clang::TreeTransform< Derived >::RebuildArrayType().
QualType clang::TreeTransform< Derived >::RebuildVectorType | ( | QualType | ElementType, |
unsigned | NumElements, | ||
VectorType::VectorKind | VecKind | ||
) |
Build a new vector type given the element type and number of elements.
By default, performs semantic analysis when building the vector type. Subclasses may override this routine to provide different behavior.
Definition at line 10482 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::RebuildWhileStmt | ( | SourceLocation | WhileLoc, |
Sema::FullExprArg | Cond, | ||
VarDecl * | CondVar, | ||
Stmt * | Body | ||
) | [inline] |
Build a new while statement.
By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.
Definition at line 1172 of file TreeTransform.h.
void clang::TreeTransform< Derived >::RememberPartiallySubstitutedPack | ( | TemplateArgument | Arg | ) | [inline] |
"Remember" the partially-substituted pack template argument after performing an instantiation that must preserve the parameter pack use.
This routine is meant to be overridden by the template instantiator.
Definition at line 276 of file TreeTransform.h.
void clang::TreeTransform< Derived >::setBase | ( | SourceLocation | Loc, |
DeclarationName | Entity | ||
) | [inline] |
Sets the "base" location and entity when that information is known based on another transformation.
By default, the source location and entity are ignored. Subclasses can override this function to provide a customized implementation.
Definition at line 170 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::TransformAddressOfOperand | ( | Expr * | E | ) |
The operand of a unary address-of operator has special rules: it's allowed to refer to a non-static member of a class even if there's no 'this' object available.
Definition at line 7364 of file TreeTransform.h.
References clang::TreeTransform< Derived >::TransformDependentScopeDeclRefExpr().
const Attr * clang::TreeTransform< Derived >::TransformAttr | ( | const Attr * | S | ) |
Transform the given attribute.
By default, this routine transforms a statement by delegating to the appropriate TransformXXXAttr function to transform a specific kind of attribute. Subclasses may override this function to transform attributed statements using some other mechanism.
Definition at line 5708 of file TreeTransform.h.
References clang::Attr::getKind().
void clang::TreeTransform< Derived >::transformAttrs | ( | Decl * | Old, |
Decl * | New | ||
) | [inline] |
Transform the attributes associated with the given declaration and place them on the new declaration.
By default, this operation does nothing. Subclasses may override this behavior to transform attributes.
Definition at line 417 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::TransformCompoundStmt | ( | CompoundStmt * | S, |
bool | IsStmtExpr | ||
) |
Definition at line 5591 of file TreeTransform.h.
References clang::TreeTransform< Derived >::TransformCompoundStmt().
Referenced by clang::TreeTransform< Derived >::TransformCompoundStmt().
ExprResult clang::TreeTransform< Derived >::TransformCXXNamedCastExpr | ( | CXXNamedCastExpr * | E | ) |
Definition at line 8170 of file TreeTransform.h.
References clang::ExprError(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::CXXNamedCastExpr::getAngleBrackets(), clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), clang::CXXNamedCastExpr::getOperatorLoc(), clang::CXXNamedCastExpr::getRParenLoc(), clang::Stmt::getStmtClass(), clang::CastExpr::getSubExpr(), clang::CastExpr::getSubExprAsWritten(), clang::ExplicitCastExpr::getTypeInfoAsWritten(), and clang::ActionResult< PtrTy, CompressInvalid >::isInvalid().
Decl* clang::TreeTransform< Derived >::TransformDecl | ( | SourceLocation | Loc, |
Decl * | D | ||
) | [inline] |
Transform the given declaration, which is referenced from a type or expression.
By default, acts as the identity function on declarations, unless the transformer has had to transform the declaration itself. Subclasses may override this function to provide alternate behavior.
Definition at line 403 of file TreeTransform.h.
DeclarationNameInfo clang::TreeTransform< Derived >::TransformDeclarationNameInfo | ( | const DeclarationNameInfo & | NameInfo | ) |
Transform the given declaration name.
By default, transforms the types of conversion function, constructor, and destructor names and then (if needed) rebuilds the declaration name. Identifiers and selectors are returned unmodified. Sublcasses may override this function to provide alternate behavior.
Definition at line 3223 of file TreeTransform.h.
References clang::DeclarationName::CXXConstructorName, clang::DeclarationName::CXXConversionFunctionName, clang::DeclarationName::CXXDestructorName, clang::DeclarationName::CXXLiteralOperatorName, clang::DeclarationName::CXXOperatorName, clang::DeclarationName::CXXUsingDirective, clang::DeclarationName::getCXXNameType(), clang::DeclarationNameInfo::getLoc(), clang::DeclarationNameInfo::getName(), clang::DeclarationNameInfo::getNamedTypeInfo(), clang::DeclarationName::getNameKind(), clang::TypeSourceInfo::getType(), clang::DeclarationName::Identifier, clang::DeclarationName::ObjCMultiArgSelector, clang::DeclarationName::ObjCOneArgSelector, clang::DeclarationName::ObjCZeroArgSelector, clang::DeclarationNameInfo::setName(), and clang::DeclarationNameInfo::setNamedTypeInfo().
Decl* clang::TreeTransform< Derived >::TransformDefinition | ( | SourceLocation | Loc, |
Decl * | D | ||
) | [inline] |
Transform the definition of the given declaration.
By default, invokes TransformDecl() to transform the declaration. Subclasses may override this function to provide alternate behavior.
Definition at line 434 of file TreeTransform.h.
ExprResult clang::TreeTransform< Derived >::TransformDependentScopeDeclRefExpr | ( | DependentScopeDeclRefExpr * | E, |
bool | IsAddressOfOperand, | ||
TypeSourceInfo ** | RecoveryTSI | ||
) |
Definition at line 8927 of file TreeTransform.h.
Referenced by clang::TreeTransform< Derived >::TransformAddressOfOperand().
QualType clang::TreeTransform< Derived >::TransformDependentTemplateSpecializationType | ( | TypeLocBuilder & | TLB, |
DependentTemplateSpecializationTypeLoc | TL, | ||
TemplateName | Template, | ||
CXXScopeSpec & | SS | ||
) |
FIXME: Wrap this in an elaborated-type-specifier?
Definition at line 5240 of file TreeTransform.h.
References clang::TemplateName::getAsDependentTemplateName(), clang::DependentTemplateSpecializationTypeLoc::getElaboratedKeywordLoc(), clang::TypeWithKeyword::getKeyword(), clang::DependentTemplateSpecializationTypeLoc::getLAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::getNumArgs(), clang::DependentTemplateSpecializationTypeLoc::getRAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::getTemplateKeywordLoc(), clang::DependentTemplateSpecializationTypeLoc::getTemplateNameLoc(), clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getTypePtr(), clang::CXXScopeSpec::getWithLocInContext(), clang::QualType::isNull(), clang::TypeLocBuilder::push(), clang::TemplateSpecializationTypeLoc::setArgLocInfo(), clang::DependentTemplateSpecializationTypeLoc::setArgLocInfo(), clang::DependentTemplateSpecializationTypeLoc::setElaboratedKeywordLoc(), clang::TemplateArgumentListInfo::setLAngleLoc(), clang::TemplateSpecializationTypeLoc::setLAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::setLAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::setQualifierLoc(), clang::TemplateArgumentListInfo::setRAngleLoc(), clang::TemplateSpecializationTypeLoc::setRAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::setRAngleLoc(), clang::TemplateSpecializationTypeLoc::setTemplateKeywordLoc(), clang::DependentTemplateSpecializationTypeLoc::setTemplateKeywordLoc(), clang::TemplateSpecializationTypeLoc::setTemplateNameLoc(), clang::DependentTemplateSpecializationTypeLoc::setTemplateNameLoc(), and clang::TemplateArgumentListInfo::size().
QualType clang::TreeTransform< Derived >::TransformDependentTemplateSpecializationType | ( | TypeLocBuilder & | TLB, |
DependentTemplateSpecializationTypeLoc | TL, | ||
NestedNameSpecifierLoc | QualifierLoc | ||
) |
Definition at line 5463 of file TreeTransform.h.
References clang::DependentTemplateSpecializationTypeLoc::getElaboratedKeywordLoc(), clang::DependentTemplateSpecializationType::getIdentifier(), clang::TypeWithKeyword::getKeyword(), clang::DependentTemplateSpecializationTypeLoc::getLAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::getNumArgs(), clang::DependentTemplateSpecializationTypeLoc::getRAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::getTemplateKeywordLoc(), clang::DependentTemplateSpecializationTypeLoc::getTemplateNameLoc(), clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getTypePtr(), clang::QualType::isNull(), clang::TypeLocBuilder::push(), clang::TemplateSpecializationTypeLoc::setArgLocInfo(), clang::DependentTemplateSpecializationTypeLoc::setArgLocInfo(), clang::ElaboratedTypeLoc::setElaboratedKeywordLoc(), clang::DependentTemplateSpecializationTypeLoc::setElaboratedKeywordLoc(), clang::TemplateArgumentListInfo::setLAngleLoc(), clang::TemplateSpecializationTypeLoc::setLAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::setLAngleLoc(), clang::ElaboratedTypeLoc::setQualifierLoc(), clang::DependentTemplateSpecializationTypeLoc::setQualifierLoc(), clang::TemplateArgumentListInfo::setRAngleLoc(), clang::TemplateSpecializationTypeLoc::setRAngleLoc(), clang::DependentTemplateSpecializationTypeLoc::setRAngleLoc(), clang::TemplateSpecializationTypeLoc::setTemplateKeywordLoc(), clang::DependentTemplateSpecializationTypeLoc::setTemplateKeywordLoc(), clang::TemplateSpecializationTypeLoc::setTemplateNameLoc(), clang::DependentTemplateSpecializationTypeLoc::setTemplateNameLoc(), and clang::TemplateArgumentListInfo::size().
void clang::TreeTransform< Derived >::transformedLocalDecl | ( | Decl * | Old, |
Decl * | New | ||
) | [inline] |
Note that a local declaration has been transformed by this transformer.
Local declarations are typically transformed via a call to TransformDefinition. However, in some cases (e.g., lambda expressions), the transformer itself has to transform the declarations. This routine can be overridden by a subclass that keeps track of such mappings.
Definition at line 426 of file TreeTransform.h.
bool clang::TreeTransform< Derived >::TransformExceptionSpec | ( | SourceLocation | Loc, |
FunctionProtoType::ExceptionSpecInfo & | ESI, | ||
SmallVectorImpl< QualType > & | Exceptions, | ||
bool & | Changed | ||
) |
Definition at line 4670 of file TreeTransform.h.
References clang::Sema::ConstantEvaluated, clang::EST_ComputedNoexcept, clang::EST_Dynamic, clang::EST_Unevaluated, clang::EST_Uninstantiated, clang::FunctionProtoType::ExceptionSpecInfo::Exceptions, clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Type::getAs(), clang::Stmt::getLocStart(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::QualType::isNull(), clang::Expr::isValueDependent(), clang::FunctionProtoType::ExceptionSpecInfo::NoexceptExpr, and clang::FunctionProtoType::ExceptionSpecInfo::Type.
Referenced by clang::TreeTransform< Derived >::TransformFunctionProtoType().
ExprResult clang::TreeTransform< Derived >::TransformExpr | ( | Expr * | E | ) |
Transform the given expression.
By default, this routine transforms an expression by delegating to the appropriate TransformXXXExpr function to build a new expression. Subclasses may override this function to transform expressions using some other mechanism.
Definition at line 2898 of file TreeTransform.h.
References clang::Stmt::getStmtClass(), and clang::Stmt::NoStmtClass.
bool clang::TreeTransform< Derived >::TransformExprs | ( | Expr ** | Inputs, |
unsigned | NumInputs, | ||
bool | IsCall, | ||
SmallVectorImpl< Expr * > & | Outputs, | ||
bool * | ArgChanged = nullptr |
||
) |
Transform the given list of expressions.
This routine transforms a list of expressions by invoking TransformExpr()
for each subexpression. However, it also provides support for variadic templates by expanding any pack expansions (if the derived class permits such expansion) along the way. When pack expansions are present, the number of outputs may not equal the number of inputs.
Inputs | The set of expressions to be transformed. |
NumInputs | The number of expressions in Inputs . |
IsCall | If true , then this transform is being performed on function-call arguments, and any arguments that should be dropped, will be. |
Outputs | The transformed input expressions will be added to this vector. |
ArgChanged | If non-NULL, will be set true if any argument changed due to transformation. |
Definition at line 2993 of file TreeTransform.h.
References clang::Expr::containsUnexpandedParameterPack(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::Stmt::getSourceRange(), and clang::ActionResult< PtrTy, CompressInvalid >::isInvalid().
NamedDecl* clang::TreeTransform< Derived >::TransformFirstQualifierInScope | ( | NamedDecl * | D, |
SourceLocation | Loc | ||
) | [inline] |
Transform the given declaration, which was the first part of a nested-name-specifier in a member access expression.
This specific declaration transformation only applies to the first identifier in a nested-name-specifier of a member access expression, e.g., the T
in x->T::member
By default, invokes TransformDecl() to transform the declaration. Subclasses may override this function to provide alternate behavior.
Definition at line 447 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::TransformFunctionProtoType | ( | TypeLocBuilder & | TLB, |
FunctionProtoTypeLoc | TL, | ||
CXXRecordDecl * | ThisContext, | ||
unsigned | ThisTypeQuals, | ||
Fn | TransformExceptionSpec | ||
) |
Definition at line 4592 of file TreeTransform.h.
References clang::FunctionProtoType::ExtProtoInfo::ExceptionSpec, clang::TypeLoc::getBeginLoc(), clang::FunctionProtoType::getExtProtoInfo(), clang::FunctionTypeLoc::getLocalRangeBegin(), clang::FunctionTypeLoc::getLocalRangeEnd(), clang::FunctionTypeLoc::getLParenLoc(), clang::FunctionTypeLoc::getNumParams(), clang::FunctionProtoType::getNumParams(), clang::FunctionTypeLoc::getParmArray(), clang::FunctionTypeLoc::getReturnLoc(), clang::FunctionType::getReturnType(), clang::FunctionTypeLoc::getRParenLoc(), clang::TypeLoc::getType(), clang::InheritingConcreteTypeLoc< Base, Derived, TypeClass >::getTypePtr(), clang::FunctionProtoType::hasTrailingReturn(), clang::QualType::isNull(), clang::FunctionProtoType::param_type_begin(), clang::FunctionProtoType::param_type_end(), clang::TypeLocBuilder::push(), clang::FunctionTypeLoc::setLocalRangeBegin(), clang::FunctionTypeLoc::setLocalRangeEnd(), clang::FunctionTypeLoc::setLParenLoc(), clang::FunctionTypeLoc::setParam(), and clang::FunctionTypeLoc::setRParenLoc().
Referenced by clang::TreeTransform< Derived >::TransformFunctionProtoType().
QualType clang::TreeTransform< Derived >::TransformFunctionProtoType | ( | TypeLocBuilder & | TLB, |
FunctionProtoTypeLoc | TL | ||
) |
Definition at line 4579 of file TreeTransform.h.
References clang::TypeLoc::getBeginLoc(), clang::TreeTransform< Derived >::TransformExceptionSpec(), and clang::TreeTransform< Derived >::TransformFunctionProtoType().
ParmVarDecl * clang::TreeTransform< Derived >::TransformFunctionTypeParam | ( | ParmVarDecl * | OldParm, |
int | indexAdjustment, | ||
Optional< unsigned > | NumExpansions, | ||
bool | ExpectParameterPack | ||
) |
Transforms a single function-type parameter. Return null on error.
indexAdjustment | - A number to add to the parameter's scope index; can be negative |
Definition at line 4327 of file TreeTransform.h.
References clang::TypeLoc::castAs(), clang::ParmVarDecl::Create(), clang::Decl::getDeclContext(), clang::PackExpansionTypeLoc::getEllipsisLoc(), clang::TypeLoc::getFullDataSize(), clang::ParmVarDecl::getFunctionScopeDepth(), clang::ParmVarDecl::getFunctionScopeIndex(), clang::NamedDecl::getIdentifier(), clang::DeclaratorDecl::getInnerLocStart(), clang::Decl::getLocation(), clang::PackExpansionTypeLoc::getPatternLoc(), clang::TypeLoc::getSourceRange(), clang::VarDecl::getStorageClass(), clang::TypeSourceInfo::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::DeclaratorDecl::getTypeSourceInfo(), clang::QualType::isNull(), clang::PackExpansionTypeLoc::setEllipsisLoc(), and clang::ParmVarDecl::setScopeInfo().
bool clang::TreeTransform< Derived >::TransformFunctionTypeParams | ( | SourceLocation | Loc, |
ParmVarDecl ** | Params, | ||
unsigned | NumParams, | ||
const QualType * | ParamTypes, | ||
SmallVectorImpl< QualType > & | PTypes, | ||
SmallVectorImpl< ParmVarDecl * > * | PVars | ||
) |
Transforms the parameters of a function type into the given vectors.
The result vectors should be kept in sync; null entries in the variables vector are acceptable.
Return true on error.
Definition at line 4383 of file TreeTransform.h.
References clang::TypeLoc::castAs(), clang::PackExpansionTypeLoc::getEllipsisLoc(), clang::PackExpansionType::getNumExpansions(), clang::PackExpansionTypeLoc::getPatternLoc(), clang::ValueDecl::getType(), clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getTypePtr(), and clang::QualType::isNull().
ExprResult clang::TreeTransform< Derived >::TransformInitializer | ( | Expr * | Init, |
bool | NotCopyInit | ||
) |
Transform the given initializer.
By default, this routine transforms an initializer by stripping off the semantic nodes added by initialization, then passing the result to TransformExpr or TransformExprs.
Definition at line 2915 of file TreeTransform.h.
References clang::ExprEmpty(), clang::ExprError(), clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), and clang::SourceRange::isInvalid().
ExprResult clang::TreeTransform< Derived >::TransformLambdaScope | ( | LambdaExpr * | E, |
CXXMethodDecl * | CallOperator, | ||
ArrayRef< InitCaptureInfoTy > | InitCaptureExprsAndTypes | ||
) |
Transform the captures and body of a lambda expression.
Definition at line 9231 of file TreeTransform.h.
References AttributeLangSupport::C, clang::LambdaExpr::capture_begin(), clang::LambdaExpr::capture_end(), clang::ExprError(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::LambdaExpr::getBody(), clang::LambdaExpr::getCaptureDefault(), clang::LambdaExpr::getCaptureDefaultLoc(), clang::NamedDecl::getIdentifier(), clang::LambdaExpr::getIntroducerRange(), clang::Decl::getLocation(), clang::LambdaExpr::getLocStart(), clang::LambdaExpr::hasExplicitParameters(), clang::LambdaExpr::hasExplicitResultType(), clang::Decl::isImplicit(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::Decl::isInvalidDecl(), clang::LambdaExpr::isMutable(), clang::QualType::isNull(), clang::LCK_ByCopy, clang::Sema::PotentiallyEvaluated, clang::Sema::TryCapture_ExplicitByRef, clang::Sema::TryCapture_ExplicitByVal, and clang::Sema::TryCapture_Implicit.
NestedNameSpecifierLoc clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc | ( | NestedNameSpecifierLoc | NNS, |
QualType | ObjectType = QualType() , |
||
NamedDecl * | FirstQualifierInScope = nullptr |
||
) |
Transform the given nested-name-specifier with source-location information.
By default, transforms all of the types and declarations within the nested-name-specifier. Subclasses may override this function to provide alternate behavior.
Definition at line 3109 of file TreeTransform.h.
References clang::TypeLoc::getAs(), clang::NestedNameSpecifier::getAsIdentifier(), clang::NestedNameSpecifier::getAsNamespace(), clang::NestedNameSpecifier::getAsNamespaceAlias(), clang::NestedNameSpecifier::getAsRecordDecl(), clang::TypeLoc::getBeginLoc(), clang::NestedNameSpecifierLoc::getBeginLoc(), clang::NestedNameSpecifierLoc::getEndLoc(), clang::NestedNameSpecifier::getKind(), clang::NestedNameSpecifierLoc::getLocalBeginLoc(), clang::NestedNameSpecifierLoc::getLocalEndLoc(), clang::NestedNameSpecifierLoc::getNestedNameSpecifier(), clang::NestedNameSpecifierLoc::getOpaqueData(), clang::NestedNameSpecifierLoc::getPrefix(), clang::CXXScopeSpec::getScopeRep(), clang::TypeLoc::getType(), clang::TypedefTypeLoc::getTypedefNameDecl(), clang::NestedNameSpecifierLoc::getTypeLoc(), clang::CXXScopeSpec::getWithLocInContext(), clang::NestedNameSpecifier::Global, clang::QualType::hasLocalQualifiers(), clang::NestedNameSpecifier::Identifier, clang::Type::isDependentType(), clang::Type::isEnumeralType(), clang::Decl::isInvalidDecl(), clang::Type::isRecordType(), clang::CXXScopeSpec::location_data(), clang::CXXScopeSpec::location_size(), clang::NestedNameSpecifier::Namespace, clang::NestedNameSpecifier::NamespaceAlias, clang::NestedNameSpecifier::Super, clang::NestedNameSpecifier::TypeSpec, and clang::NestedNameSpecifier::TypeSpecWithTemplate.
OMPClause* clang::TreeTransform< Derived >::TransformOMPClause | ( | OMPClause * | S | ) |
Transform the given statement.
By default, this routine transforms a statement by delegating to the appropriate TransformOMPXXXClause function to transform a specific kind of clause. Subclasses may override this function to transform statements using some other mechanism.
StmtResult clang::TreeTransform< Derived >::TransformOMPExecutableDirective | ( | OMPExecutableDirective * | S | ) |
Definition at line 6628 of file TreeTransform.h.
References clang::OMPExecutableDirective::clauses(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::OMPExecutableDirective::getAssociatedStmt(), clang::OMPExecutableDirective::getDirectiveKind(), clang::OMPExecutableDirective::getLocEnd(), clang::OMPExecutableDirective::getLocStart(), clang::OMPExecutableDirective::hasAssociatedStmt(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), and clang::StmtError().
ExprResult clang::TreeTransform< Derived >::TransformParenDependentScopeDeclRefExpr | ( | ParenExpr * | PE, |
DependentScopeDeclRefExpr * | DRE, | ||
bool | IsAddressOfOperand, | ||
TypeSourceInfo ** | RecoveryTSI | ||
) |
Definition at line 8909 of file TreeTransform.h.
References clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::ParenExpr::getLParen(), clang::ParenExpr::getRParen(), and clang::ActionResult< PtrTy, CompressInvalid >::isUsable().
QualType clang::TreeTransform< Derived >::TransformReferenceType | ( | TypeLocBuilder & | TLB, |
ReferenceTypeLoc | TL | ||
) |
Transforms a reference type. Note that somewhat paradoxically we don't care whether the type itself is an l-value type or an r-value type; we only care if the type was *written* as an l-value type or an r-value type.
Definition at line 3978 of file TreeTransform.h.
References clang::Type::getAs(), clang::PointerLikeTypeLoc< Derived, TypeClass, LocalData >::getPointeeLoc(), clang::ReferenceType::getPointeeTypeAsWritten(), clang::PointerLikeTypeLoc< Derived, TypeClass, LocalData >::getSigilLoc(), clang::TypeLoc::getType(), clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getTypePtr(), clang::QualType::isNull(), clang::ReferenceType::isSpelledAsLValue(), clang::TypeLocBuilder::push(), clang::PointerLikeTypeLoc< Derived, TypeClass, LocalData >::setSigilLoc(), and clang::TypeLocBuilder::TypeWasModifiedSafely().
StmtResult clang::TreeTransform< Derived >::TransformSEHHandler | ( | Stmt * | Handler | ) |
Definition at line 6611 of file TreeTransform.h.
StmtResult clang::TreeTransform< Derived >::TransformStmt | ( | Stmt * | S | ) |
Transform the given statement.
By default, this routine transforms a statement by delegating to the appropriate TransformXXXStmt function to transform a specific kind of statement or the TransformExpr() function to transform an expression. Subclasses may override this function to transform statements using some other mechanism.
Definition at line 2848 of file TreeTransform.h.
References clang::Stmt::getStmtClass(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::Stmt::NoStmtClass, S, and clang::StmtError().
bool clang::TreeTransform< Derived >::TransformTemplateArgument | ( | const TemplateArgumentLoc & | Input, |
TemplateArgumentLoc & | Output | ||
) |
Transform the given template argument.
By default, this operation transforms the type, expression, or declaration stored within the template argument and constructs a new template argument from the transformed result. Subclasses may override this function to provide alternate behavior.
Returns true if there was an error.
Definition at line 3406 of file TreeTransform.h.
References clang::CXXScopeSpec::Adopt(), clang::Sema::ConstantEvaluated, clang::TemplateArgument::Declaration, clang::TemplateArgument::Expression, clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::TemplateArgumentLoc::getArgument(), clang::TemplateArgument::getAsExpr(), clang::TemplateArgument::getAsTemplate(), clang::TemplateArgument::getAsType(), clang::TemplateArgument::getKind(), clang::TemplateArgumentLoc::getSourceExpression(), clang::TemplateArgumentLoc::getTemplateNameLoc(), clang::TemplateArgumentLoc::getTemplateQualifierLoc(), clang::TemplateArgumentLoc::getTypeSourceInfo(), clang::TemplateArgument::Integral, clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::TemplateName::isNull(), clang::TemplateArgument::Null, clang::TemplateArgument::NullPtr, clang::TemplateArgument::Pack, clang::TemplateArgument::Template, clang::TemplateArgument::TemplateExpansion, and clang::TemplateArgument::Type.
bool clang::TreeTransform< Derived >::TransformTemplateArguments | ( | const TemplateArgumentLoc * | Inputs, |
unsigned | NumInputs, | ||
TemplateArgumentListInfo & | Outputs | ||
) | [inline] |
Transform the given set of template arguments.
By default, this operation transforms all of the template arguments in the input set using TransformTemplateArgument()
, and appends the transformed arguments to the output list.
Note that this overload of TransformTemplateArguments()
is merely a convenience function. Subclasses that wish to override this behavior should override the iterator-based member template version.
Inputs | The set of template arguments to be transformed. |
NumInputs | The number of template arguments in Inputs . |
Outputs | The set of transformed template arguments output by this routine. |
Returns true if an error occurred.
Definition at line 526 of file TreeTransform.h.
bool clang::TreeTransform< Derived >::TransformTemplateArguments | ( | InputIterator | First, |
InputIterator | Last, | ||
TemplateArgumentListInfo & | Outputs | ||
) |
Transform the given set of template arguments.
By default, this operation transforms all of the template arguments in the input set using TransformTemplateArgument()
, and appends the transformed arguments to the output list.
First | An iterator to the first template argument. |
Last | An iterator one step past the last template argument. |
Outputs | The set of transformed template arguments output by this routine. |
Returns true if an error occurred.
Definition at line 3535 of file TreeTransform.h.
References clang::TemplateArgumentListInfo::addArgument(), clang::TemplateArgument::containsUnexpandedParameterPack(), clang::TemplateArgumentLoc::getArgument(), clang::TemplateArgument::getKind(), clang::TemplateArgumentLoc::getSourceRange(), clang::TemplateArgument::isNull(), clang::TemplateArgument::isPackExpansion(), clang::LangAS::Last, clang::TemplateArgument::Pack, clang::TemplateArgument::pack_begin(), and clang::TemplateArgument::pack_end().
TemplateName clang::TreeTransform< Derived >::TransformTemplateName | ( | CXXScopeSpec & | SS, |
TemplateName | Name, | ||
SourceLocation | NameLoc, | ||
QualType | ObjectType = QualType() , |
||
NamedDecl * | FirstQualifierInScope = nullptr |
||
) |
Transform the given template name.
SS | The nested-name-specifier that qualifies the template name. This nested-name-specifier must already have been transformed. |
Name | The template name to transform. |
NameLoc | The source location of the template name. |
ObjectType | If we're translating a template name within a member access expression, this is the type of the object whose member template is being referenced. |
FirstQualifierInScope | If the first part of a nested-name-specifier also refers to a name within the current (lexical) scope, this is the declaration it refers to. |
By default, transforms the template name by transforming the declarations and nested-name-specifiers that occur within the template name. Subclasses may override this function to provide alternate behavior.
Definition at line 3273 of file TreeTransform.h.
References clang::TemplateName::getAsDependentTemplateName(), clang::TemplateName::getAsQualifiedTemplateName(), clang::TemplateName::getAsSubstTemplateTemplateParmPack(), clang::TemplateName::getAsTemplateDecl(), clang::CXXScopeSpec::getScopeRep(), and clang::QualType::isNull().
TemplateParameterList* clang::TreeTransform< Derived >::TransformTemplateParameterList | ( | TemplateParameterList * | TPL | ) | [inline] |
Definition at line 628 of file TreeTransform.h.
QualType clang::TreeTransform< Derived >::TransformTemplateSpecializationType | ( | TypeLocBuilder & | TLB, |
TemplateSpecializationTypeLoc | TL, | ||
TemplateName | Template | ||
) |
QualType clang::TreeTransform< Derived >::TransformType | ( | QualType | T | ) |
Transforms the given type into another type.
By default, this routine transforms a type by creating a TypeSourceInfo for it and delegating to the appropriate function. This is expensive, but we don't mind, because this method is deprecated anyway; all users should be switched to storing TypeSourceInfos.
Definition at line 3658 of file TreeTransform.h.
References clang::TypeSourceInfo::getType().
TypeSourceInfo * clang::TreeTransform< Derived >::TransformType | ( | TypeSourceInfo * | DI | ) |
Transforms the given type-with-location into a new type-with-location.
By default, this routine transforms a type by delegating to the appropriate TransformXXXType to build a new type. Subclasses may override this function (to take over all type transformations) or some set of the TransformXXXType functions to alter the transformation.
Definition at line 3676 of file TreeTransform.h.
References clang::TypeLoc::getBeginLoc(), clang::TypeLoc::getFullDataSize(), clang::TypeSourceInfo::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::TypeLocBuilder::getTypeSourceInfo(), clang::QualType::isNull(), and clang::TypeLocBuilder::reserve().
QualType clang::TreeTransform< Derived >::TransformType | ( | TypeLocBuilder & | TLB, |
TypeLoc | TL | ||
) |
Transform the given type-with-location into a new type, collecting location information in the given builder as necessary.
Definition at line 3697 of file TreeTransform.h.
References clang::TypeLoc::getTypeLocClass().
bool clang::TreeTransform< Derived >::TryExpandParameterPacks | ( | SourceLocation | EllipsisLoc, |
SourceRange | PatternRange, | ||
ArrayRef< UnexpandedParameterPack > | Unexpanded, | ||
bool & | ShouldExpand, | ||
bool & | RetainExpansion, | ||
Optional< unsigned > & | NumExpansions | ||
) | [inline] |
Determine whether we should expand a pack expansion with the given set of parameter packs into separate arguments by repeatedly transforming the pattern.
By default, the transformer never tries to expand pack expansions. Subclasses can override this routine to provide different behavior.
EllipsisLoc | The location of the ellipsis that identifies the pack expansion. |
PatternRange | The source range that covers the entire pattern of the pack expansion. |
Unexpanded | The set of unexpanded parameter packs within the pattern. |
ShouldExpand | Will be set to true if the transformer should expand the corresponding pack expansions into separate arguments. When set, NumExpansions must also be set. |
RetainExpansion | Whether the caller should add an unexpanded pack expansion after all of the expanded arguments. This is used when extending explicitly-specified template argument packs per C++0x [temp.arg.explicit]p9. |
NumExpansions | The number of separate arguments that will be in the expanded form of the corresponding pack expansion. This is both an input and an output parameter, which can be set by the caller if the number of expansions is known a priori (e.g., due to a prior substitution) and will be set by the callee when the number of expansions is known. The callee must set this value when ShouldExpand is true ; it may set this value in other cases. |
ShouldExpand
(and possibly NumExpansions
) must be set. Definition at line 252 of file TreeTransform.h.
Sema& clang::TreeTransform< Derived >::SemaRef [protected] |
Definition at line 113 of file TreeTransform.h.
llvm::DenseMap<Decl *, Decl *> clang::TreeTransform< Derived >::TransformedLocalDecls [protected] |
The set of local declarations that have been transformed, for cases where we are forced to build new declarations within the transformer rather than in the subclass (e.g., lambda closure types).
Definition at line 118 of file TreeTransform.h.