clang 17.0.0git
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
clang::Sema::ExpressionEvaluationContextRecord Struct Reference

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_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 isConstantEvaluated () const
 
bool isImmediateFunctionContext () const
 
bool isDiscardedStatementContext () const
 

Public Attributes

ExpressionEvaluationContext Context
 The expression evaluation context.
 
CleanupInfo ParentCleanup
 Whether the enclosing context needed a cleanup.
 
unsigned NumCleanupObjects
 The number of active cleanup objects when we entered this expression evaluation context.
 
unsigned NumTypos
 The number of typos encountered during this expression evaluation context (i.e.
 
MaybeODRUseExprSet SavedMaybeODRUseExprs
 
SmallVector< LambdaExpr *, 2 > Lambdas
 The lambdas that are present within this context, if it is indeed an unevaluated context.
 
DeclManglingContextDecl
 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.
 
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.
 
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.
 
llvm::SmallPtrSet< const Expr *, 8 > PossibleDerefs
 
SmallVector< Expr *, 2 > VolatileAssignmentLHSs
 Expressions appearing as the LHS of a volatile assignment in this context.
 
llvm::SmallVector< ImmediateInvocationCandidate, 4 > ImmediateInvocationCandidates
 Set of candidates for starting an immediate invocation.
 
llvm::SmallPtrSet< DeclRefExpr *, 4 > ReferenceToConsteval
 Set of DeclRefExprs referencing a consteval function when used in a context not already known to be immediately invoked.
 
enum clang::Sema::ExpressionEvaluationContextRecord::ExpressionKind ExprContext
 
bool InDiscardedStatement
 
bool InImmediateFunctionContext
 
bool IsCurrentlyCheckingDefaultArgumentOrInitializer = false
 
std::optional< InitializationContextDelayedDefaultInitializationContext
 

Detailed Description

Data structure used to record current or nested expression evaluation contexts.

Definition at line 1273 of file Sema.h.

Member Enumeration Documentation

◆ ExpressionKind

Describes whether we are in an expression constext which we have to handle differently.

Enumerator
EK_Decltype 
EK_TemplateArgument 
EK_Other 

Definition at line 1323 of file Sema.h.

Constructor & Destructor Documentation

◆ ExpressionEvaluationContextRecord()

clang::Sema::ExpressionEvaluationContextRecord::ExpressionEvaluationContextRecord ( ExpressionEvaluationContext  Context,
unsigned  NumCleanupObjects,
CleanupInfo  ParentCleanup,
Decl ManglingContextDecl,
ExpressionKind  ExprContext 
)
inline

Definition at line 1351 of file Sema.h.

Member Function Documentation

◆ isConstantEvaluated()

bool clang::Sema::ExpressionEvaluationContextRecord::isConstantEvaluated ( ) const
inline

◆ isDiscardedStatementContext()

bool clang::Sema::ExpressionEvaluationContextRecord::isDiscardedStatementContext ( ) const
inline

◆ isImmediateFunctionContext()

bool clang::Sema::ExpressionEvaluationContextRecord::isImmediateFunctionContext ( ) const
inline

◆ isUnevaluated()

bool clang::Sema::ExpressionEvaluationContextRecord::isUnevaluated ( ) const
inline

Member Data Documentation

◆ Context

ExpressionEvaluationContext clang::Sema::ExpressionEvaluationContextRecord::Context

◆ DelayedDecltypeBinds

SmallVector<CXXBindTemporaryExpr *, 8> clang::Sema::ExpressionEvaluationContextRecord::DelayedDecltypeBinds

If we are processing a decltype type, a set of temporary binding expressions for which we have deferred checking the destructor.

Definition at line 1305 of file Sema.h.

◆ DelayedDecltypeCalls

SmallVector<CallExpr *, 8> clang::Sema::ExpressionEvaluationContextRecord::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.

Definition at line 1301 of file Sema.h.

◆ DelayedDefaultInitializationContext

std::optional<InitializationContext> clang::Sema::ExpressionEvaluationContextRecord::DelayedDefaultInitializationContext

Definition at line 1349 of file Sema.h.

◆ ExprContext

enum clang::Sema::ExpressionEvaluationContextRecord::ExpressionKind clang::Sema::ExpressionEvaluationContextRecord::ExprContext

◆ ImmediateInvocationCandidates

llvm::SmallVector<ImmediateInvocationCandidate, 4> clang::Sema::ExpressionEvaluationContextRecord::ImmediateInvocationCandidates

Set of candidates for starting an immediate invocation.

Definition at line 1315 of file Sema.h.

Referenced by HandleImmediateInvocations(), and RemoveNestedImmediateInvocation().

◆ InDiscardedStatement

bool clang::Sema::ExpressionEvaluationContextRecord::InDiscardedStatement

Definition at line 1329 of file Sema.h.

Referenced by isDiscardedStatementContext().

◆ InImmediateFunctionContext

bool clang::Sema::ExpressionEvaluationContextRecord::InImmediateFunctionContext

Definition at line 1330 of file Sema.h.

Referenced by isImmediateFunctionContext().

◆ IsCurrentlyCheckingDefaultArgumentOrInitializer

bool clang::Sema::ExpressionEvaluationContextRecord::IsCurrentlyCheckingDefaultArgumentOrInitializer = false

Definition at line 1332 of file Sema.h.

Referenced by clang::Sema::isCheckingDefaultArgumentOrInitializer().

◆ Lambdas

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 1292 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().

◆ ManglingContextDecl

Decl* clang::Sema::ExpressionEvaluationContextRecord::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.

Definition at line 1297 of file Sema.h.

◆ NumCleanupObjects

unsigned clang::Sema::ExpressionEvaluationContextRecord::NumCleanupObjects

The number of active cleanup objects when we entered this expression evaluation context.

Definition at line 1282 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().

◆ NumTypos

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 1286 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().

◆ ParentCleanup

CleanupInfo clang::Sema::ExpressionEvaluationContextRecord::ParentCleanup

Whether the enclosing context needed a cleanup.

Definition at line 1278 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().

◆ PossibleDerefs

llvm::SmallPtrSet<const Expr *, 8> clang::Sema::ExpressionEvaluationContextRecord::PossibleDerefs

Definition at line 1307 of file Sema.h.

Referenced by clang::Sema::WarnOnPendingNoDerefs().

◆ ReferenceToConsteval

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 1319 of file Sema.h.

Referenced by HandleImmediateInvocations(), and RemoveNestedImmediateInvocation().

◆ SavedMaybeODRUseExprs

MaybeODRUseExprSet clang::Sema::ExpressionEvaluationContextRecord::SavedMaybeODRUseExprs

Definition at line 1288 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().

◆ VolatileAssignmentLHSs

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 1312 of file Sema.h.

Referenced by clang::Sema::PopExpressionEvaluationContext().


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