class CXXPseudoDestructorExpr
Declaration
class CXXPseudoDestructorExpr : public Expr { /* full declaration omitted */ };
Description
Represents a C++ pseudo-destructor (C++ [expr.pseudo]). A pseudo-destructor is an expression that looks like a member access to a destructor of a scalar type, except that scalar types don't have destructors. For example: Pseudo-destructors typically occur when instantiating templates such as: for scalar types. A pseudo-destructor expression has no run-time semantics beyond evaluating the base expression.
Declared at: clang/include/clang/AST/ExprCXX.h:2534
Inherits from: Expr
Member Variables
- private clang::Stmt* Base = nullptr
- The base expression (that is being destroyed).
- private bool IsArrow
- Whether the operator was an arrow ('->'); otherwise, it was a period ('.').
- private clang::SourceLocation OperatorLoc
- The location of the '.' or '->' operator.
- private clang::NestedNameSpecifierLoc QualifierLoc
- The nested-name-specifier that follows the operator, if present.
- private clang::TypeSourceInfo* ScopeType = nullptr
- The type that precedes the '::' in a qualified pseudo-destructor expression.
- private clang::SourceLocation ColonColonLoc
- The location of the '::' in a qualified pseudo-destructor expression.
- private clang::SourceLocation TildeLoc
- The location of the '~'.
- private clang::PseudoDestructorTypeStorage DestroyedType
- The type being destroyed, or its name if we were unable to resolve the name.
Inherited from Stmt:
Method Overview
- public CXXPseudoDestructorExpr(clang::Stmt::EmptyShell Shell)
- public CXXPseudoDestructorExpr(const clang::ASTContext & Context, clang::Expr * Base, bool isArrow, clang::SourceLocation OperatorLoc, clang::NestedNameSpecifierLoc QualifierLoc, clang::TypeSourceInfo * ScopeType, clang::SourceLocation ColonColonLoc, clang::SourceLocation TildeLoc, clang::PseudoDestructorTypeStorage DestroyedType)
- public clang::Stmt::const_child_range children() const
- public clang::Stmt::child_range children()
- public static bool classof(const clang::Stmt * T)
- public clang::Expr * getBase() const
- public clang::SourceLocation getBeginLoc() const
- public clang::SourceLocation getColonColonLoc() const
- public clang::QualType getDestroyedType() const
- public clang::IdentifierInfo * getDestroyedTypeIdentifier() const
- public clang::TypeSourceInfo * getDestroyedTypeInfo() const
- public clang::SourceLocation getDestroyedTypeLoc() const
- public clang::SourceLocation getEndLoc() const
- public clang::SourceLocation getOperatorLoc() const
- public clang::NestedNameSpecifier * getQualifier() const
- public clang::NestedNameSpecifierLoc getQualifierLoc() const
- public clang::TypeSourceInfo * getScopeTypeInfo() const
- public clang::SourceLocation getTildeLoc() const
- public bool hasQualifier() const
- public bool isArrow() const
- public void setDestroyedType(clang::IdentifierInfo * II, clang::SourceLocation Loc)
- public void setDestroyedType(clang::TypeSourceInfo * Info)
Inherited from Expr:
- public Classify
- public ClassifyLValue
- public ClassifyModifiable
- public EvaluateAsBooleanCondition
- public EvaluateAsConstantExpr
- public EvaluateAsFixedPoint
- public EvaluateAsFloat
- public EvaluateAsInitializer
- public EvaluateAsInt
- public EvaluateAsLValue
- public EvaluateAsRValue
- public EvaluateForOverflow
- public EvaluateKnownConstInt
- public EvaluateKnownConstIntCheckOverflow
- public EvaluateWithSubstitution
- public HasSideEffects
- public IgnoreCasts
- public IgnoreCasts
- public IgnoreConversionOperatorSingleStep
- public IgnoreConversionOperatorSingleStep
- public IgnoreImpCasts
- public IgnoreImpCasts
- public IgnoreImplicit
- public IgnoreImplicit
- public IgnoreImplicitAsWritten
- public IgnoreImplicitAsWritten
- public IgnoreParenBaseCasts
- public IgnoreParenBaseCasts
- public IgnoreParenCasts
- public IgnoreParenCasts
- public IgnoreParenImpCasts
- public IgnoreParenImpCasts
- public IgnoreParenLValueCasts
- public IgnoreParenLValueCasts
- public IgnoreParenNoopCasts
- public IgnoreParenNoopCasts
- public IgnoreParens
- public IgnoreParens
- public IgnoreUnlessSpelledInSource
- public IgnoreUnlessSpelledInSource
- public classof
- public containsErrors
- public containsUnexpandedParameterPack
- public findBoundMemberType
- public getAsBuiltinConstantDeclRef
- public getBestDynamicClassType
- public getBestDynamicClassTypeExpr
- public getDependence
- public getExprLoc
- public getFPFeaturesInEffect
- public getIntegerConstantExpr
- public getObjCProperty
- public getObjectKind
- public getReferencedDeclOfCallee
- public getReferencedDeclOfCallee
- public getSourceBitField
- public getSourceBitField
- public getType
- public getValueKind
- public getValueKindForType
- public hasAnyTypeDependentArguments
- public hasNonTrivialCall
- public hasPlaceholderType
- public hasPlaceholderType
- public isBoundMemberFunction
- public isCXX11ConstantExpr
- public isCXX98IntegralConstantExpr
- public isConstantInitializer
- public isDefaultArgument
- public isEvaluatable
- public isGLValue
- public isImplicitCXXThis
- public isInstantiationDependent
- public isIntegerConstantExpr
- public isKnownToHaveBooleanValue
- public isLValue
- public isModifiableLvalue
- public isNullPointerConstant
- public isOBJCGCCandidate
- public isObjCSelfExpr
- public isOrdinaryOrBitFieldObject
- public isPRValue
- public isPotentialConstantExpr
- public isPotentialConstantExprUnevaluated
- public isReadIfDiscardedInCPlusPlus11
- public isSameComparisonOperand
- public isTemporaryObject
- public isTypeDependent
- public isUnusedResultAWarning
- public isValueDependent
- public isXValue
- public refersToBitField
- public refersToGlobalRegisterVar
- public refersToMatrixElement
- public refersToVectorElement
- protected setDependence
- public setObjectKind
- public setType
- public setValueKind
- public skipRValueSubobjectAdjustments
- public skipRValueSubobjectAdjustments
- public tryEvaluateObjectSize
- public tryEvaluateStrLen
Inherited from ValueStmt:
Inherited from Stmt:
- public EnableStatistics
- public IgnoreContainers
- public IgnoreContainers
- public PrintStats
- public ProcessODRHash
- public Profile
- public addStmtClass
- public child_begin
- public child_begin
- public child_end
- public child_end
- public children
- public children
- public determineLikelihoodConflict
- public dump
- public dump
- public dumpColor
- public dumpPretty
- public getBeginLoc
- public getEndLoc
- public getID
- public getLikelihood
- public getLikelihood
- public getLikelihood
- public getLikelihoodAttr
- public getSourceRange
- public getStmtClass
- public getStmtClassName
- public printJson
- public printPretty
- public printPrettyControlled
- public stripLabelLikeStatements
- public stripLabelLikeStatements
- public viewAST
Methods
¶CXXPseudoDestructorExpr(
clang::Stmt::EmptyShell Shell)
CXXPseudoDestructorExpr(
clang::Stmt::EmptyShell Shell)
Declared at: clang/include/clang/AST/ExprCXX.h:2574
Parameters
- clang::Stmt::EmptyShell Shell
¶CXXPseudoDestructorExpr(
const clang::ASTContext& Context,
clang::Expr* Base,
bool isArrow,
clang::SourceLocation OperatorLoc,
clang::NestedNameSpecifierLoc QualifierLoc,
clang::TypeSourceInfo* ScopeType,
clang::SourceLocation ColonColonLoc,
clang::SourceLocation TildeLoc,
clang::PseudoDestructorTypeStorage
DestroyedType)
CXXPseudoDestructorExpr(
const clang::ASTContext& Context,
clang::Expr* Base,
bool isArrow,
clang::SourceLocation OperatorLoc,
clang::NestedNameSpecifierLoc QualifierLoc,
clang::TypeSourceInfo* ScopeType,
clang::SourceLocation ColonColonLoc,
clang::SourceLocation TildeLoc,
clang::PseudoDestructorTypeStorage
DestroyedType)
Declared at: clang/include/clang/AST/ExprCXX.h:2566
Parameters
- const clang::ASTContext& Context
- clang::Expr* Base
- bool isArrow
- clang::SourceLocation OperatorLoc
- clang::NestedNameSpecifierLoc QualifierLoc
- clang::TypeSourceInfo* ScopeType
- clang::SourceLocation ColonColonLoc
- clang::SourceLocation TildeLoc
- clang::PseudoDestructorTypeStorage DestroyedType
¶clang::Stmt::const_child_range children() const
clang::Stmt::const_child_range children() const
Declared at: clang/include/clang/AST/ExprCXX.h:2669
¶clang::Stmt::child_range children()
clang::Stmt::child_range children()
Declared at: clang/include/clang/AST/ExprCXX.h:2667
¶static bool classof(const clang::Stmt* T)
static bool classof(const clang::Stmt* T)
Declared at: clang/include/clang/AST/ExprCXX.h:2662
Parameters
- const clang::Stmt* T
¶clang::Expr* getBase() const
clang::Expr* getBase() const
Declared at: clang/include/clang/AST/ExprCXX.h:2577
¶clang::SourceLocation getBeginLoc() const
clang::SourceLocation getBeginLoc() const
Declared at: clang/include/clang/AST/ExprCXX.h:2657
¶clang::SourceLocation getColonColonLoc() const
clang::SourceLocation getColonColonLoc() const
Description
Retrieve the location of the '::' in a qualified pseudo-destructor expression.
Declared at: clang/include/clang/AST/ExprCXX.h:2615
¶clang::QualType getDestroyedType() const
clang::QualType getDestroyedType() const
Description
Retrieve the type being destroyed.
Declared at: clang/include/clang/AST/ExprCXX.h:2639
¶clang::IdentifierInfo*
getDestroyedTypeIdentifier() const
clang::IdentifierInfo*
getDestroyedTypeIdentifier() const
Description
In a dependent pseudo-destructor expression for which we do not have full type information on the destroyed type, provides the name of the destroyed type.
Declared at: clang/include/clang/AST/ExprCXX.h:2634
¶clang::TypeSourceInfo* getDestroyedTypeInfo()
const
clang::TypeSourceInfo* getDestroyedTypeInfo()
const
Description
Retrieve the source location information for the type being destroyed. This type-source information is available for non-dependent pseudo-destructor expressions and some dependent pseudo-destructor expressions. Returns null if we only have the identifier for a dependent pseudo-destructor expression.
Declared at: clang/include/clang/AST/ExprCXX.h:2627
¶clang::SourceLocation getDestroyedTypeLoc() const
clang::SourceLocation getDestroyedTypeLoc() const
Description
Retrieve the starting location of the type being destroyed.
Declared at: clang/include/clang/AST/ExprCXX.h:2642
¶clang::SourceLocation getEndLoc() const
clang::SourceLocation getEndLoc() const
Declared at: clang/include/clang/AST/ExprCXX.h:2660
¶clang::SourceLocation getOperatorLoc() const
clang::SourceLocation getOperatorLoc() const
Description
Retrieve the location of the '.' or '->' operator.
Declared at: clang/include/clang/AST/ExprCXX.h:2600
¶clang::NestedNameSpecifier* getQualifier() const
clang::NestedNameSpecifier* getQualifier() const
Description
If the member name was qualified, retrieves the nested-name-specifier that precedes the member name. Otherwise, returns null.
Declared at: clang/include/clang/AST/ExprCXX.h:2591
¶clang::NestedNameSpecifierLoc getQualifierLoc()
const
clang::NestedNameSpecifierLoc getQualifierLoc()
const
Description
Retrieves the nested-name-specifier that qualifies the type name, with source-location information.
Declared at: clang/include/clang/AST/ExprCXX.h:2586
¶clang::TypeSourceInfo* getScopeTypeInfo() const
clang::TypeSourceInfo* getScopeTypeInfo() const
Description
Retrieve the scope type in a qualified pseudo-destructor expression. Pseudo-destructor expressions can have extra qualification within them that is not part of the nested-name-specifier, e.g., \c p->T::~T(). Here, if the object type of the expression is (or may be) a scalar type,\p T may also be a scalar type and, therefore, cannot be part of a nested-name-specifier. It is stored as the "scope type" of the pseudo- destructor expression.
Declared at: clang/include/clang/AST/ExprCXX.h:2611
¶clang::SourceLocation getTildeLoc() const
clang::SourceLocation getTildeLoc() const
Description
Retrieve the location of the '~'.
Declared at: clang/include/clang/AST/ExprCXX.h:2618
¶bool hasQualifier() const
bool hasQualifier() const
Description
Determines whether this member expression actually had a C++ nested-name-specifier prior to the name of the member, e.g., x->Base::foo.
Declared at: clang/include/clang/AST/ExprCXX.h:2582
¶bool isArrow() const
bool isArrow() const
Description
Determine whether this pseudo-destructor expression was written using an '->' (otherwise, it used a '.').
Declared at: clang/include/clang/AST/ExprCXX.h:2597
¶void setDestroyedType(clang::IdentifierInfo* II,
clang::SourceLocation Loc)
void setDestroyedType(clang::IdentifierInfo* II,
clang::SourceLocation Loc)
Description
Set the name of destroyed type for a dependent pseudo-destructor expression.
Declared at: clang/include/clang/AST/ExprCXX.h:2648
Parameters
¶void setDestroyedType(clang::TypeSourceInfo* Info)
void setDestroyedType(clang::TypeSourceInfo* Info)
Description
Set the destroyed type.
Declared at: clang/include/clang/AST/ExprCXX.h:2653
Parameters
- clang::TypeSourceInfo* Info