clang 22.0.0git
clang::Scope Class Reference

Scope - A scope is a transient data structure that is used while parsing the program. More...

#include "clang/Sema/Scope.h"

Public Types

enum  ScopeFlags {
  NoScope = 0 , FnScope = 0x01 , BreakScope = 0x02 , ContinueScope = 0x04 ,
  DeclScope = 0x08 , ControlScope = 0x10 , ClassScope = 0x20 , BlockScope = 0x40 ,
  TemplateParamScope = 0x80 , FunctionPrototypeScope = 0x100 , FunctionDeclarationScope = 0x200 , AtCatchScope = 0x400 ,
  ObjCMethodScope = 0x800 , SwitchScope = 0x1000 , TryScope = 0x2000 , FnTryCatchScope = 0x4000 ,
  OpenMPDirectiveScope = 0x8000 , OpenMPLoopDirectiveScope = 0x10000 , OpenMPSimdDirectiveScope = 0x20000 , EnumScope = 0x40000 ,
  SEHTryScope = 0x80000 , SEHExceptScope = 0x100000 , SEHFilterScope = 0x200000 , CompoundStmtScope = 0x400000 ,
  ClassInheritanceScope = 0x800000 , CatchScope = 0x1000000 , ConditionVarScope = 0x2000000 , OpenMPOrderClauseScope = 0x4000000 ,
  LambdaScope = 0x8000000 , OpenACCComputeConstructScope = 0x10000000 , OpenACCLoopConstructScope = 0x20000000 , TypeAliasScope = 0x40000000 ,
  FriendScope = 0x80000000
}
 ScopeFlags - These are bitfields that are or'd together when creating a scope, which defines the sorts of things the scope contains. More...
using decl_range = llvm::iterator_range<DeclSetTy::iterator>
using using_directives_range

Public Member Functions

 Scope (Scope *Parent, unsigned ScopeFlags, DiagnosticsEngine &Diag)
unsigned getFlags () const
 getFlags - Return the flags for this scope.
void setFlags (unsigned F)
LabelDeclgetPrecedingLabel () const
 Get the label that precedes this scope.
void setPrecedingLabel (LabelDecl *LD)
bool isBlockScope () const
 isBlockScope - Return true if this scope correspond to a closure.
const ScopegetParent () const
 getParent - Return the scope that this is nested in.
ScopegetParent ()
const ScopegetFnParent () const
 getFnParent - Return the closest scope that is a function body.
ScopegetFnParent ()
const ScopegetMSLastManglingParent () const
ScopegetMSLastManglingParent ()
ScopegetContinueParent ()
 getContinueParent - Return the closest scope that a continue statement would be affected by.
const ScopegetContinueParent () const
void setIsConditionVarScope (bool InConditionVarScope)
bool isConditionVarScope () const
ScopegetBreakParent ()
 getBreakParent - Return the closest scope that a break statement would be affected by.
const ScopegetBreakParent () const
ScopegetBlockParent ()
const ScopegetBlockParent () const
ScopegetTemplateParamParent ()
const ScopegetTemplateParamParent () const
ScopegetDeclParent ()
const ScopegetDeclParent () const
unsigned getDepth () const
 Returns the depth of this scope. The translation-unit has scope depth 0.
unsigned getFunctionPrototypeDepth () const
 Returns the number of function prototype scopes in this scope chain.
unsigned getNextFunctionPrototypeIndex ()
 Return the number of parameters declared in this function prototype, increasing it by one for the next call.
decl_range decls () const
bool decl_empty () const
void AddDecl (Decl *D)
void RemoveDecl (Decl *D)
void incrementMSManglingNumber ()
void decrementMSManglingNumber ()
unsigned getMSLastManglingNumber () const
unsigned getMSCurManglingNumber () const
bool isDeclScope (const Decl *D) const
 isDeclScope - Return true if this is the scope that the specified decl is declared in.
DeclContextgetEntity () const
 Get the entity corresponding to this scope.
DeclContextgetLookupEntity () const
 Get the DeclContext in which to continue unqualified lookup after a lookup in this scope.
void setEntity (DeclContext *E)
void setLookupEntity (DeclContext *E)
bool hasUnrecoverableErrorOccurred () const
 Determine whether any unrecoverable errors have occurred within this scope.
bool isFunctionScope () const
 isFunctionScope() - Return true if this scope is a function scope.
bool isClassScope () const
 isClassScope - Return true if this scope is a class/struct/union scope.
bool isClassInheritanceScope () const
 Determines whether this scope is between inheritance colon and the real class/struct definition.
bool isInCXXInlineMethodScope () const
 isInCXXInlineMethodScope - Return true if this scope is a C++ inline method scope or is inside one.
bool isInCFunctionScope () const
 isInObjcMethodScope - Return true if this scope is, or is contained, in an C function body.
bool isInObjcMethodScope () const
 isInObjcMethodScope - Return true if this scope is, or is contained in, an Objective-C method body.
bool isInObjcMethodOuterScope () const
 isInObjcMethodOuterScope - Return true if this scope is an Objective-C method outer most body.
bool isTemplateParamScope () const
 isTemplateParamScope - Return true if this scope is a C++ template parameter scope.
bool isFunctionPrototypeScope () const
 isFunctionPrototypeScope - Return true if this scope is a function prototype scope.
bool isFunctionDeclarationScope () const
 isFunctionDeclarationScope - Return true if this scope is a function prototype scope.
bool isAtCatchScope () const
 isAtCatchScope - Return true if this scope is @catch.
bool isCatchScope () const
 isCatchScope - Return true if this scope is a C++ catch statement.
bool isSwitchScope () const
 isSwitchScope - Return true if this scope is a switch scope.
bool isLoopScope () const
 Return true if this scope is a loop.
bool isOpenMPDirectiveScope () const
 Determines whether this scope is the OpenMP directive scope.
bool isOpenMPLoopDirectiveScope () const
 Determine whether this scope is some OpenMP loop directive scope (for example, 'omp for', 'omp simd').
bool isOpenMPSimdDirectiveScope () const
 Determine whether this scope is (or is nested into) some OpenMP loop simd directive scope (for example, 'omp simd', 'omp for simd').
bool isOpenMPLoopScope () const
 Determine whether this scope is a loop having OpenMP loop directive attached.
bool isOpenMPOrderClauseScope () const
 Determine whether this scope is some OpenMP directive with order clause which specifies concurrent scope.
bool isOpenACCComputeConstructScope () const
 Determine whether this scope is the statement associated with an OpenACC Compute construct directive.
bool isOpenACCLoopConstructScope () const
bool isInOpenACCComputeConstructScope (ScopeFlags Flags=NoScope) const
 Determine if this scope (or its parents) are a compute construct.
bool isContinueScope () const
 Determine whether this scope is a while/do/for statement, which can have continue statements embedded into it.
bool isBreakOrContinueScope () const
 Determine whether this is a scope which can have 'break' or 'continue' statements embedded into it.
bool isTryScope () const
 Determine whether this scope is a C++ 'try' block.
bool isFnTryCatchScope () const
 Determine whether this scope is a function-level C++ try or catch scope.
bool isSEHTryScope () const
 Determine whether this scope is a SEH '__try' block.
bool isSEHExceptScope () const
 Determine whether this scope is a SEH '__except' block.
bool isCompoundStmtScope () const
 Determine whether this scope is a compound statement scope.
bool isControlScope () const
 Determine whether this scope is a controlling scope in a if/switch/while/for statement.
bool isTypeAliasScope () const
 Determine whether this scope is a type alias scope.
bool isFriendScope () const
 Determine whether this scope is a friend scope.
bool Contains (const Scope &rhs) const
 Returns if rhs has a higher scope depth than this.
bool containedInPrototypeScope () const
 containedInPrototypeScope - Return true if this or a parent scope is a FunctionPrototypeScope.
void PushUsingDirective (UsingDirectiveDecl *UDir)
using_directives_range using_directives ()
void updateNRVOCandidate (VarDecl *VD)
void applyNRVO ()
void Init (Scope *parent, unsigned flags)
 Init - This is used by the parser to implement scope caching.
void AddFlags (unsigned Flags)
 Sets up the specified scope flags and adjusts the scope state variables accordingly.
void dumpImpl (raw_ostream &OS) const
void dump () const

Detailed Description

Scope - A scope is a transient data structure that is used while parsing the program.

It assists with resolving identifiers to the appropriate declaration.

Definition at line 41 of file Scope.h.

Member Typedef Documentation

◆ decl_range

using clang::Scope::decl_range = llvm::iterator_range<DeclSetTy::iterator>

Definition at line 354 of file Scope.h.

◆ using_directives_range

Initial value:
llvm::iterator_range<UsingDirectivesTy::iterator>

Definition at line 647 of file Scope.h.

Member Enumeration Documentation

◆ ScopeFlags

ScopeFlags - These are bitfields that are or'd together when creating a scope, which defines the sorts of things the scope contains.

Enumerator
NoScope 
FnScope 

This indicates that the scope corresponds to a function, which means that labels are set here.

BreakScope 

This is a while, do, switch, for, etc that can have break statements embedded into it.

ContinueScope 

This is a while, do, for, which can have continue statements embedded into it.

DeclScope 

This is a scope that can contain a declaration.

Some scopes just contain loop constructs but don't contain decls.

ControlScope 

The controlling scope in a if/switch/while/for statement.

ClassScope 

The scope of a struct/union/class definition.

BlockScope 

This is a scope that corresponds to a block/closure object.

Blocks serve as top-level scopes for some objects like labels, they also prevent things like break and continue. BlockScopes always have the FnScope and DeclScope flags set as well.

TemplateParamScope 

This is a scope that corresponds to the template parameters of a C++ template.

Template parameter scope starts at the 'template' keyword and ends when the template declaration ends.

FunctionPrototypeScope 

This is a scope that corresponds to the parameters within a function prototype.

FunctionDeclarationScope 

This is a scope that corresponds to the parameters within a function prototype for a function declaration (as opposed to any other kind of function declarator).

Always has FunctionPrototypeScope set as well.

AtCatchScope 

This is a scope that corresponds to the Objective-C @catch statement.

ObjCMethodScope 

This scope corresponds to an Objective-C method body.

It always has FnScope and DeclScope set as well.

SwitchScope 

This is a scope that corresponds to a switch statement.

TryScope 

This is the scope of a C++ try statement.

FnTryCatchScope 

This is the scope for a function-level C++ try or catch scope.

OpenMPDirectiveScope 

This is the scope of OpenMP executable directive.

OpenMPLoopDirectiveScope 

This is the scope of some OpenMP loop directive.

OpenMPSimdDirectiveScope 

This is the scope of some OpenMP simd directive.

For example, it is used for 'omp simd', 'omp for simd'. This flag is propagated to children scopes.

EnumScope 

This scope corresponds to an enum.

SEHTryScope 

This scope corresponds to an SEH try.

SEHExceptScope 

This scope corresponds to an SEH except.

SEHFilterScope 

We are currently in the filter expression of an SEH except block.

CompoundStmtScope 

This is a compound statement scope.

ClassInheritanceScope 

We are between inheritance colon and the real class/struct definition scope.

CatchScope 

This is the scope of a C++ catch statement.

ConditionVarScope 

This is a scope in which a condition variable is currently being parsed.

If such a scope is a ContinueScope, it's invalid to jump to the continue block from here.

OpenMPOrderClauseScope 

This is a scope of some OpenMP directive with order clause which specifies concurrent.

LambdaScope 

This is the scope for a lambda, after the lambda introducer.

Lambdas need two FunctionPrototypeScope scopes (because there is a template scope in between), the outer scope does not increase the depth of recursion.

OpenACCComputeConstructScope 

This is the scope of an OpenACC Compute Construct, which restricts jumping into/out of it.

We also use this to represent 'combined' constructs, since they have the same behavior.

OpenACCLoopConstructScope 

This is the scope of an OpenACC Loop/Combined construct, which is used to determine whether a 'cache' construct variable reference is legal.

TypeAliasScope 

This is a scope of type alias declaration.

FriendScope 

This is a scope of friend declaration.

Definition at line 45 of file Scope.h.

Constructor & Destructor Documentation

◆ Scope()

Member Function Documentation

◆ AddDecl()

◆ AddFlags()

void Scope::AddFlags ( unsigned Flags)

Sets up the specified scope flags and adjusts the scope state variables accordingly.

Definition at line 116 of file Scope.cpp.

References BreakScope, and ContinueScope.

◆ applyNRVO()

void Scope::applyNRVO ( )

◆ containedInPrototypeScope()

bool Scope::containedInPrototypeScope ( ) const

containedInPrototypeScope - Return true if this or a parent scope is a FunctionPrototypeScope.

Definition at line 106 of file Scope.cpp.

References getParent(), isFunctionPrototypeScope(), and Scope().

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

◆ Contains()

bool clang::Scope::Contains ( const Scope & rhs) const
inline

Returns if rhs has a higher scope depth than this.

The caller is responsible for calling this only if one of the two scopes is an ancestor of the other.

Definition at line 637 of file Scope.h.

References Scope().

Referenced by CheckJumpOutOfSEHFinally().

◆ decl_empty()

bool clang::Scope::decl_empty ( ) const
inline

Definition at line 360 of file Scope.h.

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

◆ decls()

decl_range clang::Scope::decls ( ) const
inline

◆ decrementMSManglingNumber()

void clang::Scope::decrementMSManglingNumber ( )
inline

Definition at line 379 of file Scope.h.

References getMSLastManglingParent(), and Scope().

◆ dump()

LLVM_DUMP_METHOD void Scope::dump ( ) const

Definition at line 197 of file Scope.cpp.

References dumpImpl().

◆ dumpImpl()

◆ getBlockParent() [1/2]

Scope * clang::Scope::getBlockParent ( )
inline

Definition at line 329 of file Scope.h.

References Scope().

◆ getBlockParent() [2/2]

const Scope * clang::Scope::getBlockParent ( ) const
inline

Definition at line 330 of file Scope.h.

References Scope().

◆ getBreakParent() [1/2]

Scope * clang::Scope::getBreakParent ( )
inline

getBreakParent - Return the closest scope that a break statement would be affected by.

Definition at line 322 of file Scope.h.

References Scope().

Referenced by clang::Sema::ActOnBreakStmt(), clang::SemaOpenMP::ActOnOpenMPScanDirective(), AddKeywordsToConsumer(), AddOrdinaryNameResults(), and getBreakParent().

◆ getBreakParent() [2/2]

const Scope * clang::Scope::getBreakParent ( ) const
inline

Definition at line 325 of file Scope.h.

References getBreakParent(), and Scope().

◆ getContinueParent() [1/2]

Scope * clang::Scope::getContinueParent ( )
inline

getContinueParent - Return the closest scope that a continue statement would be affected by.

Definition at line 301 of file Scope.h.

References Scope().

Referenced by clang::Sema::ActOnContinueStmt(), AddKeywordsToConsumer(), AddOrdinaryNameResults(), and getContinueParent().

◆ getContinueParent() [2/2]

const Scope * clang::Scope::getContinueParent ( ) const
inline

Definition at line 305 of file Scope.h.

References getContinueParent(), and Scope().

◆ getDeclParent() [1/2]

◆ getDeclParent() [2/2]

const Scope * clang::Scope::getDeclParent ( ) const
inline

Definition at line 336 of file Scope.h.

References Scope().

◆ getDepth()

unsigned clang::Scope::getDepth ( ) const
inline

Returns the depth of this scope. The translation-unit has scope depth 0.

Definition at line 339 of file Scope.h.

Referenced by clang::Sema::ActOnCXXForRangeStmt(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::BuildCXXForRangeStmt(), and clang::SemaOpenACC::CheckDeclReference().

◆ getEntity()

◆ getFlags()

◆ getFnParent() [1/2]

Scope * clang::Scope::getFnParent ( )
inline

Definition at line 292 of file Scope.h.

References Scope().

◆ getFnParent() [2/2]

◆ getFunctionPrototypeDepth()

unsigned clang::Scope::getFunctionPrototypeDepth ( ) const
inline

Returns the number of function prototype scopes in this scope chain.

Definition at line 343 of file Scope.h.

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

◆ getLookupEntity()

DeclContext * clang::Scope::getLookupEntity ( ) const
inline

Get the DeclContext in which to continue unqualified lookup after a lookup in this scope.

Definition at line 407 of file Scope.h.

◆ getMSCurManglingNumber()

unsigned clang::Scope::getMSCurManglingNumber ( ) const
inline

Definition at line 392 of file Scope.h.

Referenced by dumpImpl(), and getMSManglingNumber().

◆ getMSLastManglingNumber()

unsigned clang::Scope::getMSLastManglingNumber ( ) const
inline

Definition at line 386 of file Scope.h.

References getMSLastManglingParent(), and Scope().

Referenced by dumpImpl(), and getMSManglingNumber().

◆ getMSLastManglingParent() [1/2]

Scope * clang::Scope::getMSLastManglingParent ( )
inline

Definition at line 297 of file Scope.h.

References Scope().

◆ getMSLastManglingParent() [2/2]

const Scope * clang::Scope::getMSLastManglingParent ( ) const
inline

Definition at line 294 of file Scope.h.

References Scope().

Referenced by decrementMSManglingNumber(), getMSLastManglingNumber(), and incrementMSManglingNumber().

◆ getNextFunctionPrototypeIndex()

unsigned clang::Scope::getNextFunctionPrototypeIndex ( )
inline

Return the number of parameters declared in this function prototype, increasing it by one for the next call.

Definition at line 349 of file Scope.h.

References isFunctionPrototypeScope().

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

◆ getParent() [1/2]

Scope * clang::Scope::getParent ( )
inline

Definition at line 288 of file Scope.h.

References Scope().

◆ getParent() [2/2]

const Scope * clang::Scope::getParent ( ) const
inline

◆ getPrecedingLabel()

LabelDecl * clang::Scope::getPrecedingLabel ( ) const
inline

Get the label that precedes this scope.

Definition at line 276 of file Scope.h.

Referenced by FindLabeledBreakContinueScope().

◆ getTemplateParamParent() [1/2]

◆ getTemplateParamParent() [2/2]

const Scope * clang::Scope::getTemplateParamParent ( ) const
inline

Definition at line 333 of file Scope.h.

References Scope().

◆ hasUnrecoverableErrorOccurred()

bool clang::Scope::hasUnrecoverableErrorOccurred ( ) const
inline

Determine whether any unrecoverable errors have occurred within this scope.

Note that this may return false even if the scope contains invalid declarations or statements, if the errors for those invalid constructs were suppressed because some prior invalid construct was referenced.

Definition at line 420 of file Scope.h.

Referenced by clang::Sema::ActOnPopScope(), and clang::SemaObjC::DiagnoseUnusedBackingIvarInAccessor().

◆ incrementMSManglingNumber()

void clang::Scope::incrementMSManglingNumber ( )
inline

Definition at line 372 of file Scope.h.

References getMSLastManglingParent(), and Scope().

◆ Init()

void Scope::Init ( Scope * parent,
unsigned flags )

Init - This is used by the parser to implement scope caching.

Definition at line 95 of file Scope.cpp.

References Scope().

Referenced by clang::Parser::EnterScope().

◆ isAtCatchScope()

bool clang::Scope::isAtCatchScope ( ) const
inline

isAtCatchScope - Return true if this scope is @catch.

Definition at line 498 of file Scope.h.

References AtCatchScope, and getFlags().

Referenced by clang::SemaObjC::ActOnObjCAtThrowStmt().

◆ isBlockScope()

bool clang::Scope::isBlockScope ( ) const
inline

isBlockScope - Return true if this scope correspond to a closure.

Definition at line 284 of file Scope.h.

References BlockScope.

◆ isBreakOrContinueScope()

bool clang::Scope::isBreakOrContinueScope ( ) const
inline

Determine whether this is a scope which can have 'break' or 'continue' statements embedded into it.

Definition at line 600 of file Scope.h.

References BreakScope, ContinueScope, and getFlags().

Referenced by FindLabeledBreakContinueScope().

◆ isCatchScope()

bool clang::Scope::isCatchScope ( ) const
inline

isCatchScope - Return true if this scope is a C++ catch statement.

Definition at line 503 of file Scope.h.

References CatchScope, and getFlags().

Referenced by isWithinCatchScope().

◆ isClassInheritanceScope()

bool clang::Scope::isClassInheritanceScope ( ) const
inline

Determines whether this scope is between inheritance colon and the real class/struct definition.

Definition at line 432 of file Scope.h.

References ClassInheritanceScope, and getFlags().

Referenced by AddOrdinaryNameResults().

◆ isClassScope()

bool clang::Scope::isClassScope ( ) const
inline

isClassScope - Return true if this scope is a class/struct/union scope.

Definition at line 428 of file Scope.h.

References ClassScope, and getFlags().

Referenced by clang::Sema::ActOnIdExpression(), AddKeywordsToConsumer(), clang::SemaCodeCompletion::CodeCompleteUsing(), clang::Sema::getNonFieldDeclScope(), and getTagInjectionScope().

◆ isCompoundStmtScope()

bool clang::Scope::isCompoundStmtScope ( ) const
inline

Determine whether this scope is a compound statement scope.

Definition at line 619 of file Scope.h.

References CompoundStmtScope, and getFlags().

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

◆ isConditionVarScope()

bool clang::Scope::isConditionVarScope ( ) const
inline

Definition at line 316 of file Scope.h.

References ConditionVarScope.

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

◆ isContinueScope()

bool clang::Scope::isContinueScope ( ) const
inline

Determine whether this scope is a while/do/for statement, which can have continue statements embedded into it.

Definition at line 594 of file Scope.h.

References ContinueScope, and getFlags().

◆ isControlScope()

bool clang::Scope::isControlScope ( ) const
inline

Determine whether this scope is a controlling scope in a if/switch/while/for statement.

Definition at line 625 of file Scope.h.

References ControlScope, and getFlags().

Referenced by clang::IdentifierResolver::isDeclInScope().

◆ isDeclScope()

◆ isFnTryCatchScope()

bool clang::Scope::isFnTryCatchScope ( ) const
inline

Determine whether this scope is a function-level C++ try or catch scope.

Definition at line 608 of file Scope.h.

References FnTryCatchScope, and getFlags().

Referenced by clang::IdentifierResolver::isDeclInScope(), and IsInFnTryBlockHandler().

◆ isFriendScope()

bool clang::Scope::isFriendScope ( ) const
inline

Determine whether this scope is a friend scope.

Definition at line 631 of file Scope.h.

References FriendScope, and getFlags().

Referenced by CheckAccess().

◆ isFunctionDeclarationScope()

bool clang::Scope::isFunctionDeclarationScope ( ) const
inline

isFunctionDeclarationScope - Return true if this scope is a function prototype scope.

Definition at line 493 of file Scope.h.

References FunctionDeclarationScope, and getFlags().

Referenced by GetDeclSpecTypeForDeclarator().

◆ isFunctionPrototypeScope()

bool clang::Scope::isFunctionPrototypeScope ( ) const
inline

◆ isFunctionScope()

bool clang::Scope::isFunctionScope ( ) const
inline

isFunctionScope() - Return true if this scope is a function scope.

Definition at line 425 of file Scope.h.

References FnScope, and getFlags().

Referenced by FindLabeledBreakContinueScope(), clang::IdentifierResolver::isDeclInScope(), and isWithinCatchScope().

◆ isInCFunctionScope()

bool clang::Scope::isInCFunctionScope ( ) const
inline

isInObjcMethodScope - Return true if this scope is, or is contained, in an C function body.

Definition at line 448 of file Scope.h.

References Scope().

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

◆ isInCXXInlineMethodScope()

bool clang::Scope::isInCXXInlineMethodScope ( ) const
inline

isInCXXInlineMethodScope - Return true if this scope is a C++ inline method scope or is inside one.

Definition at line 438 of file Scope.h.

References getFnParent(), and Scope().

◆ isInObjcMethodOuterScope()

bool clang::Scope::isInObjcMethodOuterScope ( ) const
inline

isInObjcMethodOuterScope - Return true if this scope is an Objective-C method outer most body.

Definition at line 470 of file Scope.h.

References ObjCMethodScope, and Scope().

◆ isInObjcMethodScope()

bool clang::Scope::isInObjcMethodScope ( ) const
inline

isInObjcMethodScope - Return true if this scope is, or is contained in, an Objective-C method body.

Note that this method is not constant time.

Definition at line 459 of file Scope.h.

References ObjCMethodScope, and Scope().

Referenced by clang::SemaObjC::getObjCMessageKind().

◆ isInOpenACCComputeConstructScope()

bool clang::Scope::isInOpenACCComputeConstructScope ( ScopeFlags Flags = NoScope) const
inline

Determine if this scope (or its parents) are a compute construct.

If the argument is provided, the search will stop at any of the specified scopes. Otherwise, it will stop only at the normal 'no longer search' scopes.

Definition at line 575 of file Scope.h.

References AtCatchScope, BlockScope, ClassScope, FnScope, FunctionPrototypeScope, NoScope, ObjCMethodScope, Scope(), and TemplateParamScope.

◆ isLoopScope()

bool clang::Scope::isLoopScope ( ) const
inline

Return true if this scope is a loop.

Definition at line 520 of file Scope.h.

References BreakScope, getFlags(), and SwitchScope.

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

◆ isOpenACCComputeConstructScope()

bool clang::Scope::isOpenACCComputeConstructScope ( ) const
inline

Determine whether this scope is the statement associated with an OpenACC Compute construct directive.

Definition at line 564 of file Scope.h.

References getFlags(), and OpenACCComputeConstructScope.

Referenced by clang::Sema::ActOnBreakStmt(), clang::Sema::ActOnContinueStmt(), and FindLabeledBreakContinueScope().

◆ isOpenACCLoopConstructScope()

bool clang::Scope::isOpenACCLoopConstructScope ( ) const
inline

Definition at line 568 of file Scope.h.

References getFlags(), and OpenACCLoopConstructScope.

Referenced by clang::SemaOpenACC::CheckDeclReference().

◆ isOpenMPDirectiveScope()

bool clang::Scope::isOpenMPDirectiveScope ( ) const
inline

Determines whether this scope is the OpenMP directive scope.

Definition at line 528 of file Scope.h.

References getFlags(), and OpenMPDirectiveScope.

Referenced by isOpenMPLoopDirectiveScope().

◆ isOpenMPLoopDirectiveScope()

bool clang::Scope::isOpenMPLoopDirectiveScope ( ) const
inline

Determine whether this scope is some OpenMP loop directive scope (for example, 'omp for', 'omp simd').

Definition at line 534 of file Scope.h.

References getFlags(), isOpenMPDirectiveScope(), and OpenMPLoopDirectiveScope.

Referenced by isOpenMPLoopScope().

◆ isOpenMPLoopScope()

bool clang::Scope::isOpenMPLoopScope ( ) const
inline

Determine whether this scope is a loop having OpenMP loop directive attached.

Definition at line 551 of file Scope.h.

References getParent(), isOpenMPLoopDirectiveScope(), and Scope().

Referenced by clang::Sema::ActOnBreakStmt(), and clang::SemaOpenMP::ActOnOpenMPScanDirective().

◆ isOpenMPOrderClauseScope()

bool clang::Scope::isOpenMPOrderClauseScope ( ) const
inline

Determine whether this scope is some OpenMP directive with order clause which specifies concurrent scope.

Definition at line 558 of file Scope.h.

References getFlags(), and OpenMPOrderClauseScope.

Referenced by clang::SemaOpenMP::ActOnOpenMPCall().

◆ isOpenMPSimdDirectiveScope()

bool clang::Scope::isOpenMPSimdDirectiveScope ( ) const
inline

Determine whether this scope is (or is nested into) some OpenMP loop simd directive scope (for example, 'omp simd', 'omp for simd').

Definition at line 545 of file Scope.h.

References getFlags(), and OpenMPSimdDirectiveScope.

◆ isSEHExceptScope()

bool clang::Scope::isSEHExceptScope ( ) const
inline

Determine whether this scope is a SEH '__except' block.

Definition at line 616 of file Scope.h.

References getFlags(), and SEHExceptScope.

Referenced by BuiltinSEHScopeCheck().

◆ isSEHTryScope()

bool clang::Scope::isSEHTryScope ( ) const
inline

Determine whether this scope is a SEH '__try' block.

Definition at line 613 of file Scope.h.

References getFlags(), and SEHTryScope.

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

◆ isSwitchScope()

bool clang::Scope::isSwitchScope ( ) const
inline

isSwitchScope - Return true if this scope is a switch scope.

Definition at line 506 of file Scope.h.

References AtCatchScope, BlockScope, ClassScope, FnScope, FunctionPrototypeScope, ObjCMethodScope, Scope(), SwitchScope, and TemplateParamScope.

◆ isTemplateParamScope()

◆ isTryScope()

bool clang::Scope::isTryScope ( ) const
inline

Determine whether this scope is a C++ 'try' block.

Definition at line 605 of file Scope.h.

References getFlags(), and TryScope.

◆ isTypeAliasScope()

bool clang::Scope::isTypeAliasScope ( ) const
inline

Determine whether this scope is a type alias scope.

Definition at line 628 of file Scope.h.

References getFlags(), and TypeAliasScope.

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

◆ PushUsingDirective()

void clang::Scope::PushUsingDirective ( UsingDirectiveDecl * UDir)
inline

Definition at line 643 of file Scope.h.

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

◆ RemoveDecl()

void clang::Scope::RemoveDecl ( Decl * D)
inline

◆ setEntity()

◆ setFlags()

void clang::Scope::setFlags ( unsigned F)
inline

Definition at line 273 of file Scope.h.

References getParent(), and setFlags().

Referenced by setFlags().

◆ setIsConditionVarScope()

void clang::Scope::setIsConditionVarScope ( bool InConditionVarScope)
inline

Definition at line 311 of file Scope.h.

References ConditionVarScope, and NoScope.

◆ setLookupEntity()

void clang::Scope::setLookupEntity ( DeclContext * E)
inline

Definition at line 414 of file Scope.h.

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

◆ setPrecedingLabel()

void clang::Scope::setPrecedingLabel ( LabelDecl * LD)
inline

Definition at line 277 of file Scope.h.

References BreakScope, and ContinueScope.

◆ updateNRVOCandidate()

void Scope::updateNRVOCandidate ( VarDecl * VD)

Definition at line 137 of file Scope.cpp.

References Scope().

◆ using_directives()

using_directives_range clang::Scope::using_directives ( )
inline

Definition at line 650 of file Scope.h.


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