clang
19.0.0git
|
Data structure used to record current or nested expression evaluation contexts. More...
#include "clang/Sema/Sema.h"
Classes | |
struct | InitializationContext |
Public Types | |
enum | ExpressionKind { EK_Decltype , EK_TemplateArgument , EK_BoundsAttrArgument , EK_Other } |
Describes whether we are in an expression constext which we have to handle differently. More... | |
Public Member Functions | |
ExpressionEvaluationContextRecord (ExpressionEvaluationContext Context, unsigned NumCleanupObjects, CleanupInfo ParentCleanup, Decl *ManglingContextDecl, ExpressionKind ExprContext) | |
bool | isUnevaluated () const |
bool | isPotentiallyEvaluated () const |
bool | isConstantEvaluated () const |
bool | isImmediateFunctionContext () const |
bool | isDiscardedStatementContext () const |
Public Attributes | |
ExpressionEvaluationContext | Context |
The expression evaluation context. More... | |
CleanupInfo | ParentCleanup |
Whether the enclosing context needed a cleanup. More... | |
unsigned | NumCleanupObjects |
The number of active cleanup objects when we entered this expression evaluation context. More... | |
unsigned | NumTypos |
The number of typos encountered during this expression evaluation context (i.e. More... | |
MaybeODRUseExprSet | SavedMaybeODRUseExprs |
SmallVector< LambdaExpr *, 2 > | Lambdas |
The lambdas that are present within this context, if it is indeed an unevaluated context. More... | |
Decl * | ManglingContextDecl |
The declaration that provides context for lambda expressions and block literals if the normal declaration context does not suffice, e.g., in a default function argument. More... | |
SmallVector< CallExpr *, 8 > | DelayedDecltypeCalls |
If we are processing a decltype type, a set of call expressions for which we have deferred checking the completeness of the return type. More... | |
SmallVector< CXXBindTemporaryExpr *, 8 > | DelayedDecltypeBinds |
If we are processing a decltype type, a set of temporary binding expressions for which we have deferred checking the destructor. More... | |
llvm::SmallPtrSet< const Expr *, 8 > | PossibleDerefs |
SmallVector< Expr *, 2 > | VolatileAssignmentLHSs |
Expressions appearing as the LHS of a volatile assignment in this context. More... | |
llvm::SmallVector< ImmediateInvocationCandidate, 4 > | ImmediateInvocationCandidates |
Set of candidates for starting an immediate invocation. More... | |
llvm::SmallPtrSet< DeclRefExpr *, 4 > | ReferenceToConsteval |
Set of DeclRefExprs referencing a consteval function when used in a context not already known to be immediately invoked. More... | |
SmallVector< MaterializeTemporaryExpr *, 8 > | ForRangeLifetimeExtendTemps |
P2718R0 - Lifetime extension in range-based for loops. More... | |
enum clang::Sema::ExpressionEvaluationContextRecord::ExpressionKind | ExprContext |
bool | InDiscardedStatement |
bool | InImmediateFunctionContext |
bool | InImmediateEscalatingFunctionContext |
bool | IsCurrentlyCheckingDefaultArgumentOrInitializer = false |
bool | InConditionallyConstantEvaluateContext = false |
bool | InLifetimeExtendingContext = false |
Whether we are currently in a context in which all temporaries must be lifetime-extended, even if they're not bound to a reference (for example, in a for-range initializer). More... | |
std::optional< InitializationContext > | DelayedDefaultInitializationContext |
Data structure used to record current or nested expression evaluation contexts.
|
inline |
|
inline |
Definition at line 5291 of file Sema.h.
References clang::Sema::ConstantEvaluated, clang::Sema::Context, and clang::Sema::ImmediateFunctionContext.
Referenced by clang::Sema::isAlwaysConstantEvaluatedContext(), clang::Sema::isConstantEvaluatedContext(), and clang::Sema::PopExpressionEvaluationContext().
|
inline |
Definition at line 5311 of file Sema.h.
References clang::Sema::Context, clang::Sema::DiscardedStatement, and clang::Sema::ImmediateFunctionContext.
|
inline |
Definition at line 5296 of file Sema.h.
References clang::Sema::Context, clang::Sema::DiscardedStatement, clang::Sema::ImmediateFunctionContext, and clang::Sema::PotentiallyEvaluated.
Referenced by HandleImmediateInvocations(), and clang::Sema::isImmediateFunctionContext().
|
inline |
Definition at line 5284 of file Sema.h.
References clang::Sema::ConstantEvaluated, clang::Sema::Context, clang::Sema::PotentiallyEvaluated, and clang::Sema::PotentiallyEvaluatedIfUsed.
|
inline |
Definition at line 5278 of file Sema.h.
References clang::Sema::Context, clang::Sema::Unevaluated, clang::Sema::UnevaluatedAbstract, and clang::Sema::UnevaluatedList.
Referenced by clang::Sema::isUnevaluatedContext(), and clang::Sema::PopExpressionEvaluationContext().
ExpressionEvaluationContext clang::Sema::ExpressionEvaluationContextRecord::Context |
The expression evaluation context.
Definition at line 5170 of file Sema.h.
Referenced by clang::Sema::isCheckingDefaultArgumentOrInitializer().
SmallVector<CXXBindTemporaryExpr *, 8> clang::Sema::ExpressionEvaluationContextRecord::DelayedDecltypeBinds |
SmallVector<CallExpr *, 8> clang::Sema::ExpressionEvaluationContextRecord::DelayedDecltypeCalls |
std::optional<InitializationContext> clang::Sema::ExpressionEvaluationContextRecord::DelayedDefaultInitializationContext |
enum clang::Sema::ExpressionEvaluationContextRecord::ExpressionKind clang::Sema::ExpressionEvaluationContextRecord::ExprContext |
Referenced by clang::Sema::PopExpressionEvaluationContext().
SmallVector<MaterializeTemporaryExpr *, 8> clang::Sema::ExpressionEvaluationContextRecord::ForRangeLifetimeExtendTemps |
P2718R0 - Lifetime extension in range-based for loops.
MaterializeTemporaryExprs in for-range-init expressions which need to extend lifetime. Add MaterializeTemporaryExpr* if the value of InLifetimeExtendingContext is true.
Definition at line 5221 of file Sema.h.
Referenced by clang::Sema::PopExpressionEvaluationContext().
llvm::SmallVector<ImmediateInvocationCandidate, 4> clang::Sema::ExpressionEvaluationContextRecord::ImmediateInvocationCandidates |
Set of candidates for starting an immediate invocation.
Definition at line 5211 of file Sema.h.
Referenced by HandleImmediateInvocations().
Definition at line 5243 of file Sema.h.
Referenced by clang::Sema::isAlwaysConstantEvaluatedContext().
bool clang::Sema::ExpressionEvaluationContextRecord::InDiscardedStatement |
bool clang::Sema::ExpressionEvaluationContextRecord::InImmediateEscalatingFunctionContext |
bool clang::Sema::ExpressionEvaluationContextRecord::InImmediateFunctionContext |
Whether we are currently in a context in which all temporaries must be lifetime-extended, even if they're not bound to a reference (for example, in a for-range initializer).
Definition at line 5248 of file Sema.h.
Referenced by clang::Sema::PopExpressionEvaluationContext().
bool clang::Sema::ExpressionEvaluationContextRecord::IsCurrentlyCheckingDefaultArgumentOrInitializer = false |
Definition at line 5238 of file Sema.h.
Referenced by clang::Sema::isCheckingDefaultArgumentOrInitializer().
SmallVector<LambdaExpr *, 2> clang::Sema::ExpressionEvaluationContextRecord::Lambdas |
The lambdas that are present within this context, if it is indeed an unevaluated context.
Definition at line 5187 of file Sema.h.
Referenced by clang::Sema::PopExpressionEvaluationContext().
Decl* clang::Sema::ExpressionEvaluationContextRecord::ManglingContextDecl |
unsigned clang::Sema::ExpressionEvaluationContextRecord::NumCleanupObjects |
The number of active cleanup objects when we entered this expression evaluation context.
Definition at line 5177 of file Sema.h.
Referenced by clang::Sema::PopExpressionEvaluationContext().
unsigned clang::Sema::ExpressionEvaluationContextRecord::NumTypos |
The number of typos encountered during this expression evaluation context (i.e.
the number of TypoExprs created).
Definition at line 5181 of file Sema.h.
Referenced by clang::Sema::PopExpressionEvaluationContext().
CleanupInfo clang::Sema::ExpressionEvaluationContextRecord::ParentCleanup |
Whether the enclosing context needed a cleanup.
Definition at line 5173 of file Sema.h.
Referenced by clang::Sema::PopExpressionEvaluationContext().
llvm::SmallPtrSet<const Expr *, 8> clang::Sema::ExpressionEvaluationContextRecord::PossibleDerefs |
Definition at line 5202 of file Sema.h.
Referenced by clang::Sema::WarnOnPendingNoDerefs().
llvm::SmallPtrSet<DeclRefExpr *, 4> clang::Sema::ExpressionEvaluationContextRecord::ReferenceToConsteval |
Set of DeclRefExprs referencing a consteval function when used in a context not already known to be immediately invoked.
Definition at line 5215 of file Sema.h.
Referenced by HandleImmediateInvocations().
MaybeODRUseExprSet clang::Sema::ExpressionEvaluationContextRecord::SavedMaybeODRUseExprs |
Definition at line 5183 of file Sema.h.
Referenced by clang::Sema::PopExpressionEvaluationContext().
SmallVector<Expr *, 2> clang::Sema::ExpressionEvaluationContextRecord::VolatileAssignmentLHSs |
Expressions appearing as the LHS of a volatile assignment in this context.
We produce a warning for these when popping the context if they are not discarded-value expressions nor unevaluated operands.
Definition at line 5207 of file Sema.h.
Referenced by clang::Sema::PopExpressionEvaluationContext().