clang 22.0.0git
clang::TreeTransform< Derived > Class Template Reference

A semantic tree transformation that allows one to transform one abstract syntax tree into another. More...

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/Sema/TreeTransform.h"

Inheritance diagram for clang::TreeTransform< Derived >:
[legend]

Classes

class  TemporaryBase
 RAII object that temporarily sets the base location and entity used for reporting diagnostics in types. More...

Public Types

enum class  StmtDiscardKind { Discarded , NotDiscarded , StmtExprResult }
 The reason why the value of a statement is not discarded, if any. More...

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.
SemagetSema () 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.
bool ReplacingOriginal ()
 Whether the transformation is forming an expression or statement that replaces the original.
bool AllowSkippingCXXConstructExpr ()
 Wether CXXConstructExpr can be skipped when they are implicit.
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.
unsigned TransformTemplateDepth (unsigned Depth)
 Transform a template parameter depth level.
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 FailOnPackProducingTemplates, bool &ShouldExpand, bool &RetainExpansion, UnsignedOrNone &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.
MultiLevelTemplateArgumentList ForgetSubstitution ()
 "Forget" the template substitution to allow transforming the AST without any template instantiations.
void RememberSubstitution (MultiLevelTemplateArgumentList)
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.
TypeSourceInfoTransformType (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, StmtDiscardKind SDK=StmtDiscardKind::Discarded)
 Transform the given statement.
OMPClauseTransformOMPClause (OMPClause *S)
 Transform the given statement.
const AttrTransformAttr (const Attr *S)
 Transform the given attribute.
const AttrTransformStmtAttr (const Stmt *OrigS, const Stmt *InstS, const Attr *A)
ExprResult TransformExpr (Expr *E)
 Transform the given expression.
ExprResult TransformInitializer (Expr *Init, bool NotCopyInit)
 Transform the given initializer.
bool TransformExprs (Expr *const *Inputs, unsigned NumInputs, bool IsCall, SmallVectorImpl< Expr * > &Outputs, bool *ArgChanged=nullptr)
 Transform the given list of expressions.
DeclTransformDecl (SourceLocation Loc, Decl *D)
 Transform the given declaration, which is referenced from a type or expression.
Sema::ConditionResult TransformCondition (SourceLocation Loc, VarDecl *Var, Expr *Expr, Sema::ConditionKind Kind)
 Transform the specified condition.
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, ArrayRef< Decl * > New)
 Note that a local declaration has been transformed by this transformer.
DeclTransformDefinition (SourceLocation Loc, Decl *D)
 Transform the definition of the given declaration.
NamedDeclTransformFirstQualifierInScope (NamedDecl *D, SourceLocation Loc)
 Transform the given declaration, which was the first part of a nested-name-specifier in a member access expression.
bool TransformOverloadExprDecls (OverloadExpr *Old, bool RequiresADL, LookupResult &R)
 Transform the set of declarations in an OverloadExpr.
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.
bool TransformRequiresExprRequirements (ArrayRef< concepts::Requirement * > Reqs, llvm::SmallVectorImpl< concepts::Requirement * > &Transformed)
concepts::TypeRequirementTransformTypeRequirement (concepts::TypeRequirement *Req)
concepts::ExprRequirementTransformExprRequirement (concepts::ExprRequirement *Req)
concepts::NestedRequirementTransformNestedRequirement (concepts::NestedRequirement *Req)
TemplateName TransformTemplateName (NestedNameSpecifierLoc &QualifierLoc, SourceLocation TemplateKWLoc, TemplateName Name, SourceLocation NameLoc, QualType ObjectType=QualType(), NamedDecl *FirstQualifierInScope=nullptr, bool AllowInjectedClassName=false)
 Transform the given template name.
bool TransformTemplateArgument (const TemplateArgumentLoc &Input, TemplateArgumentLoc &Output, bool Uneval=false)
 Transform the given template argument.
TemplateArgument TransformNamedTemplateTemplateArgument (NestedNameSpecifierLoc &QualifierLoc, SourceLocation TemplateKeywordLoc, TemplateName Name, SourceLocation NameLoc)
bool TransformTemplateArguments (const TemplateArgumentLoc *Inputs, unsigned NumInputs, TemplateArgumentListInfo &Outputs, bool Uneval=false)
 Transform the given set of template arguments.
template<typename InputIterator>
bool TransformTemplateArguments (InputIterator First, InputIterator Last, TemplateArgumentListInfo &Outputs, bool Uneval=false)
 Transform the given set of template arguments.
bool PreparePackForExpansion (TemplateArgumentLoc In, bool Uneval, TemplateArgumentLoc &Out, UnexpandedInfo &Info)
 Checks if the argument pack from In will need to be expanded and does the necessary prework.
void InventTemplateArgumentLoc (const TemplateArgument &Arg, TemplateArgumentLoc &ArgLoc)
 Fakes up a TemplateArgumentLoc for a given TemplateArgument.
TypeSourceInfoInventTypeSourceInfo (QualType T)
 Fakes up a TypeSourceInfo for a type.
QualType TransformTemplateTypeParmType (TypeLocBuilder &TLB, TemplateTypeParmTypeLoc TL, bool SuppressObjCLifetime)
QualType TransformSubstTemplateTypeParmPackType (TypeLocBuilder &TLB, SubstTemplateTypeParmPackTypeLoc TL, bool SuppressObjCLifetime)
template<typename Fn>
QualType TransformFunctionProtoType (TypeLocBuilder &TLB, FunctionProtoTypeLoc TL, CXXRecordDecl *ThisContext, Qualifiers 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, QualType ObjectType, NamedDecl *FirstQualifierInScope, bool AllowInjectedClassName)
QualType TransformTagType (TypeLocBuilder &TLB, TagTypeLoc TL)
bool TransformFunctionTypeParams (SourceLocation Loc, ArrayRef< ParmVarDecl * > Params, const QualType *ParamTypes, const FunctionProtoType::ExtParameterInfo *ParamInfos, SmallVectorImpl< QualType > &PTypes, SmallVectorImpl< ParmVarDecl * > *PVars, Sema::ExtParameterInfoBuilder &PInfos, unsigned *LastParamTransformed)
 Transforms the parameters of a function type into the given vectors.
bool TransformFunctionTypeParams (SourceLocation Loc, ArrayRef< ParmVarDecl * > Params, const QualType *ParamTypes, const FunctionProtoType::ExtParameterInfo *ParamInfos, SmallVectorImpl< QualType > &PTypes, SmallVectorImpl< ParmVarDecl * > *PVars, Sema::ExtParameterInfoBuilder &PInfos)
ExprResult TransformRequiresTypeParams (SourceLocation KWLoc, SourceLocation RBraceLoc, const RequiresExpr *RE, RequiresExprBodyDecl *Body, ArrayRef< ParmVarDecl * > Params, SmallVectorImpl< QualType > &PTypes, SmallVectorImpl< ParmVarDecl * > &TransParams, Sema::ExtParameterInfoBuilder &PInfos)
 Transforms the parameters of a requires expresison into the given vectors.
ParmVarDeclTransformFunctionTypeParam (ParmVarDecl *OldParm, int indexAdjustment, UnsignedOrNone NumExpansions, bool ExpectParameterPack)
 Transforms a single function-type parameter.
StmtResult TransformLambdaBody (LambdaExpr *E, Stmt *Body)
 Transform the body of a lambda-expression.
StmtResult SkipLambdaBody (LambdaExpr *E, Stmt *Body)
 Alternative implementation of TransformLambdaBody that skips transforming the body.
CXXRecordDecl::LambdaDependencyKind ComputeLambdaDependency (LambdaScopeInfo *LSI)
QualType TransformReferenceType (TypeLocBuilder &TLB, ReferenceTypeLoc TL)
 Transforms a reference type.
StmtResult TransformCompoundStmt (CompoundStmt *S, bool IsStmtExpr)
ExprResult TransformCXXNamedCastExpr (CXXNamedCastExpr *E)
TemplateParameterListTransformTemplateParameterList (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)
ExprResult TransformUnresolvedLookupExpr (UnresolvedLookupExpr *E, bool IsAddressOfOperand)
StmtResult TransformOMPExecutableDirective (OMPExecutableDirective *S)
StmtResult TransformOMPInformationalDirective (OMPExecutableDirective *S)
 This is mostly the same as above, but allows 'informational' class directives when rebuilding the stmt.
QualType RebuildQualifiedType (QualType T, QualifiedTypeLoc TL)
 Build a new qualified type given its unqualified type and type location.
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, const CXXScopeSpec &SS, CXXRecordDecl *Cls, SourceLocation Sigil)
 Build a new member pointer type given the pointee type and the qualifier it refers into.
QualType RebuildObjCTypeParamType (const ObjCTypeParamDecl *Decl, SourceLocation ProtocolLAngleLoc, ArrayRef< ObjCProtocolDecl * > Protocols, ArrayRef< SourceLocation > ProtocolLocs, SourceLocation ProtocolRAngleLoc)
QualType RebuildObjCObjectType (QualType BaseType, SourceLocation Loc, SourceLocation TypeArgsLAngleLoc, ArrayRef< TypeSourceInfo * > TypeArgs, SourceLocation TypeArgsRAngleLoc, SourceLocation ProtocolLAngleLoc, ArrayRef< ObjCProtocolDecl * > Protocols, ArrayRef< SourceLocation > ProtocolLocs, SourceLocation ProtocolRAngleLoc)
 Build an Objective-C object type.
QualType RebuildObjCObjectPointerType (QualType PointeeType, SourceLocation Star)
 Build a new Objective-C object pointer type given the pointee type.
QualType RebuildArrayType (QualType ElementType, 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, ArraySizeModifier SizeMod, const llvm::APInt &Size, Expr *SizeExpr, 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, 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, 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, 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, VectorKind VecKind)
 Build a new vector type given the element type and number of elements.
QualType RebuildDependentVectorType (QualType ElementType, Expr *SizeExpr, SourceLocation AttributeLoc, VectorKind)
 Build a new potentially dependently-sized extended 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 RebuildConstantMatrixType (QualType ElementType, unsigned NumRows, unsigned NumColumns)
 Build a new matrix type given the element type and dimensions.
QualType RebuildDependentSizedMatrixType (QualType ElementType, Expr *RowExpr, Expr *ColumnExpr, SourceLocation AttributeLoc)
 Build a new matrix type given the type and dependently-defined dimensions.
QualType RebuildDependentAddressSpaceType (QualType PointeeType, Expr *AddrSpaceExpr, SourceLocation AttributeLoc)
 Build a new DependentAddressSpaceType or return the pointee type variable with the correct address space (retrieved from AddrSpaceExpr) applied to it.
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 (ElaboratedTypeKeyword Keyword, NestedNameSpecifier Qualifier, SourceLocation NameLoc, Decl *D)
 Rebuild an unresolved typename type, given the decl that the UnresolvedUsingTypenameDecl was transformed to.
QualType RebuildUsingType (ElaboratedTypeKeyword Keyword, NestedNameSpecifier Qualifier, UsingShadowDecl *D, QualType UnderlyingType)
 Build a new type found via an alias.
QualType RebuildTypedefType (ElaboratedTypeKeyword Keyword, NestedNameSpecifier Qualifier, TypedefNameDecl *Typedef)
 Build a new typedef type.
QualType RebuildMacroQualifiedType (QualType T, const IdentifierInfo *MacroII)
 Build a new MacroDefined type.
QualType RebuildTagType (ElaboratedTypeKeyword Keyword, NestedNameSpecifier Qualifier, TagDecl *Tag)
 Build a new class/struct/union/enum type.
QualType RebuildCanonicalTagType (TagDecl *Tag)
QualType RebuildTypeOfExprType (Expr *Underlying, SourceLocation Loc, TypeOfKind Kind)
 Build a new typeof(expr) type.
QualType RebuildTypeOfType (QualType Underlying, TypeOfKind Kind)
 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 RebuildPackIndexingType (QualType Pattern, Expr *IndexExpr, SourceLocation Loc, SourceLocation EllipsisLoc, bool FullySubstituted, ArrayRef< QualType > Expansions={})
QualType RebuildAutoType (QualType Deduced, AutoTypeKeyword Keyword, ConceptDecl *TypeConstraintConcept, ArrayRef< TemplateArgument > TypeConstraintArgs)
 Build a new C++11 auto type.
QualType RebuildDeducedTemplateSpecializationType (ElaboratedTypeKeyword Keyword, TemplateName Template, QualType Deduced)
 By default, builds a new DeducedTemplateSpecializationType with the given deduced type.
QualType RebuildTemplateSpecializationType (ElaboratedTypeKeyword Keyword, TemplateName Template, SourceLocation TemplateLoc, TemplateArgumentListInfo &Args)
 Build a new template specialization type.
QualType RebuildParenType (QualType InnerType)
 Build a new parenthesized type.
QualType RebuildDependentNameType (ElaboratedTypeKeyword Keyword, SourceLocation KeywordLoc, NestedNameSpecifierLoc QualifierLoc, const IdentifierInfo *Id, SourceLocation IdLoc, bool DeducedTSTContext)
 Build a new typename type that refers to an identifier.
QualType RebuildPackExpansionType (QualType Pattern, SourceRange PatternRange, SourceLocation EllipsisLoc, UnsignedOrNone NumExpansions)
 Build a new pack expansion type.
QualType RebuildAtomicType (QualType ValueType, SourceLocation KWLoc)
 Build a new atomic type given its value type.
QualType RebuildPipeType (QualType ValueType, SourceLocation KWLoc, bool isReadPipe)
 Build a new pipe type given its value type.
QualType RebuildBitIntType (bool IsUnsigned, unsigned NumBits, SourceLocation Loc)
 Build a bit-precise int given its value type.
QualType RebuildDependentBitIntType (bool IsUnsigned, Expr *NumBitsExpr, SourceLocation Loc)
 Build a dependent bit-precise int given its value type.
TemplateName RebuildTemplateName (CXXScopeSpec &SS, bool TemplateKW, TemplateName Name)
 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, SourceLocation TemplateKWLoc, const IdentifierInfo &Name, SourceLocation NameLoc, QualType ObjectType, bool AllowInjectedClassName)
 Build a new template name given a nested name specifier and the name that is referred to as a template.
TemplateName RebuildTemplateName (CXXScopeSpec &SS, SourceLocation TemplateKWLoc, OverloadedOperatorKind Operator, SourceLocation NameLoc, QualType ObjectType, bool AllowInjectedClassName)
 Build a new template name given a nested name specifier and the overloaded operator name that is referred to as a template.
TemplateName RebuildTemplateName (CXXScopeSpec &SS, SourceLocation TemplateKWLoc, IdentifierOrOverloadedOperator IO, SourceLocation NameLoc, QualType ObjectType, bool AllowInjectedClassName)
TemplateName RebuildTemplateName (const TemplateArgument &ArgPack, Decl *AssociatedDecl, unsigned Index, bool Final)
 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 attributed statement.
StmtResult RebuildIfStmt (SourceLocation IfLoc, IfStatementKind Kind, SourceLocation LParenLoc, Sema::ConditionResult Cond, SourceLocation RParenLoc, Stmt *Init, Stmt *Then, SourceLocation ElseLoc, Stmt *Else)
 Build a new "if" statement.
StmtResult RebuildSwitchStmtStart (SourceLocation SwitchLoc, SourceLocation LParenLoc, Stmt *Init, Sema::ConditionResult Cond, SourceLocation RParenLoc)
 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, SourceLocation LParenLoc, Sema::ConditionResult Cond, SourceLocation RParenLoc, 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::ConditionResult Cond, 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, unsigned NumLabels, 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 RebuildCoreturnStmt (SourceLocation CoreturnLoc, Expr *Result, bool IsImplicit)
 Build a new co_return statement.
ExprResult RebuildCoawaitExpr (SourceLocation CoawaitLoc, Expr *Operand, UnresolvedLookupExpr *OpCoawaitLookup, bool IsImplicit)
 Build a new co_await expression.
ExprResult RebuildDependentCoawaitExpr (SourceLocation CoawaitLoc, Expr *Result, UnresolvedLookupExpr *Lookup)
 Build a new co_await expression.
ExprResult RebuildCoyieldExpr (SourceLocation CoyieldLoc, Expr *Result)
 Build a new co_yield expression.
StmtResult RebuildCoroutineBodyStmt (CoroutineBodyStmt::CtorArgs Args)
StmtResult RebuildObjCAtTryStmt (SourceLocation AtLoc, Stmt *TryBody, MultiStmtArg CatchStmts, Stmt *Finally)
 Build a new Objective-C @try statement.
VarDeclRebuildObjCExceptionDecl (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 RebuildOMPCanonicalLoop (Stmt *LoopStmt)
 Build a new OpenMP Canonical loop.
StmtResult RebuildOMPExecutableDirective (OpenMPDirectiveKind Kind, DeclarationNameInfo DirName, OpenMPDirectiveKind CancelRegion, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Build a new OpenMP executable directive.
StmtResult RebuildOMPInformationalDirective (OpenMPDirectiveKind Kind, DeclarationNameInfo DirName, ArrayRef< OMPClause * > Clauses, Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc)
 Build a new OpenMP informational directive.
OMPClauseRebuildOMPIfClause (OpenMPDirectiveKind NameModifier, Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation NameModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc)
 Build a new OpenMP 'if' clause.
OMPClauseRebuildOMPFinalClause (Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'final' clause.
OMPClauseRebuildOMPNumThreadsClause (OpenMPNumThreadsClauseModifier Modifier, Expr *NumThreads, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)
 Build a new OpenMP 'num_threads' clause.
OMPClauseRebuildOMPSafelenClause (Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'safelen' clause.
OMPClauseRebuildOMPSimdlenClause (Expr *Len, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'simdlen' clause.
OMPClauseRebuildOMPSizesClause (ArrayRef< Expr * > Sizes, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
OMPClauseRebuildOMPPermutationClause (ArrayRef< Expr * > PermExprs, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'permutation' clause.
OMPClauseRebuildOMPFullClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Build a new OpenMP 'full' clause.
OMPClauseRebuildOMPPartialClause (Expr *Factor, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'partial' clause.
OMPClauseRebuildOMPAllocatorClause (Expr *A, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'allocator' clause.
OMPClauseRebuildOMPCollapseClause (Expr *Num, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'collapse' clause.
OMPClauseRebuildOMPDefaultClause (DefaultKind Kind, SourceLocation KindKwLoc, OpenMPDefaultClauseVariableCategory VCKind, SourceLocation VCLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'default' clause.
OMPClauseRebuildOMPProcBindClause (ProcBindKind Kind, SourceLocation KindKwLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'proc_bind' clause.
OMPClauseRebuildOMPScheduleClause (OpenMPScheduleClauseModifier M1, OpenMPScheduleClauseModifier M2, OpenMPScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation M1Loc, SourceLocation M2Loc, SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc)
 Build a new OpenMP 'schedule' clause.
OMPClauseRebuildOMPOrderedClause (SourceLocation StartLoc, SourceLocation EndLoc, SourceLocation LParenLoc, Expr *Num)
 Build a new OpenMP 'ordered' clause.
OMPClauseRebuildOMPPrivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'private' clause.
OMPClauseRebuildOMPFirstprivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'firstprivate' clause.
OMPClauseRebuildOMPLastprivateClause (ArrayRef< Expr * > VarList, OpenMPLastprivateModifier LPKind, SourceLocation LPKindLoc, SourceLocation ColonLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'lastprivate' clause.
OMPClauseRebuildOMPSharedClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'shared' clause.
OMPClauseRebuildOMPReductionClause (ArrayRef< Expr * > VarList, OpenMPReductionClauseModifier Modifier, OpenMPOriginalSharingModifier OriginalSharingModifier, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions)
 Build a new OpenMP 'reduction' clause.
OMPClauseRebuildOMPTaskReductionClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions)
 Build a new OpenMP 'task_reduction' clause.
OMPClauseRebuildOMPInReductionClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, CXXScopeSpec &ReductionIdScopeSpec, const DeclarationNameInfo &ReductionId, ArrayRef< Expr * > UnresolvedReductions)
 Build a new OpenMP 'in_reduction' clause.
OMPClauseRebuildOMPLinearClause (ArrayRef< Expr * > VarList, Expr *Step, SourceLocation StartLoc, SourceLocation LParenLoc, OpenMPLinearClauseKind Modifier, SourceLocation ModifierLoc, SourceLocation ColonLoc, SourceLocation StepModifierLoc, SourceLocation EndLoc)
 Build a new OpenMP 'linear' clause.
OMPClauseRebuildOMPAlignedClause (ArrayRef< Expr * > VarList, Expr *Alignment, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc)
 Build a new OpenMP 'aligned' clause.
OMPClauseRebuildOMPCopyinClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'copyin' clause.
OMPClauseRebuildOMPCopyprivateClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'copyprivate' clause.
OMPClauseRebuildOMPFlushClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'flush' pseudo clause.
OMPClauseRebuildOMPDepobjClause (Expr *Depobj, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'depobj' pseudo clause.
OMPClauseRebuildOMPDependClause (OMPDependClause::DependDataTy Data, Expr *DepModifier, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'depend' pseudo clause.
OMPClauseRebuildOMPDeviceClause (OpenMPDeviceClauseModifier Modifier, Expr *Device, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)
 Build a new OpenMP 'device' clause.
OMPClauseRebuildOMPMapClause (Expr *IteratorModifier, ArrayRef< OpenMPMapModifierKind > MapTypeModifiers, ArrayRef< SourceLocation > MapTypeModifiersLoc, CXXScopeSpec MapperIdScopeSpec, DeclarationNameInfo MapperId, OpenMPMapClauseKind MapType, bool IsMapTypeImplicit, SourceLocation MapLoc, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, ArrayRef< Expr * > UnresolvedMappers)
 Build a new OpenMP 'map' clause.
OMPClauseRebuildOMPAllocateClause (Expr *Allocate, Expr *Alignment, OpenMPAllocateClauseModifier FirstModifier, SourceLocation FirstModifierLoc, OpenMPAllocateClauseModifier SecondModifier, SourceLocation SecondModifierLoc, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc)
 Build a new OpenMP 'allocate' clause.
OMPClauseRebuildOMPNumTeamsClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'num_teams' clause.
OMPClauseRebuildOMPThreadLimitClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'thread_limit' clause.
OMPClauseRebuildOMPPriorityClause (Expr *Priority, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'priority' clause.
OMPClauseRebuildOMPGrainsizeClause (OpenMPGrainsizeClauseModifier Modifier, Expr *Device, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)
 Build a new OpenMP 'grainsize' clause.
OMPClauseRebuildOMPNumTasksClause (OpenMPNumTasksClauseModifier Modifier, Expr *NumTasks, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ModifierLoc, SourceLocation EndLoc)
 Build a new OpenMP 'num_tasks' clause.
OMPClauseRebuildOMPHintClause (Expr *Hint, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'hint' clause.
OMPClauseRebuildOMPDetachClause (Expr *Evt, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'detach' clause.
OMPClauseRebuildOMPDistScheduleClause (OpenMPDistScheduleClauseKind Kind, Expr *ChunkSize, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation KindLoc, SourceLocation CommaLoc, SourceLocation EndLoc)
 Build a new OpenMP 'dist_schedule' clause.
OMPClauseRebuildOMPToClause (ArrayRef< OpenMPMotionModifierKind > MotionModifiers, ArrayRef< SourceLocation > MotionModifiersLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, ArrayRef< Expr * > UnresolvedMappers)
 Build a new OpenMP 'to' clause.
OMPClauseRebuildOMPFromClause (ArrayRef< OpenMPMotionModifierKind > MotionModifiers, ArrayRef< SourceLocation > MotionModifiersLoc, CXXScopeSpec &MapperIdScopeSpec, DeclarationNameInfo &MapperId, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs, ArrayRef< Expr * > UnresolvedMappers)
 Build a new OpenMP 'from' clause.
OMPClauseRebuildOMPUseDevicePtrClause (ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)
 Build a new OpenMP 'use_device_ptr' clause.
OMPClauseRebuildOMPUseDeviceAddrClause (ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)
 Build a new OpenMP 'use_device_addr' clause.
OMPClauseRebuildOMPIsDevicePtrClause (ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)
 Build a new OpenMP 'is_device_ptr' clause.
OMPClauseRebuildOMPHasDeviceAddrClause (ArrayRef< Expr * > VarList, const OMPVarListLocTy &Locs)
 Build a new OpenMP 'has_device_addr' clause.
OMPClauseRebuildOMPDefaultmapClause (OpenMPDefaultmapClauseModifier M, OpenMPDefaultmapClauseKind Kind, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation MLoc, SourceLocation KindLoc, SourceLocation EndLoc)
 Build a new OpenMP 'defaultmap' clause.
OMPClauseRebuildOMPNontemporalClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'nontemporal' clause.
OMPClauseRebuildOMPInclusiveClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'inclusive' clause.
OMPClauseRebuildOMPExclusiveClause (ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'exclusive' clause.
OMPClauseRebuildOMPUsesAllocatorsClause (ArrayRef< SemaOpenMP::UsesAllocatorsData > Data, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'uses_allocators' clause.
OMPClauseRebuildOMPAffinityClause (SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, Expr *Modifier, ArrayRef< Expr * > Locators)
 Build a new OpenMP 'affinity' clause.
OMPClauseRebuildOMPOrderClause (OpenMPOrderClauseKind Kind, SourceLocation KindKwLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, OpenMPOrderClauseModifier Modifier, SourceLocation ModifierKwLoc)
 Build a new OpenMP 'order' clause.
OMPClauseRebuildOMPInitClause (Expr *InteropVar, OMPInteropInfo &InteropInfo, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)
 Build a new OpenMP 'init' clause.
OMPClauseRebuildOMPUseClause (Expr *InteropVar, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)
 Build a new OpenMP 'use' clause.
OMPClauseRebuildOMPDestroyClause (Expr *InteropVar, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation VarLoc, SourceLocation EndLoc)
 Build a new OpenMP 'destroy' clause.
OMPClauseRebuildOMPNovariantsClause (Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'novariants' clause.
OMPClauseRebuildOMPNocontextClause (Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'nocontext' clause.
OMPClauseRebuildOMPFilterClause (Expr *ThreadID, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'filter' clause.
OMPClauseRebuildOMPBindClause (OpenMPBindClauseKind Kind, SourceLocation KindLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'bind' clause.
OMPClauseRebuildOMPXDynCGroupMemClause (Expr *Size, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'ompx_dyn_cgroup_mem' clause.
OMPClauseRebuildOMPXAttributeClause (ArrayRef< const Attr * > Attrs, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'ompx_attribute' clause.
OMPClauseRebuildOMPXBareClause (SourceLocation StartLoc, SourceLocation EndLoc)
 Build a new OpenMP 'ompx_bare' clause.
OMPClauseRebuildOMPAlignClause (Expr *A, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'align' clause.
OMPClauseRebuildOMPAtClause (OpenMPAtClauseKind Kind, SourceLocation KwLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'at' clause.
OMPClauseRebuildOMPSeverityClause (OpenMPSeverityClauseKind Kind, SourceLocation KwLoc, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'severity' clause.
OMPClauseRebuildOMPMessageClause (Expr *MS, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'message' clause.
OMPClauseRebuildOMPDoacrossClause (OpenMPDoacrossClauseModifier DepType, SourceLocation DepLoc, SourceLocation ColonLoc, ArrayRef< Expr * > VarList, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'doacross' clause.
OMPClauseRebuildOMPHoldsClause (Expr *A, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc)
 Build a new OpenMP 'holds' 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.
VarDeclRebuildExceptionDecl (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 CoawaitLoc, Stmt *Init, SourceLocation ColonLoc, Stmt *Range, Stmt *Begin, Stmt *End, Expr *Cond, Expr *Inc, Stmt *LoopVar, SourceLocation RParenLoc, ArrayRef< MaterializeTemporaryExpr * > LifetimeExtendTemps)
 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 RebuildSYCLUniqueStableNameExpr (SourceLocation OpLoc, SourceLocation LParen, SourceLocation RParen, TypeSourceInfo *TSI)
ExprResult RebuildPredefinedExpr (SourceLocation Loc, PredefinedIdentKind IK)
 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, NamedDecl *Found, 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, ArrayRef< Sema::OffsetOfComponent > Components, 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 RebuildMatrixSubscriptExpr (Expr *Base, Expr *RowIdx, Expr *ColumnIdx, SourceLocation RBracketLoc)
 Build a new matrix subscript expression.
ExprResult RebuildArraySectionExpr (bool IsOMPArraySection, Expr *Base, SourceLocation LBracketLoc, Expr *LowerBound, SourceLocation ColonLocFirst, SourceLocation ColonLocSecond, Expr *Length, Expr *Stride, SourceLocation RBracketLoc)
 Build a new array section expression.
ExprResult RebuildOMPArrayShapingExpr (Expr *Base, SourceLocation LParenLoc, SourceLocation RParenLoc, ArrayRef< Expr * > Dims, ArrayRef< SourceRange > BracketsRanges)
 Build a new array shaping expression.
ExprResult RebuildOMPIteratorExpr (SourceLocation IteratorKwLoc, SourceLocation LLoc, SourceLocation RLoc, ArrayRef< SemaOpenMP::OMPIteratorData > Data)
 Build a new iterator expression.
ExprResult RebuildCallExpr (Expr *Callee, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc, Expr *ExecConfig=nullptr)
 Build a new call expression.
ExprResult RebuildCxxSubscriptExpr (Expr *Callee, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc)
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, bool ForFoldExpression=false)
 Build a new binary operator expression.
ExprResult RebuildCXXRewrittenBinaryOperator (SourceLocation OpLoc, BinaryOperatorKind Opcode, const UnresolvedSetImpl &UnqualLookups, Expr *LHS, Expr *RHS)
 Build a new rewritten 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, bool IsArrow, SourceLocation AccessorLoc, IdentifierInfo &Accessor)
 Build a new extended vector element access expression.
ExprResult RebuildInitList (SourceLocation LBraceLoc, MultiExprArg Inits, SourceLocation RBraceLoc)
 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 RebuildCXXParenListInitExpr (ArrayRef< Expr * > Args, QualType T, unsigned NumUserSpecifiedExprs, SourceLocation InitLoc, SourceLocation LParenLoc, SourceLocation RParenLoc)
ExprResult RebuildAddrLabelExpr (SourceLocation AmpAmpLoc, SourceLocation LabelLoc, LabelDecl *Label)
 Build a new address-of-label expression.
ExprResult RebuildStmtExpr (SourceLocation LParenLoc, Stmt *SubStmt, SourceLocation RParenLoc, unsigned TemplateDepth)
 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 with an expression predicate.
ExprResult RebuildGenericSelectionExpr (SourceLocation KeyLoc, SourceLocation DefaultLoc, SourceLocation RParenLoc, TypeSourceInfo *ControllingType, ArrayRef< TypeSourceInfo * > Types, ArrayRef< Expr * > Exprs)
 Build a new generic selection expression with a type predicate.
ExprResult RebuildCXXOperatorCallExpr (OverloadedOperatorKind Op, SourceLocation OpLoc, SourceLocation CalleeLoc, bool RequiresADL, const UnresolvedSetImpl &Functions, 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 RebuildCXXAddrspaceCastExpr (SourceLocation OpLoc, SourceLocation LAngleLoc, TypeSourceInfo *TInfo, SourceLocation RAngleLoc, SourceLocation LParenLoc, Expr *SubExpr, SourceLocation RParenLoc)
ExprResult RebuildCXXFunctionalCastExpr (TypeSourceInfo *TInfo, SourceLocation LParenLoc, Expr *Sub, SourceLocation RParenLoc, bool ListInitialization)
 Build a new C++ functional-style cast expression.
ExprResult RebuildBuiltinBitCastExpr (SourceLocation KWLoc, TypeSourceInfo *TSI, Expr *Sub, SourceLocation RParenLoc)
 Build a new C++ __builtin_bit_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 Type, SourceLocation TypeidLoc, TypeSourceInfo *Operand, SourceLocation RParenLoc)
 Build a new C++ __uuidof(type) expression.
ExprResult RebuildCXXUuidofExpr (QualType Type, 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, Expr *RewrittenExpr)
 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, std::optional< 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, CXXConstructionKind ConstructKind, SourceRange ParenRange)
 Build a new object-construction expression.
ExprResult RebuildCXXInheritedCtorInitExpr (QualType T, SourceLocation Loc, CXXConstructorDecl *Constructor, bool ConstructsVBase, bool InheritedFromVBase)
 Build a new implicit construction via inherited constructor expression.
ExprResult RebuildCXXTemporaryObjectExpr (TypeSourceInfo *TSInfo, SourceLocation LParenOrBraceLoc, MultiExprArg Args, SourceLocation RParenOrBraceLoc, bool ListInitialization)
 Build a new object-construction expression.
ExprResult RebuildCXXUnresolvedConstructExpr (TypeSourceInfo *TSInfo, SourceLocation LParenLoc, MultiExprArg Args, SourceLocation RParenLoc, bool ListInitialization)
 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.
UnsignedOrNone ComputeSizeOfPackExprWithoutSubstitution (ArrayRef< TemplateArgument > PackArgs)
ExprResult RebuildSizeOfPackExpr (SourceLocation OperatorLoc, NamedDecl *Pack, SourceLocation PackLoc, SourceLocation RParenLoc, UnsignedOrNone Length, ArrayRef< TemplateArgument > PartialArgs)
 Build a new expression to compute the length of a parameter pack.
ExprResult RebuildPackIndexingExpr (SourceLocation EllipsisLoc, SourceLocation RSquareLoc, Expr *PackIdExpression, Expr *IndexExpr, ArrayRef< Expr * > ExpandedExprs, bool FullySubstituted=false)
ExprResult RebuildSourceLocExpr (SourceLocIdentKind Kind, QualType ResultTy, SourceLocation BuiltinLoc, SourceLocation RPLoc, DeclContext *ParentContext)
 Build a new expression representing a call to a source location builtin.
ExprResult RebuildConceptSpecializationExpr (NestedNameSpecifierLoc NNS, SourceLocation TemplateKWLoc, DeclarationNameInfo ConceptNameInfo, NamedDecl *FoundDecl, ConceptDecl *NamedConcept, TemplateArgumentListInfo *TALI)
 Build a new Objective-C boxed expression.
ExprResult RebuildRequiresExpr (SourceLocation RequiresKWLoc, RequiresExprBodyDecl *Body, SourceLocation LParenLoc, ArrayRef< ParmVarDecl * > LocalParameters, SourceLocation RParenLoc, ArrayRef< concepts::Requirement * > Requirements, SourceLocation ClosingBraceLoc)
 Build a new requires expression.
concepts::TypeRequirementRebuildTypeRequirement (concepts::Requirement::SubstitutionDiagnostic *SubstDiag)
concepts::TypeRequirementRebuildTypeRequirement (TypeSourceInfo *T)
concepts::ExprRequirementRebuildExprRequirement (concepts::Requirement::SubstitutionDiagnostic *SubstDiag, bool IsSimple, SourceLocation NoexceptLoc, concepts::ExprRequirement::ReturnTypeRequirement Ret)
concepts::ExprRequirementRebuildExprRequirement (Expr *E, bool IsSimple, SourceLocation NoexceptLoc, concepts::ExprRequirement::ReturnTypeRequirement Ret)
concepts::NestedRequirementRebuildNestedRequirement (StringRef InvalidConstraintEntity, const ASTConstraintSatisfaction &Satisfaction)
concepts::NestedRequirementRebuildNestedRequirement (Expr *Constraint)
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, MutableArrayRef< ObjCDictionaryElement > Elements)
 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 RebuildObjCMessageExpr (SourceLocation SuperLoc, Selector Sel, ArrayRef< SourceLocation > SelectorLocs, QualType SuperType, ObjCMethodDecl *Method, SourceLocation LBracLoc, MultiExprArg Args, SourceLocation RBracLoc)
 Build a new Objective-C instance/class message to 'super'.
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, UnsignedOrNone NumExpansions)
 Build a new template argument pack expansion.
ExprResult RebuildPackExpansion (Expr *Pattern, SourceLocation EllipsisLoc, UnsignedOrNone NumExpansions)
 Build a new expression pack expansion.
ExprResult RebuildCXXFoldExpr (UnresolvedLookupExpr *ULE, SourceLocation LParenLoc, Expr *LHS, BinaryOperatorKind Operator, SourceLocation EllipsisLoc, Expr *RHS, SourceLocation RParenLoc, UnsignedOrNone NumExpansions)
 Build a new C++1z fold-expression.
ExprResult RebuildLambdaExpr (SourceLocation StartLoc, SourceLocation EndLoc, LambdaScopeInfo *LSI)
ExprResult RebuildEmptyCXXFoldExpr (SourceLocation EllipsisLoc, BinaryOperatorKind Operator)
 Build an empty C++1z fold-expression with the given operator.
ExprResult RebuildAtomicExpr (SourceLocation BuiltinLoc, MultiExprArg SubExprs, AtomicExpr::AtomicOp Op, SourceLocation RParenLoc)
 Build a new atomic operation expression.
ExprResult RebuildRecoveryExpr (SourceLocation BeginLoc, SourceLocation EndLoc, ArrayRef< Expr * > SubExprs, QualType Type)
StmtResult RebuildOpenACCComputeConstruct (OpenACCDirectiveKind K, SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses, StmtResult StrBlock)
StmtResult RebuildOpenACCLoopConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses, StmtResult Loop)
StmtResult RebuildOpenACCCombinedConstruct (OpenACCDirectiveKind K, SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses, StmtResult Loop)
StmtResult RebuildOpenACCDataConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses, StmtResult StrBlock)
StmtResult RebuildOpenACCEnterDataConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses)
StmtResult RebuildOpenACCExitDataConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses)
StmtResult RebuildOpenACCHostDataConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses, StmtResult StrBlock)
StmtResult RebuildOpenACCInitConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses)
StmtResult RebuildOpenACCShutdownConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses)
StmtResult RebuildOpenACCSetConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses)
StmtResult RebuildOpenACCUpdateConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses)
StmtResult RebuildOpenACCWaitConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation LParenLoc, Expr *DevNumExpr, SourceLocation QueuesLoc, ArrayRef< Expr * > QueueIdExprs, SourceLocation RParenLoc, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses)
StmtResult RebuildOpenACCCacheConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, SourceLocation LParenLoc, SourceLocation ReadOnlyLoc, ArrayRef< Expr * > VarList, SourceLocation RParenLoc, SourceLocation EndLoc)
StmtResult RebuildOpenACCAtomicConstruct (SourceLocation BeginLoc, SourceLocation DirLoc, OpenACCAtomicKind AtKind, SourceLocation EndLoc, ArrayRef< OpenACCClause * > Clauses, StmtResult AssociatedStmt)
ExprResult RebuildOpenACCAsteriskSizeExpr (SourceLocation AsteriskLoc)
template<typename Derived>
QualType TransformFunctionProtoType (TypeLocBuilder &TLB, FunctionProtoTypeLoc TL)
QualType TransformTypeWithDeducedTST (QualType T)
 Transform a type that is permitted to produce a DeducedTemplateSpecializationType.
TypeSourceInfoTransformTypeWithDeducedTST (TypeSourceInfo *DI)

Static Public Member Functions

static ExprResult Owned (Expr *E)
static StmtResult Owned (Stmt *S)

Protected Attributes

SemaSemaRef
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).

Detailed Description

template<typename Derived>
class clang::TreeTransform< Derived >

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 overriding 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 122 of file TreeTransform.h.

Member Enumeration Documentation

◆ StmtDiscardKind

template<typename Derived>
enum class clang::TreeTransform::StmtDiscardKind
strong

The reason why the value of a statement is not discarded, if any.

Enumerator
Discarded 
NotDiscarded 
StmtExprResult 

Definition at line 394 of file TreeTransform.h.

Constructor & Destructor Documentation

◆ TreeTransform()

template<typename Derived>
clang::TreeTransform< Derived >::TreeTransform ( Sema & SemaRef)
inline

Initializes a new tree transformer.

Definition at line 154 of file TreeTransform.h.

Referenced by clang::TreeTransform< Derived >::TemporaryBase::TemporaryBase().

Member Function Documentation

◆ AllowSkippingCXXConstructExpr()

template<typename Derived>
bool clang::TreeTransform< Derived >::AllowSkippingCXXConstructExpr ( )
inline

Wether CXXConstructExpr can be skipped when they are implicit.

They will be reconstructed when used if needed. This is useful when the user that cause rebuilding of the CXXConstructExpr is outside of the expression at which the TreeTransform started.

Definition at line 192 of file TreeTransform.h.

◆ AlreadyTransformed()

template<typename Derived>
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 245 of file TreeTransform.h.

Referenced by TransformNestedNameSpecifierLoc(), TransformType(), TransformType(), TransformTypeWithDeducedTST(), and TransformTypeWithDeducedTST().

◆ AlwaysRebuild()

template<typename Derived>
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 180 of file TreeTransform.h.

Referenced by TransformCXXNamedCastExpr(), TransformFunctionProtoType(), TransformNestedNameSpecifierLoc(), TransformNestedRequirement(), TransformParenDependentScopeDeclRefExpr(), TransformReferenceType(), TransformTagType(), TransformTemplateName(), and TransformTypeRequirement().

◆ ComputeLambdaDependency()

template<typename Derived>
CXXRecordDecl::LambdaDependencyKind clang::TreeTransform< Derived >::ComputeLambdaDependency ( LambdaScopeInfo * LSI)
inline

Definition at line 822 of file TreeTransform.h.

◆ ComputeSizeOfPackExprWithoutSubstitution()

template<typename Derived>
UnsignedOrNone clang::TreeTransform< Derived >::ComputeSizeOfPackExprWithoutSubstitution ( ArrayRef< TemplateArgument > PackArgs)

◆ DropCallArgument()

template<typename Derived>
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 263 of file TreeTransform.h.

Referenced by TransformExprs().

◆ ExpandingFunctionParameterPack()

template<typename Derived>
void clang::TreeTransform< Derived >::ExpandingFunctionParameterPack ( ParmVarDecl * Pack)
inline

Note to the derived class when a function parameter pack is being expanded.

Definition at line 353 of file TreeTransform.h.

◆ FinishCXXForRangeStmt()

template<typename Derived>
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 2667 of file TreeTransform.h.

◆ ForgetPartiallySubstitutedPack()

template<typename Derived>
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 319 of file TreeTransform.h.

◆ ForgetSubstitution()

template<typename Derived>
MultiLevelTemplateArgumentList clang::TreeTransform< Derived >::ForgetSubstitution ( )
inline

"Forget" the template substitution to allow transforming the AST without any template instantiations.

This is used to expand template packs when their size is not known in advance (e.g. for builtins that produce type packs).

Definition at line 334 of file TreeTransform.h.

◆ getBaseEntity()

template<typename Derived>
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 207 of file TreeTransform.h.

Referenced by RebuildArrayType(), RebuildBlockPointerType(), RebuildFunctionProtoType(), RebuildMemberPointerType(), RebuildPointerType(), RebuildReferenceType(), clang::TreeTransform< Derived >::TemporaryBase::TemporaryBase(), TransformType(), and TransformTypeWithDeducedTST().

◆ getBaseLocation()

template<typename Derived>
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 200 of file TreeTransform.h.

Referenced by InventTemplateArgumentLoc(), clang::TreeTransform< AdjustConstraintDepth >::InventTypeSourceInfo(), RebuildFunctionProtoType(), clang::TreeTransform< Derived >::TemporaryBase::TemporaryBase(), TransformTemplateArgument(), TransformType(), and TransformTypeWithDeducedTST().

◆ getDerived() [1/2]

template<typename Derived>
Derived & clang::TreeTransform< Derived >::getDerived ( )
inline

Retrieves a reference to the derived class.

Definition at line 157 of file TreeTransform.h.

Referenced by ComputeSizeOfPackExprWithoutSubstitution(), InventTemplateArgumentLoc(), clang::TreeTransform< AdjustConstraintDepth >::InventTypeSourceInfo(), PreparePackForExpansion(), RebuildArrayType(), RebuildBlockPointerType(), RebuildConstantArrayType(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXNamedCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildDependentNameType(), RebuildDependentSizedArrayType(), RebuildFunctionProtoType(), RebuildIncompleteArrayType(), RebuildMemberPointerType(), RebuildPointerType(), RebuildReferenceType(), RebuildTemplateName(), RebuildVariableArrayType(), SkipLambdaBody(), TransformAddressOfOperand(), TransformCompoundStmt(), TransformCondition(), TransformCXXNamedCastExpr(), TransformDeclarationNameInfo(), clang::TreeTransform< AdjustConstraintDepth >::TransformDefinition(), TransformExceptionSpec(), TransformExprRequirement(), TransformExprs(), clang::TreeTransform< AdjustConstraintDepth >::TransformFirstQualifierInScope(), TransformFunctionProtoType(), TransformFunctionTypeParam(), TransformFunctionTypeParams(), clang::TreeTransform< AdjustConstraintDepth >::TransformFunctionTypeParams(), TransformInitializer(), TransformNamedTemplateTemplateArgument(), TransformNestedNameSpecifierLoc(), TransformNestedRequirement(), TransformOMPExecutableDirective(), TransformOMPInformationalDirective(), clang::transformOMPMappableExprListClause(), TransformOverloadExprDecls(), TransformParenDependentScopeDeclRefExpr(), TransformReferenceType(), TransformRequiresExprRequirements(), clang::TreeTransform< AdjustConstraintDepth >::TransformRequiresTypeParams(), TransformSEHHandler(), TransformStmt(), TransformSubstTemplateTypeParmPackType(), TransformTagType(), TransformTemplateArgument(), TransformTemplateArguments(), TransformTemplateName(), TransformTemplateSpecializationType(), TransformTemplateTypeParmType(), TransformType(), TransformType(), TransformTypeRequirement(), TransformTypeWithDeducedTST(), and TransformTypeWithDeducedTST().

◆ getDerived() [2/2]

template<typename Derived>
const Derived & clang::TreeTransform< Derived >::getDerived ( ) const
inline

Retrieves a reference to the derived class.

Definition at line 160 of file TreeTransform.h.

◆ getSema()

template<typename Derived>
Sema & clang::TreeTransform< Derived >::getSema ( ) const
inline

Retrieves a reference to the semantic analysis object used for this tree transform.

Definition at line 169 of file TreeTransform.h.

Referenced by ComputeSizeOfPackExprWithoutSubstitution(), clang::TreeTransform< AdjustConstraintDepth >::FinishCXXForRangeStmt(), InventTemplateArgumentLoc(), PreparePackForExpansion(), clang::TreeTransform< AdjustConstraintDepth >::RebuildAddrLabelExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildArraySectionExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildArraySubscriptExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildArrayTypeTrait(), clang::TreeTransform< AdjustConstraintDepth >::RebuildAtomicExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildBinaryOperator(), clang::TreeTransform< AdjustConstraintDepth >::RebuildBuiltinBitCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCallExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCaseStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCaseStmtBody(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCoawaitExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCompoundLiteralExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCompoundStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildConceptSpecializationExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildConditionalOperator(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCoreturnStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCoroutineBodyStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCoyieldExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCStyleCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXAddrspaceCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXCatchStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXConstCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXConstructExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXDefaultArgExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXDefaultInitExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXDeleteExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXDynamicCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXFoldExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXForRangeStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXFunctionalCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXInheritedCtorInitExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXNewExpr(), RebuildCXXOperatorCallExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXParenListInitExpr(), RebuildCXXPseudoDestructorExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXReinterpretCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXRewrittenBinaryOperator(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXScalarValueInitExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXStaticCastExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCxxSubscriptExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXTemporaryObjectExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXThisExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXThrowExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXTryStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXTypeidExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXTypeidExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXUnresolvedConstructExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXUuidofExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildCXXUuidofExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildDeclarationNameExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildDeclRefExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildDeclStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildDefaultStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildDependentCoawaitExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildDependentScopeDeclRefExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildDoStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildEmptyCXXFoldExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildExceptionDecl(), clang::TreeTransform< AdjustConstraintDepth >::RebuildExpressionTrait(), clang::TreeTransform< AdjustConstraintDepth >::RebuildExtVectorElementExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildForStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildGCCAsmStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildGenericSelectionExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildGenericSelectionExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildGotoStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildIfStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildIndirectGotoStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildLambdaExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildMatrixSubscriptExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildMemberExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildMSAsmStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildMSDependentExistsStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCArrayLiteral(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCAtCatchStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCAtFinallyStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCAtSynchronizedOperand(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCAtSynchronizedStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCAtThrowStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCAtTryStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCAutoreleasePoolStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCBoxedExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCDictionaryLiteral(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCExceptionDecl(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCForCollectionStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCIsaExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCIvarRefExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCPropertyRefExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCPropertyRefExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildObjCSubscriptRefExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOffsetOfExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPAffinityClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPAlignClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPAlignedClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPAllocateClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPAllocatorClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPArrayShapingExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPAtClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPBindClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPCanonicalLoop(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPCollapseClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPCopyinClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPCopyprivateClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDefaultClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDefaultmapClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDependClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDepobjClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDestroyClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDetachClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDeviceClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDistScheduleClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPDoacrossClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPExclusiveClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPExecutableDirective(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPFilterClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPFinalClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPFirstprivateClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPFlushClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPFromClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPFullClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPGrainsizeClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPHasDeviceAddrClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPHintClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPHoldsClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPIfClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPInclusiveClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPInformationalDirective(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPInitClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPInReductionClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPIsDevicePtrClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPIteratorExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPLastprivateClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPLinearClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPMapClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPMessageClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPNocontextClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPNontemporalClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPNovariantsClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPNumTasksClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPNumTeamsClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPNumThreadsClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPOrderClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPOrderedClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPPartialClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPPermutationClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPPriorityClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPPrivateClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPProcBindClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPReductionClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPSafelenClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPScheduleClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPSeverityClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPSharedClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPSimdlenClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPSizesClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPTaskReductionClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPThreadLimitClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPToClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPUseClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPUseDeviceAddrClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPUseDevicePtrClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPUsesAllocatorsClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPXAttributeClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPXBareClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOMPXDynCGroupMemClause(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCAsteriskSizeExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCAtomicConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCCacheConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCCombinedConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCComputeConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCDataConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCEnterDataConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCExitDataConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCHostDataConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCInitConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCLoopConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCSetConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCShutdownConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCUpdateConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildOpenACCWaitConstruct(), clang::TreeTransform< AdjustConstraintDepth >::RebuildPackExpansion(), clang::TreeTransform< AdjustConstraintDepth >::RebuildPackExpansion(), clang::TreeTransform< AdjustConstraintDepth >::RebuildPackExpansionType(), clang::TreeTransform< AdjustConstraintDepth >::RebuildPackIndexingExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildParenExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildParenListExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildPredefinedExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildRecoveryExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildReturnStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildSEHExceptStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildSEHFinallyStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildSEHTryStmt(), clang::TreeTransform< AdjustConstraintDepth >::RebuildSourceLocExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildStmtExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildSwitchStmtBody(), clang::TreeTransform< AdjustConstraintDepth >::RebuildSwitchStmtStart(), clang::TreeTransform< AdjustConstraintDepth >::RebuildSYCLUniqueStableNameExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildTemplateIdExpr(), RebuildTemplateName(), RebuildTemplateName(), clang::TreeTransform< AdjustConstraintDepth >::RebuildTemplateName(), clang::TreeTransform< AdjustConstraintDepth >::RebuildTypeTrait(), clang::TreeTransform< AdjustConstraintDepth >::RebuildUnaryExprOrTypeTrait(), clang::TreeTransform< AdjustConstraintDepth >::RebuildUnaryExprOrTypeTrait(), clang::TreeTransform< AdjustConstraintDepth >::RebuildUnaryOperator(), RebuildUnresolvedUsingType(), clang::TreeTransform< AdjustConstraintDepth >::RebuildVAArgExpr(), clang::TreeTransform< AdjustConstraintDepth >::RebuildWhileStmt(), SkipLambdaBody(), TransformCondition(), TransformExceptionSpec(), TransformExprs(), TransformFunctionProtoType(), TransformFunctionTypeParams(), TransformInitializer(), TransformOMPExecutableDirective(), TransformOMPInformationalDirective(), clang::transformOMPMappableExprListClause(), TransformOverloadExprDecls(), TransformStmt(), TransformTemplateArgument(), TransformTemplateArguments(), TransformType(), and TransformTypeWithDeducedTST().

◆ InventTemplateArgumentLoc()

template<typename Derived>
void clang::TreeTransform< Derived >::InventTemplateArgumentLoc ( const TemplateArgument & Arg,
TemplateArgumentLoc & ArgLoc )

Fakes up a TemplateArgumentLoc for a given TemplateArgument.

Definition at line 4916 of file TreeTransform.h.

References getBaseLocation(), getDerived(), and getSema().

Referenced by ComputeSizeOfPackExprWithoutSubstitution().

◆ InventTypeSourceInfo()

template<typename Derived>
TypeSourceInfo * clang::TreeTransform< Derived >::InventTypeSourceInfo ( QualType T)
inline

Fakes up a TypeSourceInfo for a type.

Definition at line 715 of file TreeTransform.h.

Referenced by TransformTemplateArgument().

◆ Owned() [1/2]

◆ Owned() [2/2]

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::Owned ( Stmt * S)
inlinestatic

Definition at line 165 of file TreeTransform.h.

◆ PreparePackForExpansion()

template<typename Derived>
bool clang::TreeTransform< Derived >::PreparePackForExpansion ( TemplateArgumentLoc In,
bool Uneval,
TemplateArgumentLoc & Out,
UnexpandedInfo & Info )

Checks if the argument pack from In will need to be expanded and does the necessary prework.

Whether the expansion is needed is captured in Info.Expand.

  • When the expansion is required, Out will be a template pattern that would need to be expanded.
  • When the expansion must not happen, Out will be a pack that must be returned to the outputs directly.
Returns
true iff the error occurred

Definition at line 5179 of file TreeTransform.h.

References clang::TemplateArgument::containsUnexpandedParameterPack(), clang::UnexpandedInfo::Ellipsis, clang::UnexpandedInfo::Expand, clang::UnexpandedInfo::ExpandUnderForgetSubstitions, clang::TemplateArgumentLoc::getArgument(), getDerived(), getSema(), clang::TemplateArgument::isPackExpansion(), clang::UnexpandedInfo::NumExpansions, clang::UnexpandedInfo::OrigNumExpansions, clang::UnexpandedInfo::RetainExpansion, and TransformTemplateArgument().

◆ RebuildAddrLabelExpr()

template<typename Derived>
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 3126 of file TreeTransform.h.

◆ RebuildArraySectionExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildArraySectionExpr ( bool IsOMPArraySection,
Expr * Base,
SourceLocation LBracketLoc,
Expr * LowerBound,
SourceLocation ColonLocFirst,
SourceLocation ColonLocSecond,
Expr * Length,
Expr * Stride,
SourceLocation RBracketLoc )
inline

Build a new array section expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 2827 of file TreeTransform.h.

◆ RebuildArraySubscriptExpr()

template<typename Derived>
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 2803 of file TreeTransform.h.

◆ RebuildArrayType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildArrayType ( QualType ElementType,
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 17143 of file TreeTransform.h.

References clang::IntegerLiteral::Create(), getBaseEntity(), clang::SourceRange::getBegin(), getDerived(), SemaRef, and clang::T.

◆ RebuildArrayTypeTrait()

template<typename Derived>
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 3505 of file TreeTransform.h.

◆ RebuildAtomicExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildAtomicExpr ( SourceLocation BuiltinLoc,
MultiExprArg SubExprs,
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 4096 of file TreeTransform.h.

◆ RebuildAtomicType()

template<typename Derived>
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 17378 of file TreeTransform.h.

References SemaRef.

◆ RebuildAttributedStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildAttributedStmt ( SourceLocation AttrLoc,
ArrayRef< const Attr * > Attrs,
Stmt * SubStmt )
inline

Build a new attributed statement.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 1403 of file TreeTransform.h.

◆ RebuildAutoType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildAutoType ( QualType Deduced,
AutoTypeKeyword Keyword,
ConceptDecl * TypeConstraintConcept,
ArrayRef< TemplateArgument > TypeConstraintArgs )
inline

Build a new C++11 auto type.

By default, builds a new AutoType with the given deduced type.

Definition at line 1129 of file TreeTransform.h.

◆ RebuildBinaryOperator()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildBinaryOperator ( SourceLocation OpLoc,
BinaryOperatorKind Opc,
Expr * LHS,
Expr * RHS,
bool ForFoldExpression = false )
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 2980 of file TreeTransform.h.

◆ RebuildBitIntType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildBitIntType ( bool IsUnsigned,
unsigned NumBits,
SourceLocation Loc )

Build a bit-precise int given its value type.

Definition at line 17392 of file TreeTransform.h.

References clang::IntegerLiteral::Create(), and SemaRef.

◆ RebuildBlockPointerType()

template<typename Derived>
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 17082 of file TreeTransform.h.

References getBaseEntity(), getDerived(), SemaRef, and clang::Star.

◆ RebuildBuiltinBitCastExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildBuiltinBitCastExpr ( SourceLocation KWLoc,
TypeSourceInfo * TSI,
Expr * Sub,
SourceLocation RParenLoc )
inline

Build a new C++ __builtin_bit_cast expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 3351 of file TreeTransform.h.

◆ RebuildCallExpr()

template<typename Derived>
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 2874 of file TreeTransform.h.

◆ RebuildCanonicalTagType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildCanonicalTagType ( TagDecl * Tag)
inline

Definition at line 1093 of file TreeTransform.h.

◆ RebuildCaseStmt()

template<typename Derived>
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 1361 of file TreeTransform.h.

◆ RebuildCaseStmtBody()

template<typename Derived>
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 1374 of file TreeTransform.h.

◆ RebuildChooseExpr()

template<typename Derived>
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 3145 of file TreeTransform.h.

◆ RebuildCoawaitExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCoawaitExpr ( SourceLocation CoawaitLoc,
Expr * Operand,
UnresolvedLookupExpr * OpCoawaitLookup,
bool IsImplicit )
inline

Build a new co_await expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 1560 of file TreeTransform.h.

◆ RebuildCompoundLiteralExpr()

template<typename Derived>
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 3027 of file TreeTransform.h.

◆ RebuildCompoundStmt()

template<typename Derived>
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 1349 of file TreeTransform.h.

◆ RebuildConceptSpecializationExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildConceptSpecializationExpr ( NestedNameSpecifierLoc NNS,
SourceLocation TemplateKWLoc,
DeclarationNameInfo ConceptNameInfo,
NamedDecl * FoundDecl,
ConceptDecl * NamedConcept,
TemplateArgumentListInfo * TALI )
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 3721 of file TreeTransform.h.

◆ RebuildConditionalOperator()

template<typename Derived>
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 3002 of file TreeTransform.h.

◆ RebuildConstantArrayType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildConstantArrayType ( QualType ElementType,
ArraySizeModifier SizeMod,
const llvm::APInt & Size,
Expr * SizeExpr,
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 17174 of file TreeTransform.h.

References getDerived().

◆ RebuildConstantMatrixType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildConstantMatrixType ( QualType ElementType,
unsigned NumRows,
unsigned NumColumns )

Build a new matrix type given the element type and dimensions.

Definition at line 17250 of file TreeTransform.h.

References SemaRef.

◆ RebuildConvertVectorExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildConvertVectorExpr ( SourceLocation BuiltinLoc,
Expr * SrcExpr,
TypeSourceInfo * DstTInfo,
SourceLocation RParenLoc )
inline

Build a new convert vector expression.

Definition at line 3987 of file TreeTransform.h.

◆ RebuildCoreturnStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildCoreturnStmt ( SourceLocation CoreturnLoc,
Expr * Result,
bool IsImplicit )
inline

Build a new co_return statement.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 1551 of file TreeTransform.h.

◆ RebuildCoroutineBodyStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildCoroutineBodyStmt ( CoroutineBodyStmt::CtorArgs Args)
inline

Definition at line 1602 of file TreeTransform.h.

◆ RebuildCoyieldExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCoyieldExpr ( SourceLocation CoyieldLoc,
Expr * Result )
inline

Build a new co_yield expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 1598 of file TreeTransform.h.

◆ RebuildCStyleCastExpr()

template<typename Derived>
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 3015 of file TreeTransform.h.

◆ RebuildCXXAddrspaceCastExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXAddrspaceCastExpr ( SourceLocation OpLoc,
SourceLocation LAngleLoc,
TypeSourceInfo * TInfo,
SourceLocation RAngleLoc,
SourceLocation LParenLoc,
Expr * SubExpr,
SourceLocation RParenLoc )
inline

Definition at line 3312 of file TreeTransform.h.

◆ RebuildCXXCatchStmt()

template<typename Derived>
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 2595 of file TreeTransform.h.

◆ RebuildCXXConstCastExpr()

template<typename Derived>
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 3298 of file TreeTransform.h.

◆ RebuildCXXConstructExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXConstructExpr ( QualType T,
SourceLocation Loc,
CXXConstructorDecl * Constructor,
bool IsElidable,
MultiExprArg Args,
bool HadMultipleCandidates,
bool ListInitialization,
bool StdInitListInitialization,
bool RequiresZeroInit,
CXXConstructionKind 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 3564 of file TreeTransform.h.

◆ RebuildCXXDefaultArgExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXDefaultArgExpr ( SourceLocation Loc,
ParmVarDecl * Param,
Expr * RewrittenExpr )
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 3427 of file TreeTransform.h.

◆ RebuildCXXDefaultInitExpr()

template<typename Derived>
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 3438 of file TreeTransform.h.

◆ RebuildCXXDeleteExpr()

template<typename Derived>
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 3482 of file TreeTransform.h.

◆ RebuildCXXDependentScopeMemberExpr()

template<typename Derived>
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 3631 of file TreeTransform.h.

◆ RebuildCXXDynamicCastExpr()

template<typename Derived>
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 3264 of file TreeTransform.h.

◆ RebuildCXXFoldExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXFoldExpr ( UnresolvedLookupExpr * ULE,
SourceLocation LParenLoc,
Expr * LHS,
BinaryOperatorKind Operator,
SourceLocation EllipsisLoc,
Expr * RHS,
SourceLocation RParenLoc,
UnsignedOrNone NumExpansions )
inline

Build a new C++1z fold-expression.

By default, performs semantic analysis in order to build a new fold expression.

Definition at line 4058 of file TreeTransform.h.

◆ RebuildCXXForRangeStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildCXXForRangeStmt ( SourceLocation ForLoc,
SourceLocation CoawaitLoc,
Stmt * Init,
SourceLocation ColonLoc,
Stmt * Range,
Stmt * Begin,
Stmt * End,
Expr * Cond,
Expr * Inc,
Stmt * LoopVar,
SourceLocation RParenLoc,
ArrayRef< MaterializeTemporaryExpr * > LifetimeExtendTemps )
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 2615 of file TreeTransform.h.

◆ RebuildCXXFunctionalCastExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXFunctionalCastExpr ( TypeSourceInfo * TInfo,
SourceLocation LParenLoc,
Expr * Sub,
SourceLocation RParenLoc,
bool ListInitialization )
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 3325 of file TreeTransform.h.

◆ RebuildCXXInheritedCtorInitExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXInheritedCtorInitExpr ( QualType T,
SourceLocation Loc,
CXXConstructorDecl * Constructor,
bool ConstructsVBase,
bool InheritedFromVBase )
inline

Build a new implicit construction via inherited constructor expression.

Definition at line 3593 of file TreeTransform.h.

◆ RebuildCXXNamedCastExpr()

template<typename Derived>
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 3204 of file TreeTransform.h.

◆ RebuildCXXNewExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXNewExpr ( SourceLocation StartLoc,
bool UseGlobal,
SourceLocation PlacementLParen,
MultiExprArg PlacementArgs,
SourceLocation PlacementRParen,
SourceRange TypeIdParens,
QualType AllocatedType,
TypeSourceInfo * AllocatedTypeInfo,
std::optional< 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 3458 of file TreeTransform.h.

◆ RebuildCXXNoexceptExpr()

template<typename Derived>
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 3677 of file TreeTransform.h.

◆ RebuildCXXOperatorCallExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXOperatorCallExpr ( OverloadedOperatorKind Op,
SourceLocation OpLoc,
SourceLocation CalleeLoc,
bool RequiresADL,
const UnresolvedSetImpl & Functions,
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 17450 of file TreeTransform.h.

References clang::ExprError(), clang::First, clang::Expr::getObjectKind(), clang::BinaryOperator::getOverloadedOpcode(), clang::UnaryOperator::getOverloadedOpcode(), getSema(), clang::Expr::getType(), clang::BinaryOperator::isAssignmentOp(), clang::Type::isOverloadableType(), clang::Expr::isTypeDependent(), clang::OK_ObjCProperty, clang::Result, and SemaRef.

◆ RebuildCXXParenListInitExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXParenListInitExpr ( ArrayRef< Expr * > Args,
QualType T,
unsigned NumUserSpecifiedExprs,
SourceLocation InitLoc,
SourceLocation LParenLoc,
SourceLocation RParenLoc )
inline

Definition at line 3112 of file TreeTransform.h.

◆ RebuildCXXPseudoDestructorExpr()

template<typename Derived>
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 17534 of file TreeTransform.h.

References clang::cast(), clang::CXXScopeSpec::clear(), clang::ExprError(), clang::PseudoDestructorTypeStorage::getIdentifier(), clang::PseudoDestructorTypeStorage::getLocation(), getSema(), clang::TypeSourceInfo::getType(), clang::PseudoDestructorTypeStorage::getTypeSourceInfo(), clang::isa(), clang::CXXScopeSpec::Make(), SemaRef, and clang::DeclarationNameInfo::setNamedTypeInfo().

◆ RebuildCXXReinterpretCastExpr()

template<typename Derived>
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 3281 of file TreeTransform.h.

◆ RebuildCXXRewrittenBinaryOperator()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXRewrittenBinaryOperator ( SourceLocation OpLoc,
BinaryOperatorKind Opcode,
const UnresolvedSetImpl & UnqualLookups,
Expr * LHS,
Expr * RHS )
inline

Build a new rewritten operator expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 2991 of file TreeTransform.h.

◆ RebuildCXXScalarValueInitExpr()

template<typename Derived>
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 3447 of file TreeTransform.h.

◆ RebuildCXXStaticCastExpr()

template<typename Derived>
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 3247 of file TreeTransform.h.

◆ RebuildCxxSubscriptExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCxxSubscriptExpr ( Expr * Callee,
SourceLocation LParenLoc,
MultiExprArg Args,
SourceLocation RParenLoc )
inline

Definition at line 2882 of file TreeTransform.h.

◆ RebuildCXXTemporaryObjectExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXTemporaryObjectExpr ( TypeSourceInfo * TSInfo,
SourceLocation LParenOrBraceLoc,
MultiExprArg Args,
SourceLocation RParenOrBraceLoc,
bool ListInitialization )
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 3605 of file TreeTransform.h.

◆ RebuildCXXThisExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXThisExpr ( SourceLocation ThisLoc,
QualType ThisType,
bool isImplicit )
inline

Build a new C++ "this" expression.

By default, performs semantic analysis to build a new "this" expression. Subclasses may override this routine to provide different behavior.

Definition at line 3405 of file TreeTransform.h.

◆ RebuildCXXThrowExpr()

template<typename Derived>
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 3417 of file TreeTransform.h.

◆ RebuildCXXTryStmt()

template<typename Derived>
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 2606 of file TreeTransform.h.

◆ RebuildCXXTypeidExpr() [1/2]

template<typename Derived>
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 3374 of file TreeTransform.h.

◆ RebuildCXXTypeidExpr() [2/2]

template<typename Derived>
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 3361 of file TreeTransform.h.

◆ RebuildCXXUnresolvedConstructExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXUnresolvedConstructExpr ( TypeSourceInfo * TSInfo,
SourceLocation LParenLoc,
MultiExprArg Args,
SourceLocation RParenLoc,
bool ListInitialization )
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 3618 of file TreeTransform.h.

◆ RebuildCXXUuidofExpr() [1/2]

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXUuidofExpr ( QualType Type,
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 3396 of file TreeTransform.h.

◆ RebuildCXXUuidofExpr() [2/2]

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildCXXUuidofExpr ( QualType Type,
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 3386 of file TreeTransform.h.

◆ RebuildDeclarationNameExpr()

template<typename Derived>
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 2705 of file TreeTransform.h.

◆ RebuildDeclRefExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildDeclRefExpr ( NestedNameSpecifierLoc QualifierLoc,
ValueDecl * VD,
const DeclarationNameInfo & NameInfo,
NamedDecl * Found,
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 2716 of file TreeTransform.h.

◆ RebuildDeclStmt()

template<typename Derived>
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 1508 of file TreeTransform.h.

◆ RebuildDecltypeType()

template<typename Derived>
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 17348 of file TreeTransform.h.

References SemaRef.

◆ RebuildDeducedTemplateSpecializationType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildDeducedTemplateSpecializationType ( ElaboratedTypeKeyword Keyword,
TemplateName Template,
QualType Deduced )
inline

By default, builds a new DeducedTemplateSpecializationType with the given deduced type.

Definition at line 1143 of file TreeTransform.h.

◆ RebuildDefaultStmt()

template<typename Derived>
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 1383 of file TreeTransform.h.

◆ RebuildDependentAddressSpaceType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildDependentAddressSpaceType ( QualType PointeeType,
Expr * AddrSpaceExpr,
SourceLocation AttributeLoc )

Build a new DependentAddressSpaceType or return the pointee type variable with the correct address space (retrieved from AddrSpaceExpr) applied to it.

The former will be returned in cases where the address space remains dependent.

By default, performs semantic analysis when building the type with address space applied. Subclasses may override this routine to provide different behavior.

Definition at line 17208 of file TreeTransform.h.

References SemaRef.

◆ RebuildDependentBitIntType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildDependentBitIntType ( bool IsUnsigned,
Expr * NumBitsExpr,
SourceLocation Loc )

Build a dependent bit-precise int given its value type.

Definition at line 17403 of file TreeTransform.h.

References SemaRef.

◆ RebuildDependentCoawaitExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildDependentCoawaitExpr ( SourceLocation CoawaitLoc,
Expr * Result,
UnresolvedLookupExpr * Lookup )
inline

Build a new co_await expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 1588 of file TreeTransform.h.

◆ RebuildDependentNameType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildDependentNameType ( ElaboratedTypeKeyword Keyword,
SourceLocation KeywordLoc,
NestedNameSpecifierLoc QualifierLoc,
const IdentifierInfo * Id,
SourceLocation IdLoc,
bool DeducedTSTContext )
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 1172 of file TreeTransform.h.

◆ RebuildDependentScopeDeclRefExpr()

template<typename Derived>
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 3529 of file TreeTransform.h.

◆ RebuildDependentSizedArrayType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildDependentSizedArrayType ( QualType ElementType,
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 17199 of file TreeTransform.h.

References getDerived().

◆ RebuildDependentSizedExtVectorType()

template<typename Derived>
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 17243 of file TreeTransform.h.

References SemaRef.

◆ RebuildDependentSizedMatrixType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildDependentSizedMatrixType ( QualType ElementType,
Expr * RowExpr,
Expr * ColumnExpr,
SourceLocation AttributeLoc )

Build a new matrix type given the type and dependently-defined dimensions.

Definition at line 17257 of file TreeTransform.h.

References SemaRef.

◆ RebuildDependentVectorType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildDependentVectorType ( QualType ElementType,
Expr * SizeExpr,
SourceLocation AttributeLoc,
VectorKind VecKind )

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 17223 of file TreeTransform.h.

References SemaRef.

◆ RebuildDesignatedInitExpr()

template<typename Derived>
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 3067 of file TreeTransform.h.

◆ RebuildDoStmt()

template<typename Derived>
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 1458 of file TreeTransform.h.

◆ RebuildEmptyCXXFoldExpr()

template<typename Derived>
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 4087 of file TreeTransform.h.

◆ RebuildExceptionDecl()

template<typename Derived>
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 2579 of file TreeTransform.h.

◆ RebuildExpressionTrait()

template<typename Derived>
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 3517 of file TreeTransform.h.

◆ RebuildExprRequirement() [1/2]

template<typename Derived>
concepts::ExprRequirement * clang::TreeTransform< Derived >::RebuildExprRequirement ( concepts::Requirement::SubstitutionDiagnostic * SubstDiag,
bool IsSimple,
SourceLocation NoexceptLoc,
concepts::ExprRequirement::ReturnTypeRequirement Ret )
inline

Definition at line 3763 of file TreeTransform.h.

◆ RebuildExprRequirement() [2/2]

template<typename Derived>
concepts::ExprRequirement * clang::TreeTransform< Derived >::RebuildExprRequirement ( Expr * E,
bool IsSimple,
SourceLocation NoexceptLoc,
concepts::ExprRequirement::ReturnTypeRequirement Ret )
inline

Definition at line 3772 of file TreeTransform.h.

◆ RebuildExtVectorElementExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildExtVectorElementExpr ( Expr * Base,
SourceLocation OpLoc,
bool IsArrow,
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 3039 of file TreeTransform.h.

◆ RebuildExtVectorType()

template<typename Derived>
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 17230 of file TreeTransform.h.

References clang::IntegerLiteral::Create(), and SemaRef.

◆ RebuildForStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildForStmt ( SourceLocation ForLoc,
SourceLocation LParenLoc,
Stmt * Init,
Sema::ConditionResult Cond,
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 1469 of file TreeTransform.h.

◆ RebuildFunctionNoProtoType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildFunctionNoProtoType ( QualType ResultType)

Build a new unprototyped function type.

Definition at line 17275 of file TreeTransform.h.

References SemaRef, and clang::T.

◆ RebuildFunctionProtoType()

template<typename Derived>
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 17265 of file TreeTransform.h.

References getBaseEntity(), getBaseLocation(), getDerived(), SemaRef, and clang::T.

◆ RebuildGCCAsmStmt()

template<typename Derived>
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,
unsigned NumLabels,
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 1518 of file TreeTransform.h.

◆ RebuildGenericSelectionExpr() [1/2]

template<typename Derived>
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 with an expression predicate.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 3157 of file TreeTransform.h.

◆ RebuildGenericSelectionExpr() [2/2]

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildGenericSelectionExpr ( SourceLocation KeyLoc,
SourceLocation DefaultLoc,
SourceLocation RParenLoc,
TypeSourceInfo * ControllingType,
ArrayRef< TypeSourceInfo * > Types,
ArrayRef< Expr * > Exprs )
inline

Build a new generic selection expression with a type predicate.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 3172 of file TreeTransform.h.

◆ RebuildGotoStmt()

template<typename Derived>
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 1481 of file TreeTransform.h.

◆ RebuildIfStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildIfStmt ( SourceLocation IfLoc,
IfStatementKind Kind,
SourceLocation LParenLoc,
Sema::ConditionResult Cond,
SourceLocation RParenLoc,
Stmt * Init,
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 1415 of file TreeTransform.h.

◆ RebuildImplicitValueInitExpr()

template<typename Derived>
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 3086 of file TreeTransform.h.

◆ RebuildIncompleteArrayType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildIncompleteArrayType ( QualType ElementType,
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 17182 of file TreeTransform.h.

References getDerived().

◆ RebuildIndirectGotoStmt()

template<typename Derived>
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 1490 of file TreeTransform.h.

◆ RebuildInitList()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildInitList ( SourceLocation LBraceLoc,
MultiExprArg Inits,
SourceLocation RBraceLoc )
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 3057 of file TreeTransform.h.

◆ RebuildLabelStmt()

template<typename Derived>
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 1394 of file TreeTransform.h.

◆ RebuildLambdaExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildLambdaExpr ( SourceLocation StartLoc,
SourceLocation EndLoc,
LambdaScopeInfo * LSI )
inline

Definition at line 4069 of file TreeTransform.h.

◆ RebuildMacroQualifiedType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildMacroQualifiedType ( QualType T,
const IdentifierInfo * MacroII )
inline

Build a new MacroDefined type.

Definition at line 1082 of file TreeTransform.h.

◆ RebuildMatrixSubscriptExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildMatrixSubscriptExpr ( Expr * Base,
Expr * RowIdx,
Expr * ColumnIdx,
SourceLocation RBracketLoc )
inline

Build a new matrix subscript expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 2816 of file TreeTransform.h.

◆ RebuildMemberExpr()

template<typename Derived>
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 2893 of file TreeTransform.h.

◆ RebuildMemberPointerType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildMemberPointerType ( QualType PointeeType,
const CXXScopeSpec & SS,
CXXRecordDecl * Cls,
SourceLocation Sigil )

Build a new member pointer type given the pointee type and the qualifier 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 17098 of file TreeTransform.h.

References getBaseEntity(), getDerived(), and SemaRef.

◆ RebuildMSAsmStmt()

template<typename Derived>
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 1534 of file TreeTransform.h.

◆ RebuildMSDependentExistsStmt()

template<typename Derived>
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 2654 of file TreeTransform.h.

◆ RebuildNestedRequirement() [1/2]

template<typename Derived>
concepts::NestedRequirement * clang::TreeTransform< Derived >::RebuildNestedRequirement ( Expr * Constraint)
inline

Definition at line 3785 of file TreeTransform.h.

◆ RebuildNestedRequirement() [2/2]

template<typename Derived>
concepts::NestedRequirement * clang::TreeTransform< Derived >::RebuildNestedRequirement ( StringRef InvalidConstraintEntity,
const ASTConstraintSatisfaction & Satisfaction )
inline

Definition at line 3779 of file TreeTransform.h.

◆ RebuildObjCArrayLiteral()

template<typename Derived>
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 3801 of file TreeTransform.h.

◆ RebuildObjCAtCatchStmt()

template<typename Derived>
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 1633 of file TreeTransform.h.

◆ RebuildObjCAtFinallyStmt()

template<typename Derived>
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 1644 of file TreeTransform.h.

◆ RebuildObjCAtSynchronizedOperand()

template<typename Derived>
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 2534 of file TreeTransform.h.

◆ RebuildObjCAtSynchronizedStmt()

template<typename Derived>
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 2543 of file TreeTransform.h.

◆ RebuildObjCAtThrowStmt()

template<typename Derived>
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 1653 of file TreeTransform.h.

◆ RebuildObjCAtTryStmt()

template<typename Derived>
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 1610 of file TreeTransform.h.

◆ RebuildObjCAutoreleasePoolStmt()

template<typename Derived>
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 2552 of file TreeTransform.h.

◆ RebuildObjCBoxedExpr()

template<typename Derived>
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 3793 of file TreeTransform.h.

◆ RebuildObjCDictionaryLiteral()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildObjCDictionaryLiteral ( SourceRange Range,
MutableArrayRef< ObjCDictionaryElement > Elements )
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 3819 of file TreeTransform.h.

◆ RebuildObjCEncodeExpr()

template<typename Derived>
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 3828 of file TreeTransform.h.

◆ RebuildObjCExceptionDecl()

template<typename Derived>
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 1622 of file TreeTransform.h.

◆ RebuildObjCForCollectionStmt()

template<typename Derived>
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 2561 of file TreeTransform.h.

◆ RebuildObjCIsaExpr()

template<typename Derived>
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 3940 of file TreeTransform.h.

◆ RebuildObjCIvarRefExpr()

template<typename Derived>
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 3885 of file TreeTransform.h.

◆ RebuildObjCMessageExpr() [1/3]

template<typename Derived>
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 3850 of file TreeTransform.h.

◆ RebuildObjCMessageExpr() [2/3]

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildObjCMessageExpr ( SourceLocation SuperLoc,
Selector Sel,
ArrayRef< SourceLocation > SelectorLocs,
QualType SuperType,
ObjCMethodDecl * Method,
SourceLocation LBracLoc,
MultiExprArg Args,
SourceLocation RBracLoc )
inline

Build a new Objective-C instance/class message to 'super'.

Definition at line 3864 of file TreeTransform.h.

◆ RebuildObjCMessageExpr() [3/3]

template<typename Derived>
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 3836 of file TreeTransform.h.

◆ RebuildObjCObjectPointerType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildObjCObjectPointerType ( QualType PointeeType,
SourceLocation Star )

Build a new Objective-C object pointer type given the pointee type.

By default, directly builds the pointer type, with no additional semantic analysis.

Definition at line 17136 of file TreeTransform.h.

References SemaRef, and clang::Star.

◆ RebuildObjCObjectType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildObjCObjectType ( QualType BaseType,
SourceLocation Loc,
SourceLocation TypeArgsLAngleLoc,
ArrayRef< TypeSourceInfo * > TypeArgs,
SourceLocation TypeArgsRAngleLoc,
SourceLocation ProtocolLAngleLoc,
ArrayRef< ObjCProtocolDecl * > Protocols,
ArrayRef< SourceLocation > ProtocolLocs,
SourceLocation ProtocolRAngleLoc )

Build an Objective-C object type.

By default, performs semantic analysis when building the object type. Subclasses may override this routine to provide different behavior.

Definition at line 17118 of file TreeTransform.h.

References SemaRef.

◆ RebuildObjCPropertyRefExpr() [1/2]

template<typename Derived>
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 3924 of file TreeTransform.h.

◆ RebuildObjCPropertyRefExpr() [2/2]

template<typename Derived>
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 3905 of file TreeTransform.h.

◆ RebuildObjCSubscriptRefExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildObjCSubscriptRefExpr ( SourceLocation RB,
Expr * Base,
Expr * Key,
ObjCMethodDecl * getterMethod,
ObjCMethodDecl * setterMethod )
inline

Definition at line 3807 of file TreeTransform.h.

◆ RebuildObjCTypeParamType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildObjCTypeParamType ( const ObjCTypeParamDecl * Decl,
SourceLocation ProtocolLAngleLoc,
ArrayRef< ObjCProtocolDecl * > Protocols,
ArrayRef< SourceLocation > ProtocolLocs,
SourceLocation ProtocolRAngleLoc )

Definition at line 17106 of file TreeTransform.h.

References SemaRef.

◆ RebuildOffsetOfExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildOffsetOfExpr ( SourceLocation OperatorLoc,
TypeSourceInfo * Type,
ArrayRef< Sema::OffsetOfComponent > Components,
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 2763 of file TreeTransform.h.

◆ RebuildOMPAffinityClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPAffinityClause ( SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ColonLoc,
SourceLocation EndLoc,
Expr * Modifier,
ArrayRef< Expr * > Locators )
inline

Build a new OpenMP 'affinity' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2326 of file TreeTransform.h.

◆ RebuildOMPAlignClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPAlignClause ( Expr * A,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'align' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2466 of file TreeTransform.h.

◆ RebuildOMPAlignedClause()

template<typename Derived>
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 1978 of file TreeTransform.h.

◆ RebuildOMPAllocateClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPAllocateClause ( Expr * Allocate,
Expr * Alignment,
OpenMPAllocateClauseModifier FirstModifier,
SourceLocation FirstModifierLoc,
OpenMPAllocateClauseModifier SecondModifier,
SourceLocation SecondModifierLoc,
ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ColonLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'allocate' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2083 of file TreeTransform.h.

◆ RebuildOMPAllocatorClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPAllocatorClause ( Expr * A,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'allocator' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 1790 of file TreeTransform.h.

◆ RebuildOMPArrayShapingExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildOMPArrayShapingExpr ( Expr * Base,
SourceLocation LParenLoc,
SourceLocation RParenLoc,
ArrayRef< Expr * > Dims,
ArrayRef< SourceRange > BracketsRanges )
inline

Build a new array shaping expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 2850 of file TreeTransform.h.

◆ RebuildOMPAtClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPAtClause ( OpenMPAtClauseKind Kind,
SourceLocation KwLoc,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'at' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2477 of file TreeTransform.h.

◆ RebuildOMPBindClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPBindClause ( OpenMPBindClauseKind Kind,
SourceLocation KindLoc,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP '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 2421 of file TreeTransform.h.

◆ RebuildOMPCanonicalLoop()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOMPCanonicalLoop ( Stmt * LoopStmt)
inline

Build a new OpenMP Canonical loop.

Ensures that the outermost loop in LoopStmt is wrapped by a OMPCanonicalLoop.

Definition at line 1662 of file TreeTransform.h.

◆ RebuildOMPCollapseClause()

template<typename Derived>
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 1801 of file TreeTransform.h.

◆ RebuildOMPCopyinClause()

template<typename Derived>
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 1991 of file TreeTransform.h.

◆ RebuildOMPCopyprivateClause()

template<typename Derived>
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 2003 of file TreeTransform.h.

◆ RebuildOMPDefaultClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDefaultClause ( DefaultKind Kind,
SourceLocation KindKwLoc,
OpenMPDefaultClauseVariableCategory VCKind,
SourceLocation VCLoc,
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 1812 of file TreeTransform.h.

◆ RebuildOMPDefaultmapClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDefaultmapClause ( OpenMPDefaultmapClauseModifier M,
OpenMPDefaultmapClauseKind Kind,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation MLoc,
SourceLocation KindLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'defaultmap' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2264 of file TreeTransform.h.

◆ RebuildOMPDependClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDependClause ( OMPDependClause::DependDataTy Data,
Expr * DepModifier,
ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'depend' 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 2038 of file TreeTransform.h.

◆ RebuildOMPDepobjClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDepobjClause ( Expr * Depobj,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'depobj' 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 2027 of file TreeTransform.h.

◆ RebuildOMPDestroyClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDestroyClause ( Expr * InteropVar,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation VarLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'destroy' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2375 of file TreeTransform.h.

◆ RebuildOMPDetachClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDetachClause ( Expr * Evt,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'detach' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2172 of file TreeTransform.h.

◆ RebuildOMPDeviceClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDeviceClause ( OpenMPDeviceClauseModifier Modifier,
Expr * Device,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ModifierLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'device' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2051 of file TreeTransform.h.

◆ RebuildOMPDistScheduleClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDistScheduleClause ( OpenMPDistScheduleClauseKind Kind,
Expr * ChunkSize,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation KindLoc,
SourceLocation CommaLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'dist_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 2184 of file TreeTransform.h.

◆ RebuildOMPDoacrossClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPDoacrossClause ( OpenMPDoacrossClauseModifier DepType,
SourceLocation DepLoc,
SourceLocation ColonLoc,
ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'doacross' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2514 of file TreeTransform.h.

◆ RebuildOMPExclusiveClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPExclusiveClause ( ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'exclusive' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2303 of file TreeTransform.h.

◆ RebuildOMPExecutableDirective()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOMPExecutableDirective ( OpenMPDirectiveKind Kind,
DeclarationNameInfo DirName,
OpenMPDirectiveKind CancelRegion,
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 1670 of file TreeTransform.h.

◆ RebuildOMPFilterClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPFilterClause ( Expr * ThreadID,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'filter' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2410 of file TreeTransform.h.

◆ RebuildOMPFinalClause()

template<typename Derived>
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 1712 of file TreeTransform.h.

◆ RebuildOMPFirstprivateClause()

template<typename Derived>
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 1876 of file TreeTransform.h.

◆ RebuildOMPFlushClause()

template<typename Derived>
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 2015 of file TreeTransform.h.

◆ RebuildOMPFromClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPFromClause ( ArrayRef< OpenMPMotionModifierKind > MotionModifiers,
ArrayRef< SourceLocation > MotionModifiersLoc,
CXXScopeSpec & MapperIdScopeSpec,
DeclarationNameInfo & MapperId,
SourceLocation ColonLoc,
ArrayRef< Expr * > VarList,
const OMPVarListLocTy & Locs,
ArrayRef< Expr * > UnresolvedMappers )
inline

Build a new OpenMP 'from' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2213 of file TreeTransform.h.

◆ RebuildOMPFullClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPFullClause ( SourceLocation StartLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'full' clause.

Definition at line 1773 of file TreeTransform.h.

◆ RebuildOMPGrainsizeClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPGrainsizeClause ( OpenMPGrainsizeClauseModifier Modifier,
Expr * Device,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ModifierLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'grainsize' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2135 of file TreeTransform.h.

◆ RebuildOMPHasDeviceAddrClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPHasDeviceAddrClause ( ArrayRef< Expr * > VarList,
const OMPVarListLocTy & Locs )
inline

Build a new OpenMP 'has_device_addr' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2255 of file TreeTransform.h.

◆ RebuildOMPHintClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPHintClause ( Expr * Hint,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'hint' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2161 of file TreeTransform.h.

◆ RebuildOMPHoldsClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPHoldsClause ( Expr * A,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'holds' clause.

Definition at line 2523 of file TreeTransform.h.

◆ RebuildOMPIfClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPIfClause ( OpenMPDirectiveKind NameModifier,
Expr * Condition,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation NameModifierLoc,
SourceLocation ColonLoc,
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 1697 of file TreeTransform.h.

◆ RebuildOMPInclusiveClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPInclusiveClause ( ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'inclusive' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2291 of file TreeTransform.h.

◆ RebuildOMPInformationalDirective()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOMPInformationalDirective ( OpenMPDirectiveKind Kind,
DeclarationNameInfo DirName,
ArrayRef< OMPClause * > Clauses,
Stmt * AStmt,
SourceLocation StartLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP informational directive.

Definition at line 1682 of file TreeTransform.h.

◆ RebuildOMPInitClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPInitClause ( Expr * InteropVar,
OMPInteropInfo & InteropInfo,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation VarLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'init' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2351 of file TreeTransform.h.

◆ RebuildOMPInReductionClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPInReductionClause ( ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ColonLoc,
SourceLocation EndLoc,
CXXScopeSpec & ReductionIdScopeSpec,
const DeclarationNameInfo & ReductionId,
ArrayRef< Expr * > UnresolvedReductions )
inline

Build a new OpenMP 'in_reduction' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 1949 of file TreeTransform.h.

◆ RebuildOMPIsDevicePtrClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPIsDevicePtrClause ( ArrayRef< Expr * > VarList,
const OMPVarListLocTy & Locs )
inline

Build a new OpenMP 'is_device_ptr' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2246 of file TreeTransform.h.

◆ RebuildOMPIteratorExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildOMPIteratorExpr ( SourceLocation IteratorKwLoc,
SourceLocation LLoc,
SourceLocation RLoc,
ArrayRef< SemaOpenMP::OMPIteratorData > Data )
inline

Build a new iterator expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 2863 of file TreeTransform.h.

◆ RebuildOMPLastprivateClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPLastprivateClause ( ArrayRef< Expr * > VarList,
OpenMPLastprivateModifier LPKind,
SourceLocation LPKindLoc,
SourceLocation ColonLoc,
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 1888 of file TreeTransform.h.

◆ RebuildOMPLinearClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPLinearClause ( ArrayRef< Expr * > VarList,
Expr * Step,
SourceLocation StartLoc,
SourceLocation LParenLoc,
OpenMPLinearClauseKind Modifier,
SourceLocation ModifierLoc,
SourceLocation ColonLoc,
SourceLocation StepModifierLoc,
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 1964 of file TreeTransform.h.

◆ RebuildOMPMapClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPMapClause ( Expr * IteratorModifier,
ArrayRef< OpenMPMapModifierKind > MapTypeModifiers,
ArrayRef< SourceLocation > MapTypeModifiersLoc,
CXXScopeSpec MapperIdScopeSpec,
DeclarationNameInfo MapperId,
OpenMPMapClauseKind MapType,
bool IsMapTypeImplicit,
SourceLocation MapLoc,
SourceLocation ColonLoc,
ArrayRef< Expr * > VarList,
const OMPVarListLocTy & Locs,
ArrayRef< Expr * > UnresolvedMappers )
inline

Build a new OpenMP 'map' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2064 of file TreeTransform.h.

◆ RebuildOMPMessageClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPMessageClause ( Expr * MS,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'message' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2502 of file TreeTransform.h.

◆ RebuildOMPNocontextClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPNocontextClause ( Expr * Condition,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'nocontext' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2399 of file TreeTransform.h.

◆ RebuildOMPNontemporalClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPNontemporalClause ( ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'nontemporal' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2279 of file TreeTransform.h.

◆ RebuildOMPNovariantsClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPNovariantsClause ( Expr * Condition,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'novariants' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2387 of file TreeTransform.h.

◆ RebuildOMPNumTasksClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPNumTasksClause ( OpenMPNumTasksClauseModifier Modifier,
Expr * NumTasks,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ModifierLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'num_tasks' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2148 of file TreeTransform.h.

◆ RebuildOMPNumTeamsClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPNumTeamsClause ( ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'num_teams' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2100 of file TreeTransform.h.

◆ RebuildOMPNumThreadsClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPNumThreadsClause ( OpenMPNumThreadsClauseModifier Modifier,
Expr * NumThreads,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ModifierLoc,
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 1723 of file TreeTransform.h.

◆ RebuildOMPOrderClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPOrderClause ( OpenMPOrderClauseKind Kind,
SourceLocation KindKwLoc,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc,
OpenMPOrderClauseModifier Modifier,
SourceLocation ModifierKwLoc )
inline

Build a new OpenMP 'order' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2339 of file TreeTransform.h.

◆ RebuildOMPOrderedClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPOrderedClause ( SourceLocation StartLoc,
SourceLocation EndLoc,
SourceLocation LParenLoc,
Expr * Num )
inline

Build a new OpenMP 'ordered' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 1853 of file TreeTransform.h.

◆ RebuildOMPPartialClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPPartialClause ( Expr * Factor,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'partial' clause.

Definition at line 1779 of file TreeTransform.h.

◆ RebuildOMPPermutationClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPPermutationClause ( ArrayRef< Expr * > PermExprs,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'permutation' clause.

Definition at line 1764 of file TreeTransform.h.

◆ RebuildOMPPriorityClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPPriorityClause ( Expr * Priority,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'priority' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2124 of file TreeTransform.h.

◆ RebuildOMPPrivateClause()

template<typename Derived>
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 1864 of file TreeTransform.h.

◆ RebuildOMPProcBindClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPProcBindClause ( ProcBindKind 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 1826 of file TreeTransform.h.

◆ RebuildOMPReductionClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPReductionClause ( ArrayRef< Expr * > VarList,
OpenMPReductionClauseModifier Modifier,
OpenMPOriginalSharingModifier OriginalSharingModifier,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ModifierLoc,
SourceLocation ColonLoc,
SourceLocation EndLoc,
CXXScopeSpec & ReductionIdScopeSpec,
const DeclarationNameInfo & ReductionId,
ArrayRef< Expr * > UnresolvedReductions )
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 1915 of file TreeTransform.h.

◆ RebuildOMPSafelenClause()

template<typename Derived>
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 1737 of file TreeTransform.h.

◆ RebuildOMPScheduleClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPScheduleClause ( OpenMPScheduleClauseModifier M1,
OpenMPScheduleClauseModifier M2,
OpenMPScheduleClauseKind Kind,
Expr * ChunkSize,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation M1Loc,
SourceLocation M2Loc,
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 1839 of file TreeTransform.h.

◆ RebuildOMPSeverityClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPSeverityClause ( OpenMPSeverityClauseKind Kind,
SourceLocation KwLoc,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'severity' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2489 of file TreeTransform.h.

◆ RebuildOMPSharedClause()

template<typename Derived>
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 1903 of file TreeTransform.h.

◆ RebuildOMPSimdlenClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPSimdlenClause ( Expr * Len,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'simdlen' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 1748 of file TreeTransform.h.

◆ RebuildOMPSizesClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPSizesClause ( ArrayRef< Expr * > Sizes,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Definition at line 1755 of file TreeTransform.h.

◆ RebuildOMPTaskReductionClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPTaskReductionClause ( ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation ColonLoc,
SourceLocation EndLoc,
CXXScopeSpec & ReductionIdScopeSpec,
const DeclarationNameInfo & ReductionId,
ArrayRef< Expr * > UnresolvedReductions )
inline

Build a new OpenMP 'task_reduction' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 1933 of file TreeTransform.h.

◆ RebuildOMPThreadLimitClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPThreadLimitClause ( ArrayRef< Expr * > VarList,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'thread_limit' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2112 of file TreeTransform.h.

◆ RebuildOMPToClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPToClause ( ArrayRef< OpenMPMotionModifierKind > MotionModifiers,
ArrayRef< SourceLocation > MotionModifiersLoc,
CXXScopeSpec & MapperIdScopeSpec,
DeclarationNameInfo & MapperId,
SourceLocation ColonLoc,
ArrayRef< Expr * > VarList,
const OMPVarListLocTy & Locs,
ArrayRef< Expr * > UnresolvedMappers )
inline

Build a new OpenMP 'to' clause.

By default, performs semantic analysis to build the new statement. Subclasses may override this routine to provide different behavior.

Definition at line 2197 of file TreeTransform.h.

◆ RebuildOMPUseClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPUseClause ( Expr * InteropVar,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation VarLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'use' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2364 of file TreeTransform.h.

◆ RebuildOMPUseDeviceAddrClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPUseDeviceAddrClause ( ArrayRef< Expr * > VarList,
const OMPVarListLocTy & Locs )
inline

Build a new OpenMP 'use_device_addr' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2237 of file TreeTransform.h.

◆ RebuildOMPUseDevicePtrClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPUseDevicePtrClause ( ArrayRef< Expr * > VarList,
const OMPVarListLocTy & Locs )
inline

Build a new OpenMP 'use_device_ptr' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2228 of file TreeTransform.h.

◆ RebuildOMPUsesAllocatorsClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPUsesAllocatorsClause ( ArrayRef< SemaOpenMP::UsesAllocatorsData > Data,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'uses_allocators' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2315 of file TreeTransform.h.

◆ RebuildOMPXAttributeClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPXAttributeClause ( ArrayRef< const Attr * > Attrs,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'ompx_attribute' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2445 of file TreeTransform.h.

◆ RebuildOMPXBareClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPXBareClause ( SourceLocation StartLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'ompx_bare' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2457 of file TreeTransform.h.

◆ RebuildOMPXDynCGroupMemClause()

template<typename Derived>
OMPClause * clang::TreeTransform< Derived >::RebuildOMPXDynCGroupMemClause ( Expr * Size,
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc )
inline

Build a new OpenMP 'ompx_dyn_cgroup_mem' clause.

By default, performs semantic analysis to build the new OpenMP clause. Subclasses may override this routine to provide different behavior.

Definition at line 2434 of file TreeTransform.h.

◆ RebuildOpenACCAsteriskSizeExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildOpenACCAsteriskSizeExpr ( SourceLocation AsteriskLoc)
inline

Definition at line 4260 of file TreeTransform.h.

◆ RebuildOpenACCAtomicConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCAtomicConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
OpenACCAtomicKind AtKind,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses,
StmtResult AssociatedStmt )
inline

Definition at line 4248 of file TreeTransform.h.

◆ RebuildOpenACCCacheConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCCacheConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation LParenLoc,
SourceLocation ReadOnlyLoc,
ArrayRef< Expr * > VarList,
SourceLocation RParenLoc,
SourceLocation EndLoc )
inline

Definition at line 4239 of file TreeTransform.h.

◆ RebuildOpenACCCombinedConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCCombinedConstruct ( OpenACCDirectiveKind K,
SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses,
StmtResult Loop )
inline

Definition at line 4133 of file TreeTransform.h.

◆ RebuildOpenACCComputeConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCComputeConstruct ( OpenACCDirectiveKind K,
SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses,
StmtResult StrBlock )
inline

Definition at line 4111 of file TreeTransform.h.

◆ RebuildOpenACCDataConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCDataConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses,
StmtResult StrBlock )
inline

Definition at line 4144 of file TreeTransform.h.

◆ RebuildOpenACCEnterDataConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCEnterDataConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses )
inline

Definition at line 4156 of file TreeTransform.h.

◆ RebuildOpenACCExitDataConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCExitDataConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses )
inline

Definition at line 4166 of file TreeTransform.h.

◆ RebuildOpenACCHostDataConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCHostDataConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses,
StmtResult StrBlock )
inline

Definition at line 4175 of file TreeTransform.h.

◆ RebuildOpenACCInitConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCInitConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses )
inline

Definition at line 4186 of file TreeTransform.h.

◆ RebuildOpenACCLoopConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCLoopConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses,
StmtResult Loop )
inline

Definition at line 4122 of file TreeTransform.h.

◆ RebuildOpenACCSetConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCSetConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses )
inline

Definition at line 4206 of file TreeTransform.h.

◆ RebuildOpenACCShutdownConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCShutdownConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses )
inline

Definition at line 4197 of file TreeTransform.h.

◆ RebuildOpenACCUpdateConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCUpdateConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses )
inline

Definition at line 4216 of file TreeTransform.h.

◆ RebuildOpenACCWaitConstruct()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildOpenACCWaitConstruct ( SourceLocation BeginLoc,
SourceLocation DirLoc,
SourceLocation LParenLoc,
Expr * DevNumExpr,
SourceLocation QueuesLoc,
ArrayRef< Expr * > QueueIdExprs,
SourceLocation RParenLoc,
SourceLocation EndLoc,
ArrayRef< OpenACCClause * > Clauses )
inline

Definition at line 4226 of file TreeTransform.h.

◆ RebuildPackExpansion() [1/2]

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildPackExpansion ( Expr * Pattern,
SourceLocation EllipsisLoc,
UnsignedOrNone 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 4049 of file TreeTransform.h.

◆ RebuildPackExpansion() [2/2]

template<typename Derived>
TemplateArgumentLoc clang::TreeTransform< Derived >::RebuildPackExpansion ( TemplateArgumentLoc Pattern,
SourceLocation EllipsisLoc,
UnsignedOrNone 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 3998 of file TreeTransform.h.

◆ RebuildPackExpansionType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildPackExpansionType ( QualType Pattern,
SourceRange PatternRange,
SourceLocation EllipsisLoc,
UnsignedOrNone 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 1265 of file TreeTransform.h.

Referenced by TransformFunctionTypeParam().

◆ RebuildPackIndexingExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildPackIndexingExpr ( SourceLocation EllipsisLoc,
SourceLocation RSquareLoc,
Expr * PackIdExpression,
Expr * IndexExpr,
ArrayRef< Expr * > ExpandedExprs,
bool FullySubstituted = false )
inline

Definition at line 3694 of file TreeTransform.h.

◆ RebuildPackIndexingType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildPackIndexingType ( QualType Pattern,
Expr * IndexExpr,
SourceLocation Loc,
SourceLocation EllipsisLoc,
bool FullySubstituted,
ArrayRef< QualType > Expansions = {} )

Definition at line 17353 of file TreeTransform.h.

References SemaRef.

◆ RebuildParenExpr()

template<typename Derived>
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 2731 of file TreeTransform.h.

◆ RebuildParenListExpr()

template<typename Derived>
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 3106 of file TreeTransform.h.

◆ RebuildParenType()

template<typename Derived>
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 1163 of file TreeTransform.h.

◆ RebuildPipeType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildPipeType ( QualType ValueType,
SourceLocation KWLoc,
bool isReadPipe )

Build a new pipe type given its value type.

Definition at line 17384 of file TreeTransform.h.

References SemaRef.

◆ RebuildPointerType()

template<typename Derived>
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 17075 of file TreeTransform.h.

References getBaseEntity(), getDerived(), SemaRef, and clang::Star.

◆ RebuildPredefinedExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildPredefinedExpr ( SourceLocation Loc,
PredefinedIdentKind IK )
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 2697 of file TreeTransform.h.

◆ RebuildQualifiedType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildQualifiedType ( QualType T,
QualifiedTypeLoc TL )

Build a new qualified type given its unqualified type and type location.

By default, this routine adds type qualifiers only to types that can have qualifiers, and silently suppresses those qualifiers that are not permitted. Subclasses may override this routine to provide different behavior.

Definition at line 5428 of file TreeTransform.h.

References clang::Default, clang::Qualifiers::fromCVRMask(), clang::Qualifiers::getAddressSpace(), clang::TypeLoc::getBeginLoc(), clang::QualType::getLocalQualifiers(), clang::Qualifiers::getPointerAuth(), clang::QualType::getQualifiers(), clang::TypeLoc::getType(), clang::QualType::getUnqualifiedType(), clang::Qualifiers::hasObjCLifetime(), clang::Qualifiers::hasRestrict(), clang::Type::isDependentType(), clang::PointerAuthQualifier::isPresent(), clang::Qualifiers::removeObjCLifetime(), clang::Qualifiers::Restrict, SemaRef, and clang::T.

◆ RebuildRecoveryExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildRecoveryExpr ( SourceLocation BeginLoc,
SourceLocation EndLoc,
ArrayRef< Expr * > SubExprs,
QualType Type )
inline

Definition at line 4106 of file TreeTransform.h.

◆ RebuildReferenceType()

template<typename Derived>
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.

Parameters
LValuewhether the type was written with an lvalue sigil or an rvalue sigil.

Definition at line 17090 of file TreeTransform.h.

References getBaseEntity(), getDerived(), and SemaRef.

◆ RebuildRequiresExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildRequiresExpr ( SourceLocation RequiresKWLoc,
RequiresExprBodyDecl * Body,
SourceLocation LParenLoc,
ArrayRef< ParmVarDecl * > LocalParameters,
SourceLocation RParenLoc,
ArrayRef< concepts::Requirement * > Requirements,
SourceLocation ClosingBraceLoc )
inline

Build a new requires expression.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 3740 of file TreeTransform.h.

◆ RebuildReturnStmt()

template<typename Derived>
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 1500 of file TreeTransform.h.

◆ RebuildSEHExceptStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildSEHExceptStmt ( SourceLocation Loc,
Expr * FilterExpr,
Stmt * Block )
inline

Definition at line 2676 of file TreeTransform.h.

◆ RebuildSEHFinallyStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildSEHFinallyStmt ( SourceLocation Loc,
Stmt * Block )
inline

Definition at line 2681 of file TreeTransform.h.

◆ RebuildSEHTryStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildSEHTryStmt ( bool IsCXXTry,
SourceLocation TryLoc,
Stmt * TryBlock,
Stmt * Handler )
inline

Definition at line 2671 of file TreeTransform.h.

◆ RebuildShuffleVectorExpr()

template<typename Derived>
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 3957 of file TreeTransform.h.

◆ RebuildSizeOfPackExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildSizeOfPackExpr ( SourceLocation OperatorLoc,
NamedDecl * Pack,
SourceLocation PackLoc,
SourceLocation RParenLoc,
UnsignedOrNone Length,
ArrayRef< TemplateArgument > PartialArgs )
inline

Build a new expression to compute the length of a parameter pack.

Definition at line 3685 of file TreeTransform.h.

◆ RebuildSourceLocExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildSourceLocExpr ( SourceLocIdentKind Kind,
QualType ResultTy,
SourceLocation BuiltinLoc,
SourceLocation RPLoc,
DeclContext * ParentContext )
inline

Build a new expression representing a call to a source location builtin.

By default, performs semantic analysis to build the new expression. Subclasses may override this routine to provide different behavior.

Definition at line 3709 of file TreeTransform.h.

◆ RebuildStmtExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildStmtExpr ( SourceLocation LParenLoc,
Stmt * SubStmt,
SourceLocation RParenLoc,
unsigned TemplateDepth )
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 3135 of file TreeTransform.h.

◆ RebuildSwitchStmtBody()

template<typename Derived>
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 1439 of file TreeTransform.h.

◆ RebuildSwitchStmtStart()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildSwitchStmtStart ( SourceLocation SwitchLoc,
SourceLocation LParenLoc,
Stmt * Init,
Sema::ConditionResult Cond,
SourceLocation RParenLoc )
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 1427 of file TreeTransform.h.

◆ RebuildSYCLUniqueStableNameExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::RebuildSYCLUniqueStableNameExpr ( SourceLocation OpLoc,
SourceLocation LParen,
SourceLocation RParen,
TypeSourceInfo * TSI )
inline

Definition at line 2685 of file TreeTransform.h.

◆ RebuildTagType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildTagType ( ElaboratedTypeKeyword Keyword,
NestedNameSpecifier Qualifier,
TagDecl * Tag )
inline

Build a new class/struct/union/enum type.

Definition at line 1088 of file TreeTransform.h.

◆ RebuildTemplateIdExpr()

template<typename Derived>
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 3551 of file TreeTransform.h.

◆ RebuildTemplateName() [1/5]

template<typename Derived>
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName ( const TemplateArgument & ArgPack,
Decl * AssociatedDecl,
unsigned Index,
bool Final )
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 1338 of file TreeTransform.h.

◆ RebuildTemplateName() [2/5]

template<typename Derived>
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName ( CXXScopeSpec & SS,
bool TemplateKW,
TemplateName Name )

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 17409 of file TreeTransform.h.

References clang::CXXScopeSpec::getScopeRep(), and SemaRef.

◆ RebuildTemplateName() [3/5]

template<typename Derived>
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName ( CXXScopeSpec & SS,
SourceLocation TemplateKWLoc,
const IdentifierInfo & Name,
SourceLocation NameLoc,
QualType ObjectType,
bool AllowInjectedClassName )

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 17417 of file TreeTransform.h.

References getSema(), clang::OpaquePtr< QualType >::make(), and clang::Template.

◆ RebuildTemplateName() [4/5]

template<typename Derived>
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName ( CXXScopeSpec & SS,
SourceLocation TemplateKWLoc,
IdentifierOrOverloadedOperator IO,
SourceLocation NameLoc,
QualType ObjectType,
bool AllowInjectedClassName )

◆ RebuildTemplateName() [5/5]

template<typename Derived>
TemplateName clang::TreeTransform< Derived >::RebuildTemplateName ( CXXScopeSpec & SS,
SourceLocation TemplateKWLoc,
OverloadedOperatorKind Operator,
SourceLocation NameLoc,
QualType ObjectType,
bool AllowInjectedClassName )

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 17432 of file TreeTransform.h.

References getSema(), clang::OpaquePtr< QualType >::make(), clang::UnqualifiedId::setOperatorFunctionId(), and clang::Template.

◆ RebuildTemplateSpecializationType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildTemplateSpecializationType ( ElaboratedTypeKeyword Keyword,
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 17369 of file TreeTransform.h.

References clang::Keyword, SemaRef, and clang::Template.

◆ RebuildTypedefType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildTypedefType ( ElaboratedTypeKeyword Keyword,
NestedNameSpecifier Qualifier,
TypedefNameDecl * Typedef )
inline

Build a new typedef type.

Definition at line 1075 of file TreeTransform.h.

◆ RebuildTypeOfExprType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildTypeOfExprType ( Expr * Underlying,
SourceLocation Loc,
TypeOfKind Kind )

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 17336 of file TreeTransform.h.

References SemaRef.

◆ RebuildTypeOfType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildTypeOfType ( QualType Underlying,
TypeOfKind Kind )

Build a new typeof(type) type.

By default, builds a new TypeOfType with the given underlying type.

Definition at line 17342 of file TreeTransform.h.

References SemaRef.

◆ RebuildTypeRequirement() [1/2]

template<typename Derived>
concepts::TypeRequirement * clang::TreeTransform< Derived >::RebuildTypeRequirement ( concepts::Requirement::SubstitutionDiagnostic * SubstDiag)
inline

Definition at line 3753 of file TreeTransform.h.

◆ RebuildTypeRequirement() [2/2]

template<typename Derived>
concepts::TypeRequirement * clang::TreeTransform< Derived >::RebuildTypeRequirement ( TypeSourceInfo * T)
inline

Definition at line 3758 of file TreeTransform.h.

◆ RebuildTypeTrait()

template<typename Derived>
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 3494 of file TreeTransform.h.

◆ RebuildUnaryExprOrTypeTrait() [1/2]

template<typename Derived>
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 2788 of file TreeTransform.h.

◆ RebuildUnaryExprOrTypeTrait() [2/2]

template<typename Derived>
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 2776 of file TreeTransform.h.

◆ RebuildUnaryOperator()

template<typename Derived>
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 2753 of file TreeTransform.h.

◆ RebuildUnaryTransformType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildUnaryTransformType ( QualType BaseType,
UnaryTransformType::UTTKind UKind,
SourceLocation Loc )

Build a new unary transform type.

Definition at line 17362 of file TreeTransform.h.

References SemaRef.

◆ RebuildUnresolvedMemberExpr()

template<typename Derived>
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 3655 of file TreeTransform.h.

◆ RebuildUnresolvedUsingType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildUnresolvedUsingType ( ElaboratedTypeKeyword Keyword,
NestedNameSpecifier Qualifier,
SourceLocation NameLoc,
Decl * D )

◆ RebuildUsingType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildUsingType ( ElaboratedTypeKeyword Keyword,
NestedNameSpecifier Qualifier,
UsingShadowDecl * D,
QualType UnderlyingType )
inline

Build a new type found via an alias.

Definition at line 1068 of file TreeTransform.h.

◆ RebuildVAArgExpr()

template<typename Derived>
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 3094 of file TreeTransform.h.

◆ RebuildVariableArrayType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildVariableArrayType ( QualType ElementType,
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 17190 of file TreeTransform.h.

References getDerived().

◆ RebuildVectorType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::RebuildVectorType ( QualType ElementType,
unsigned NumElements,
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 17215 of file TreeTransform.h.

References SemaRef.

◆ RebuildWhileStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::RebuildWhileStmt ( SourceLocation WhileLoc,
SourceLocation LParenLoc,
Sema::ConditionResult Cond,
SourceLocation RParenLoc,
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 1448 of file TreeTransform.h.

◆ RememberPartiallySubstitutedPack()

template<typename Derived>
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 328 of file TreeTransform.h.

◆ RememberSubstitution()

template<typename Derived>
void clang::TreeTransform< Derived >::RememberSubstitution ( MultiLevelTemplateArgumentList )
inline

Definition at line 335 of file TreeTransform.h.

◆ ReplacingOriginal()

template<typename Derived>
bool clang::TreeTransform< Derived >::ReplacingOriginal ( )
inline

Whether the transformation is forming an expression or statement that replaces the original.

In this case, we'll reuse mangling numbers from existing lambdas.

Definition at line 185 of file TreeTransform.h.

◆ setBase()

template<typename Derived>
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 214 of file TreeTransform.h.

◆ SkipLambdaBody()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::SkipLambdaBody ( LambdaExpr * E,
Stmt * Body )

◆ TransformAddressOfOperand()

template<typename Derived>
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 13009 of file TreeTransform.h.

References getDerived().

◆ TransformAttr()

template<typename Derived>
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/types using some other mechanism.

Returns
the transformed attribute

Definition at line 8133 of file TreeTransform.h.

References clang::Attr::getKind().

Referenced by TransformStmtAttr().

◆ transformAttrs()

template<typename Derived>
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 538 of file TreeTransform.h.

◆ TransformCompoundStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::TransformCompoundStmt ( CompoundStmt * S,
bool IsStmtExpr )

Definition at line 8002 of file TreeTransform.h.

References getDerived().

◆ TransformCondition()

template<typename Derived>
Sema::ConditionResult clang::TreeTransform< Derived >::TransformCondition ( SourceLocation Loc,
VarDecl * Var,
Expr * Expr,
Sema::ConditionKind Kind )

◆ TransformCXXNamedCastExpr()

◆ TransformDecl()

template<typename Derived>
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 516 of file TreeTransform.h.

Referenced by SkipLambdaBody(), TransformDeclarationNameInfo(), clang::TreeTransform< AdjustConstraintDepth >::TransformFirstQualifierInScope(), TransformNestedNameSpecifierLoc(), TransformTagType(), TransformTemplateArgument(), and TransformTemplateName().

◆ TransformDeclarationNameInfo()

◆ TransformDefinition()

template<typename Derived>
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 557 of file TreeTransform.h.

Referenced by TransformCondition().

◆ TransformDependentScopeDeclRefExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::TransformDependentScopeDeclRefExpr ( DependentScopeDeclRefExpr * E,
bool IsAddressOfOperand,
TypeSourceInfo ** RecoveryTSI )

◆ transformedLocalDecl()

template<typename Derived>
void clang::TreeTransform< Derived >::transformedLocalDecl ( Decl * Old,
ArrayRef< 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 547 of file TreeTransform.h.

Referenced by TransformFunctionTypeParam().

◆ TransformExceptionSpec()

◆ TransformExpr()

template<typename Derived>
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.

Returns
the transformed expression.

Definition at line 4355 of file TreeTransform.h.

References clang::Stmt::getStmtClass(), and clang::Stmt::NoStmtClass.

◆ TransformExprRequirement()

◆ TransformExprs()

template<typename Derived>
bool clang::TreeTransform< Derived >::TransformExprs ( Expr *const * 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.

Parameters
InputsThe set of expressions to be transformed.
NumInputsThe number of expressions in Inputs.
IsCallIf true, then this transform is being performed on function-call arguments, and any arguments that should be dropped, will be.
OutputsThe transformed input expressions will be added to this vector.
ArgChangedIf non-NULL, will be set true if any argument changed due to transformation.
Returns
true if an error occurred, false otherwise.

Definition at line 4463 of file TreeTransform.h.

References DropCallArgument(), clang::ActionResult< PtrTy, Compress >::get(), getDerived(), getSema(), clang::Stmt::getSourceRange(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Result, and TryExpandParameterPacks().

Referenced by TransformInitializer().

◆ TransformFirstQualifierInScope()

template<typename Derived>
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 570 of file TreeTransform.h.

◆ TransformFunctionProtoType() [1/2]

template<typename Derived>
template<typename Derived>
QualType clang::TreeTransform< Derived >::TransformFunctionProtoType ( TypeLocBuilder & TLB,
FunctionProtoTypeLoc TL )

Definition at line 6479 of file TreeTransform.h.

◆ TransformFunctionProtoType() [2/2]

template<typename Derived>
template<typename Fn>
QualType clang::TreeTransform< Derived >::TransformFunctionProtoType ( TypeLocBuilder & TLB,
FunctionProtoTypeLoc TL,
CXXRecordDecl * ThisContext,
Qualifiers ThisTypeQuals,
Fn TransformExceptionSpec )

Definition at line 6491 of file TreeTransform.h.

References AlwaysRebuild(), clang::FunctionEffectWithCondition::Cond, clang::FunctionEffectsRef::conditions(), clang::Sema::ConstantEvaluated, clang::Dependent, clang::FunctionEffectWithCondition::Effect, clang::FunctionProtoType::ExtProtoInfo::ExceptionSpec, clang::FunctionProtoType::ExtProtoInfo::ExtParameterInfos, clang::False, clang::FunctionProtoType::ExtProtoInfo::FunctionEffects, clang::ActionResult< PtrTy, Compress >::get(), clang::TypeLoc::getBeginLoc(), clang::EffectConditionExpr::getCondition(), getDerived(), clang::FunctionTypeLoc::getExceptionSpecRange(), clang::FunctionTypeLoc::getLocalRangeBegin(), clang::FunctionTypeLoc::getLocalRangeEnd(), clang::FunctionTypeLoc::getLParenLoc(), clang::FunctionTypeLoc::getNumParams(), clang::FunctionTypeLoc::getParams(), clang::Sema::ExtParameterInfoBuilder::getPointerOrNull(), clang::FunctionTypeLoc::getReturnLoc(), clang::FunctionTypeLoc::getRParenLoc(), getSema(), clang::TypeLoc::getType(), clang::InheritingConcreteTypeLoc< Base, Derived, TypeClass >::getTypePtr(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::QualType::isNull(), clang::FunctionEffect::name(), clang::None, clang::FunctionEffect::oppositeKind(), clang::FunctionProtoType::param_type_begin(), clang::TypeLocBuilder::push(), clang::Result, SemaRef, clang::FunctionTypeLoc::setExceptionSpecRange(), clang::FunctionTypeLoc::setLocalRangeBegin(), clang::FunctionTypeLoc::setLocalRangeEnd(), clang::FunctionTypeLoc::setLParenLoc(), clang::FunctionTypeLoc::setParam(), clang::FunctionTypeLoc::setRParenLoc(), clang::T, TransformExceptionSpec(), TransformFunctionTypeParams(), clang::True, and clang::Unevaluated.

◆ TransformFunctionTypeParam()

◆ TransformFunctionTypeParams() [1/2]

template<typename Derived>
bool clang::TreeTransform< Derived >::TransformFunctionTypeParams ( SourceLocation Loc,
ArrayRef< ParmVarDecl * > Params,
const QualType * ParamTypes,
const FunctionProtoType::ExtParameterInfo * ParamInfos,
SmallVectorImpl< QualType > & PTypes,
SmallVectorImpl< ParmVarDecl * > * PVars,
Sema::ExtParameterInfoBuilder & PInfos )
inline

Definition at line 773 of file TreeTransform.h.

◆ TransformFunctionTypeParams() [2/2]

template<typename Derived>
bool clang::TreeTransform< Derived >::TransformFunctionTypeParams ( SourceLocation Loc,
ArrayRef< ParmVarDecl * > Params,
const QualType * ParamTypes,
const FunctionProtoType::ExtParameterInfo * ParamInfos,
SmallVectorImpl< QualType > & PTypes,
SmallVectorImpl< ParmVarDecl * > * PVars,
Sema::ExtParameterInfoBuilder & PInfos,
unsigned * LastParamTransformed )

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.

LastParamTransformed, if non-null, will be set to the index of the last parameter on which transformation was started. In the event of an error, this will contain the parameter which failed to instantiate.

Return true on error.

Definition at line 6247 of file TreeTransform.h.

References clang::TypeLoc::castAs(), clang::Type::containsUnexpandedParameterPack(), getDerived(), clang::PackExpansionTypeLoc::getEllipsisLoc(), clang::PackExpansionTypeLoc::getPatternLoc(), getSema(), clang::ValueDecl::getType(), clang::ConcreteTypeLoc< Base, Derived, TypeClass, LocalData >::getTypePtr(), clang::QualType::isNull(), clang::ValueDecl::isParameterPack(), SemaRef, clang::Sema::ExtParameterInfoBuilder::set(), and TryExpandParameterPacks().

Referenced by TransformFunctionProtoType(), and clang::TreeTransform< AdjustConstraintDepth >::TransformRequiresTypeParams().

◆ TransformInitializer()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::TransformInitializer ( Expr * Init,
bool NotCopyInit )

◆ TransformLambdaBody()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::TransformLambdaBody ( LambdaExpr * E,
Stmt * Body )

Transform the body of a lambda-expression.

Definition at line 15783 of file TreeTransform.h.

References TransformStmt().

◆ TransformNamedTemplateTemplateArgument()

template<typename Derived>
TemplateArgument clang::TreeTransform< Derived >::TransformNamedTemplateTemplateArgument ( NestedNameSpecifierLoc & QualifierLoc,
SourceLocation TemplateKeywordLoc,
TemplateName Name,
SourceLocation NameLoc )

Definition at line 4905 of file TreeTransform.h.

References getDerived(), and clang::TemplateName::isNull().

◆ TransformNestedNameSpecifierLoc()

template<typename Derived>
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 4608 of file TreeTransform.h.

References clang::CXXScopeSpec::Adopt(), AlreadyTransformed(), AlwaysRebuild(), clang::cast(), clang::NestedNameSpecifierLoc::castAsTypeLoc(), clang::Qualifiers::empty(), clang::CXXScopeSpec::Extend(), clang::TypeLoc::getAs(), clang::TypeLoc::getAsAdjusted(), clang::NestedNameSpecifier::getAsNamespaceAndPrefix(), clang::NestedNameSpecifier::getAsRecordDecl(), clang::NestedNameSpecifierLoc::getBeginLoc(), clang::TypeLoc::getBeginLoc(), clang::ElaboratedNameTypeLoc< TL, T >::getDecl(), getDerived(), clang::NestedNameSpecifierLoc::getEndLoc(), clang::NestedNameSpecifier::getKind(), clang::NestedNameSpecifierLoc::getLocalBeginLoc(), clang::NestedNameSpecifierLoc::getLocalEndLoc(), clang::NestedNameSpecifierLoc::getNestedNameSpecifier(), clang::NestedNameSpecifierLoc::getOpaqueData(), clang::CXXScopeSpec::getRange(), clang::CXXScopeSpec::getScopeRep(), clang::TypeLoc::getType(), clang::TypeLocBuilder::getTypeLocInContext(), clang::CXXScopeSpec::getWithLocInContext(), clang::NestedNameSpecifier::Global, clang::CXXScopeSpec::isEmpty(), clang::CXXScopeSpec::location_data(), clang::CXXScopeSpec::location_size(), clang::CXXScopeSpec::Make(), clang::CXXScopeSpec::MakeGlobal(), clang::CXXScopeSpec::MakeMicrosoftSuper(), clang::NestedNameSpecifier::MicrosoftSuper, clang::NamespaceAndPrefix::Namespace, clang::NestedNameSpecifier::Namespace, clang::NestedNameSpecifier::Null, SemaRef, clang::T, TransformDecl(), and clang::NestedNameSpecifier::Type.

◆ TransformNestedRequirement()

◆ TransformOMPClause()

template<typename Derived>
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.

Returns
the transformed OpenMP clause.

Definition at line 4336 of file TreeTransform.h.

References clang::OMPClause::getClauseKind().

◆ TransformOMPExecutableDirective()

◆ TransformOMPInformationalDirective()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::TransformOMPInformationalDirective ( OMPExecutableDirective * D)

This is mostly the same as above, but allows 'informational' class directives when rebuilding the stmt.

It still takes an OMPExecutableDirective-type argument because we're reusing that as the superclass for the 'assume' directive at present, instead of defining a mostly-identical OMPInformationalDirective parent class.

Definition at line 9477 of file TreeTransform.h.

References clang::C, clang::ActionResult< PtrTy, Compress >::get(), getDerived(), getSema(), clang::ActionResult< PtrTy, Compress >::isInvalid(), and clang::StmtError().

◆ TransformOverloadExprDecls()

◆ TransformParenDependentScopeDeclRefExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::TransformParenDependentScopeDeclRefExpr ( ParenExpr * PE,
DependentScopeDeclRefExpr * DRE,
bool IsAddressOfOperand,
TypeSourceInfo ** RecoveryTSI )

◆ TransformReferenceType()

◆ TransformRequiresExprRequirements()

template<typename Derived>
bool clang::TreeTransform< Derived >::TransformRequiresExprRequirements ( ArrayRef< concepts::Requirement * > Reqs,
llvm::SmallVectorImpl< concepts::Requirement * > & Transformed )

Definition at line 15027 of file TreeTransform.h.

References clang::cast(), and getDerived().

◆ TransformRequiresTypeParams()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::TransformRequiresTypeParams ( SourceLocation KWLoc,
SourceLocation RBraceLoc,
const RequiresExpr * RE,
RequiresExprBodyDecl * Body,
ArrayRef< ParmVarDecl * > Params,
SmallVectorImpl< QualType > & PTypes,
SmallVectorImpl< ParmVarDecl * > & TransParams,
Sema::ExtParameterInfoBuilder & PInfos )
inline

Transforms the parameters of a requires expresison into the given vectors.

The result vectors should be kept in sync; null entries in the variables vector are acceptable.

Returns an unset ExprResult on success. Returns an ExprResult the 'not satisfied' RequiresExpr if subsitution failed, OR an ExprError, both of which are cases where transformation shouldn't continue.

Definition at line 791 of file TreeTransform.h.

◆ TransformSEHHandler()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::TransformSEHHandler ( Stmt * Handler)

Definition at line 9376 of file TreeTransform.h.

References clang::cast(), getDerived(), and clang::isa().

◆ TransformStmt()

template<typename Derived>
StmtResult clang::TreeTransform< Derived >::TransformStmt ( Stmt * S,
StmtDiscardKind SDK = StmtDiscardKind::Discarded )

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.

Returns
the transformed statement.

Definition at line 4300 of file TreeTransform.h.

References clang::cast(), Discarded, getDerived(), getSema(), clang::Stmt::getStmtClass(), clang::Stmt::NoStmtClass, and StmtExprResult.

Referenced by TransformLambdaBody().

◆ TransformStmtAttr()

template<typename Derived>
const Attr * clang::TreeTransform< Derived >::TransformStmtAttr ( const Stmt * OrigS,
const Stmt * InstS,
const Attr * A )

Definition at line 8148 of file TreeTransform.h.

References clang::Attr::getKind(), and TransformAttr().

◆ TransformSubstTemplateTypeParmPackType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::TransformSubstTemplateTypeParmPackType ( TypeLocBuilder & TLB,
SubstTemplateTypeParmPackTypeLoc TL,
bool SuppressObjCLifetime )

Definition at line 7238 of file TreeTransform.h.

References getDerived().

◆ TransformTagType()

◆ TransformTemplateArgument()

template<typename Derived>
bool clang::TreeTransform< Derived >::TransformTemplateArgument ( const TemplateArgumentLoc & Input,
TemplateArgumentLoc & Output,
bool Uneval = false )

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 4924 of file TreeTransform.h.

References clang::Sema::ConstantEvaluated, clang::TemplateArgument::Declaration, clang::Sema::ExpressionEvaluationContextRecord::EK_TemplateArgument, clang::TemplateArgument::Expression, clang::ActionResult< PtrTy, Compress >::get(), clang::TemplateArgumentLoc::getArgument(), clang::TemplateArgument::getAsDecl(), clang::TemplateArgument::getAsExpr(), clang::TemplateArgument::getAsIntegral(), clang::TemplateArgument::getAsStructuralValue(), clang::TemplateArgument::getAsTemplate(), clang::TemplateArgument::getAsType(), getBaseLocation(), getDerived(), clang::TemplateArgument::getKind(), clang::TemplateArgument::getNonTypeTemplateArgumentType(), getSema(), clang::TemplateArgumentLoc::getSourceExpression(), clang::TemplateArgumentLoc::getTemplateKWLoc(), clang::TemplateArgumentLoc::getTemplateNameLoc(), clang::TemplateArgumentLoc::getTemplateQualifierLoc(), clang::TypeSourceInfo::getType(), clang::TemplateArgumentLoc::getTypeSourceInfo(), clang::TemplateArgument::Integral, InventTypeSourceInfo(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::QualType::isNull(), clang::TemplateArgument::Null, clang::TemplateArgument::NullPtr, clang::TemplateArgument::Pack, clang::Sema::ReuseLambdaContextDecl, SemaRef, clang::TemplateArgument::StructuralValue, clang::T, clang::TemplateArgument::Template, clang::TemplateArgument::TemplateExpansion, TransformDecl(), clang::TemplateArgument::Type, clang::Sema::Unevaluated, and clang::Unevaluated.

Referenced by ComputeSizeOfPackExprWithoutSubstitution(), PreparePackForExpansion(), and TransformTemplateArguments().

◆ TransformTemplateArguments() [1/2]

template<typename Derived>
bool clang::TreeTransform< Derived >::TransformTemplateArguments ( const TemplateArgumentLoc * Inputs,
unsigned NumInputs,
TemplateArgumentListInfo & Outputs,
bool Uneval = false )
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.

Parameters
InputsThe set of template arguments to be transformed.
NumInputsThe number of template arguments in Inputs.
OutputsThe set of transformed template arguments output by this routine.

Returns true if an error occurred.

Definition at line 669 of file TreeTransform.h.

Referenced by TransformTemplateArguments(), and clang::TreeTransform< AdjustConstraintDepth >::TransformTemplateArguments().

◆ TransformTemplateArguments() [2/2]

template<typename Derived>
template<typename InputIterator>
bool clang::TreeTransform< Derived >::TransformTemplateArguments ( InputIterator First,
InputIterator Last,
TemplateArgumentListInfo & Outputs,
bool Uneval = false )

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.

Parameters
FirstAn iterator to the first template argument.
LastAn iterator one step past the last template argument.
OutputsThe set of transformed template arguments output by this routine.

Returns true if an error occurred.

Definition at line 5091 of file TreeTransform.h.

References clang::TemplateArgumentListInfo::addArgument(), clang::UnexpandedInfo::Ellipsis, clang::UnexpandedInfo::Expand, clang::UnexpandedInfo::ExpandUnderForgetSubstitions, clang::First, getDerived(), getSema(), clang::Last, clang::UnexpandedInfo::NumExpansions, clang::UnexpandedInfo::OrigNumExpansions, clang::TemplateArgument::Pack, PreparePackForExpansion(), clang::UnexpandedInfo::RetainExpansion, TransformTemplateArgument(), and TransformTemplateArguments().

◆ TransformTemplateDepth()

template<typename Derived>
unsigned clang::TreeTransform< Derived >::TransformTemplateDepth ( unsigned Depth)
inline

Transform a template parameter depth level.

During a transformation that transforms template parameters, this maps an old template parameter depth to a new depth.

Definition at line 253 of file TreeTransform.h.

◆ TransformTemplateName()

template<typename Derived>
TemplateName clang::TreeTransform< Derived >::TransformTemplateName ( NestedNameSpecifierLoc & QualifierLoc,
SourceLocation TemplateKWLoc,
TemplateName Name,
SourceLocation NameLoc,
QualType ObjectType = QualType(),
NamedDecl * FirstQualifierInScope = nullptr,
bool AllowInjectedClassName = false )

Transform the given template name.

Parameters
SSThe nested-name-specifier that qualifies the template name. This nested-name-specifier must already have been transformed.
NameThe template name to transform.
NameLocThe source location of the template name.
ObjectTypeIf we're translating a template name within a member access expression, this is the type of the object whose member template is being referenced.
FirstQualifierInScopeIf 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 4799 of file TreeTransform.h.

References clang::CXXScopeSpec::Adopt(), AlwaysRebuild(), clang::TemplateName::getAsDeducedTemplateName(), clang::TemplateName::getAsDependentTemplateName(), clang::TemplateName::getAsQualifiedTemplateName(), clang::TemplateName::getAsSubstTemplateTemplateParm(), clang::TemplateName::getAsSubstTemplateTemplateParmPack(), clang::TemplateName::getAsTemplateDecl(), getDerived(), clang::NestedNameSpecifierLoc::getNestedNameSpecifier(), clang::TemplateName::getQualifier(), clang::QualType::isNull(), clang::TemplateName::isNull(), clang::NestedNameSpecifierLocBuilder::MakeTrivial(), SemaRef, clang::Template, clang::TemplateName, and TransformDecl().

◆ TransformTemplateParameterList()

template<typename Derived>
TemplateParameterList * clang::TreeTransform< Derived >::TransformTemplateParameterList ( TemplateParameterList * TPL)
inline

Definition at line 832 of file TreeTransform.h.

◆ TransformTemplateSpecializationType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::TransformTemplateSpecializationType ( TypeLocBuilder & TLB,
TemplateSpecializationTypeLoc TL,
QualType ObjectType,
NamedDecl * FirstQualifierInScope,
bool AllowInjectedClassName )

Definition at line 7489 of file TreeTransform.h.

References getDerived().

◆ TransformTemplateTypeParmType()

template<typename Derived>
QualType clang::TreeTransform< Derived >::TransformTemplateTypeParmType ( TypeLocBuilder & TLB,
TemplateTypeParmTypeLoc TL,
bool SuppressObjCLifetime )

Definition at line 7189 of file TreeTransform.h.

References getDerived().

◆ TransformType() [1/3]

template<typename Derived>
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.

Returns
the transformed type.

Definition at line 5290 of file TreeTransform.h.

References AlreadyTransformed(), getBaseLocation(), getDerived(), getSema(), clang::TypeSourceInfo::getType(), and clang::T.

Referenced by TransformTypeWithDeducedTST(), and TransformTypeWithDeducedTST().

◆ TransformType() [2/3]

template<typename Derived>
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 5329 of file TreeTransform.h.

References clang::T.

◆ TransformType() [3/3]

template<typename Derived>
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 5308 of file TreeTransform.h.

References AlreadyTransformed(), getBaseEntity(), clang::TypeLoc::getBeginLoc(), getDerived(), clang::TypeLoc::getFullDataSize(), clang::TypeSourceInfo::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::TypeLocBuilder::getTypeSourceInfo(), clang::TypeLocBuilder::reserve(), clang::Result, and SemaRef.

◆ TransformTypeRequirement()

◆ TransformTypeWithDeducedTST() [1/2]

template<typename Derived>
QualType clang::TreeTransform< Derived >::TransformTypeWithDeducedTST ( QualType T)

Transform a type that is permitted to produce a DeducedTemplateSpecializationType.

This is used in the (relatively rare) contexts where it is acceptable for transformation to produce a class template type with deduced template arguments.

Definition at line 5343 of file TreeTransform.h.

References AlreadyTransformed(), getBaseLocation(), getDerived(), getSema(), clang::TypeSourceInfo::getType(), clang::isa(), clang::T, and TransformType().

◆ TransformTypeWithDeducedTST() [2/2]

◆ TransformUnresolvedLookupExpr()

template<typename Derived>
ExprResult clang::TreeTransform< Derived >::TransformUnresolvedLookupExpr ( UnresolvedLookupExpr * E,
bool IsAddressOfOperand )

Definition at line 14752 of file TreeTransform.h.

References TransformUnresolvedLookupExpr().

Referenced by TransformUnresolvedLookupExpr().

◆ TryExpandParameterPacks()

template<typename Derived>
bool clang::TreeTransform< Derived >::TryExpandParameterPacks ( SourceLocation EllipsisLoc,
SourceRange PatternRange,
ArrayRef< UnexpandedParameterPack > Unexpanded,
bool FailOnPackProducingTemplates,
bool & ShouldExpand,
bool & RetainExpansion,
UnsignedOrNone & 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.

Parameters
EllipsisLocThe location of the ellipsis that identifies the pack expansion.
PatternRangeThe source range that covers the entire pattern of the pack expansion.
UnexpandedThe set of unexpanded parameter packs within the pattern.
ShouldExpandWill be set to true if the transformer should expand the corresponding pack expansions into separate arguments. When set, NumExpansions must also be set.
RetainExpansionWhether 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.
NumExpansionsThe 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.
Returns
true if an error occurred (e.g., because the parameter packs are to be instantiated with arguments of different lengths), false otherwise. If false, ShouldExpand (and possibly NumExpansions) must be set.

Definition at line 304 of file TreeTransform.h.

Referenced by TransformExceptionSpec(), TransformExprs(), and TransformFunctionTypeParams().

Member Data Documentation

◆ SemaRef

◆ TransformedLocalDecls

template<typename Derived>
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 150 of file TreeTransform.h.


The documentation for this class was generated from the following file: