clang 8.0.0

Classes | Public Types | Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | List of all members
clang::sema::FunctionScopeInfo Class Reference

Retains information about a function, method, or block that is currently being parsed. More...

`#include "clang/Sema/ScopeInfo.h"`

Inheritance diagram for clang::sema::FunctionScopeInfo:
[legend]
Collaboration diagram for clang::sema::FunctionScopeInfo:
[legend]

## Classes
class | WeakObjectProfileTy
| Represents a simple identification of a weak object. More...
class | WeakUseTy
| Represents a single use of a weak object. More...

## Public Types
using | SwitchInfo = llvm::PointerIntPair< SwitchStmt *, 1, bool >
| A SwitchStmt, along with a flag indicating if its list of case statements is incomplete (because we dropped an invalid one while parsing). More...
using | WeakUseVector = SmallVector< WeakUseTy, 4 >
| Used to collect uses of a particular weak object in a function body. More...
using | WeakObjectUseMap = llvm::SmallDenseMap< WeakObjectProfileTy, WeakUseVector, 8, WeakObjectProfileTy::DenseMapInfo >
| Used to collect all uses of weak objects in a function body. More...

## Public Member Functions
| FunctionScopeInfo (DiagnosticsEngine &Diag)
virtual | ~FunctionScopeInfo ()
template<typename ExprT >
void | recordUseOfWeak (const ExprT *E, bool IsRead=true)
| Record that a weak object was accessed. More...
void | recordUseOfWeak (const ObjCMessageExpr *Msg, const ObjCPropertyDecl *Prop)
void | markSafeWeakUse (const Expr *E)
| Record that a given expression is a "safe" access of a weak object (e.g. More...
const WeakObjectUseMap & | getWeakObjectUses () const
void | setHasBranchIntoScope ()
void | setHasBranchProtectedScope ()
void | setHasIndirectGoto ()
void | setHasDroppedStmt ()
void | setHasOMPDeclareReductionCombiner ()
void | setHasFallthroughStmt ()
void | setHasCXXTry (SourceLocation TryLoc)
void | setHasSEHTry (SourceLocation TryLoc)
bool | NeedsScopeChecking () const
void | addBlock (const BlockDecl *BD)
void | addByrefBlockVar (VarDecl *VD)
bool | isCoroutine () const
void | setFirstCoroutineStmt (SourceLocation Loc, StringRef Keyword)
StringRef | getFirstCoroutineStmtKeyword () const
void | setNeedsCoroutineSuspends (bool value=true)
bool | hasInvalidCoroutineSuspends () const
void | setCoroutineSuspends (Stmt *Initial, Stmt *Final)
void | Clear ()
| Clear out the information in this function scope, making it suitable for reuse. More...

## Public Attributes
ScopeKind | Kind: 3
| What kind of scope we are describing. More...
bool | HasBranchProtectedScope: 1
| Whether this function contains a VLA, @try, try, C++ initializer, or anything else that can't be jumped past. More...
bool | HasBranchIntoScope: 1
| Whether this function contains any switches or direct gotos. More...
bool | HasIndirectGoto: 1
| Whether this function contains any indirect gotos. More...
bool | HasDroppedStmt: 1
| Whether a statement was dropped because it was invalid. More...
bool | HasOMPDeclareReductionCombiner: 1
| True if current scope is for OpenMP declare reduction combiner. More...
bool | HasFallthroughStmt: 1
| Whether there is a fallthrough statement in this function. More...
bool | HasPotentialAvailabilityViolations: 1
| Whether we make reference to a declaration that could be unavailable. More...
bool | ObjCShouldCallSuper: 1
| A flag that is set when parsing a method that must call super's implementation, such as `-dealloc`, `-finalize`, or any method marked with `attribute`((objc_requires_super)). More...
bool | ObjCIsDesignatedInit: 1
| True when this is a method marked as a designated initializer. More...
bool | ObjCWarnForNoDesignatedInitChain: 1
| This starts true for a method marked as designated initializer and will be set to false if there is an invocation to a designated initializer of the super class. More...
bool | ObjCIsSecondaryInit: 1
| True when this is an initializer method not marked as a designated initializer within a class that has at least one initializer marked as a designated initializer. More...
bool | ObjCWarnForNoInitDelegation: 1
| This starts true for a secondary initializer method and will be set to false if there is an invocation of an initializer on 'self'. More...
bool | NeedsCoroutineSuspends: 1
| True only when this function has not already built, or attempted to build, the initial and final coroutine suspend points. More...
unsigned char | FirstCoroutineStmtKind: 2
| An enumeration represeting the kind of the first coroutine statement in the function. More...
SourceLocation | FirstCoroutineStmtLoc
| First coroutine statement in the current function. More...
SourceLocation | FirstReturnLoc
| First 'return' statement in the current function. More...
SourceLocation | FirstCXXTryLoc
| First C++ 'try' statement in the current function. More...
SourceLocation | FirstSEHTryLoc
| First SEH '__try' statement in the current function. More...
DiagnosticErrorTrap | ErrorTrap
| Used to determine if errors occurred in this function or block. More...
SmallVector< SwitchInfo, 8 > | SwitchStack
| SwitchStack - This is the current set of active switch statements in the block. More...
SmallVector< ReturnStmt *, 4 > | Returns
| The list of return statements that occur within the function or block, if there is any chance of applying the named return value optimization, or if we need to infer a return type. More...
VarDecl * | CoroutinePromise = nullptr
| The promise object for this coroutine, if any. More...
llvm::SmallMapVector< ParmVarDecl *, Stmt *, 4 > | CoroutineParameterMoves
| A mapping between the coroutine function parameters that were moved to the coroutine frame, and their move statements. More...
std::pair< Stmt *, Stmt * > | CoroutineSuspends
| The initial and final coroutine suspend points. More...
SmallVector< CompoundScopeInfo, 4 > | CompoundScopes
| The stack of currently active compound stamement scopes in the function. More...
llvm::SmallPtrSet< const BlockDecl *, 1 > | Blocks
| The set of blocks that are introduced in this function. More...
llvm::TinyPtrVector< VarDecl * > | ByrefBlockVars
| The set of __block variables that are introduced in this function. More...
SmallVector< PossiblyUnreachableDiag, 4 > | PossiblyUnreachableDiags
| A list of PartialDiagnostics created but delayed within the current function scope. More...
llvm::SmallPtrSet< const ParmVarDecl *, 8 > | ModifiedNonNullParams
| A list of parameters which have the nonnull attribute and are modified in the function. More...

## Protected Types
enum | ScopeKind { SK_Function, SK_Block, SK_Lambda, SK_CapturedRegion }

## Protected Member Functions
| FunctionScopeInfo (const FunctionScopeInfo &)=default

## Detailed Description

Retains information about a function, method, or block that is currently being parsed.

Definition at line 97 of file ScopeInfo.h.

## Member Typedef Documentation

## ◆ SwitchInfo

using clang::sema::FunctionScopeInfo::SwitchInfo = llvm::PointerIntPair<SwitchStmt*, 1, bool>

A SwitchStmt, along with a flag indicating if its list of case statements is incomplete (because we dropped an invalid one while parsing).

Definition at line 181 of file ScopeInfo.h.

## ◆ WeakObjectUseMap

using clang::sema::FunctionScopeInfo::WeakObjectUseMap = llvm::SmallDenseMap<WeakObjectProfileTy, WeakUseVector, 8, WeakObjectProfileTy::DenseMapInfo>

Used to collect all uses of weak objects in a function body.

Part of the implementation of -Wrepeated-use-of-weak.

Definition at line 353 of file ScopeInfo.h.

## ◆ WeakUseVector

using clang::sema::FunctionScopeInfo::WeakUseVector = SmallVector<WeakUseTy, 4>

Used to collect uses of a particular weak object in a function body.

Part of the implementation of -Wrepeated-use-of-weak.

Definition at line 346 of file ScopeInfo.h.

## Member Enumeration Documentation

## ◆ ScopeKind

enum clang::sema::FunctionScopeInfo::ScopeKind
| protected

Enumerator
SK_Function |
SK_Block |
SK_Lambda |
SK_CapturedRegion |

Definition at line 99 of file ScopeInfo.h.

## Constructor & Destructor Documentation

## ◆ FunctionScopeInfo() [1/2]

clang::sema::FunctionScopeInfo::FunctionScopeInfo | ( | const FunctionScopeInfo & |  | ) |
| protected default

## ◆ FunctionScopeInfo() [2/2]

clang::sema::FunctionScopeInfo::FunctionScopeInfo | ( | DiagnosticsEngine & | Diag | ) |
| inline

Definition at line 365 of file ScopeInfo.h.

## ◆ ~FunctionScopeInfo()

FunctionScopeInfo::~FunctionScopeInfo | ( |  | ) |
| virtual

Definition at line 251 of file ScopeInfo.cpp.

## Member Function Documentation

## ◆ addBlock()

void clang::sema::FunctionScopeInfo::addBlock | ( | const BlockDecl * | BD | ) |
| inline

Definition at line 437 of file ScopeInfo.h.

## ◆ addByrefBlockVar()

void clang::sema::FunctionScopeInfo::addByrefBlockVar | ( | VarDecl * | VD | ) |
| inline

Definition at line 442 of file ScopeInfo.h.

## ◆ Clear()

void FunctionScopeInfo::Clear | ( |  | ) |

Clear out the information in this function scope, making it suitable for reuse.

Definition at line 26 of file ScopeInfo.cpp.

References Blocks, ByrefBlockVars, CoroutineParameterMoves, CoroutinePromise, CoroutineSuspends, ErrorTrap, FirstCoroutineStmtLoc, FirstCXXTryLoc, FirstReturnLoc, FirstSEHTryLoc, HasBranchIntoScope, HasBranchProtectedScope, HasDroppedStmt, HasFallthroughStmt, HasIndirectGoto, HasOMPDeclareReductionCombiner, HasPotentialAvailabilityViolations, ModifiedNonNullParams, NeedsCoroutineSuspends, ObjCIsDesignatedInit, ObjCIsSecondaryInit, ObjCShouldCallSuper, ObjCWarnForNoDesignatedInitChain, ObjCWarnForNoInitDelegation, PossiblyUnreachableDiags, clang::DiagnosticErrorTrap::reset(), Returns, and SwitchStack.

## ◆ getFirstCoroutineStmtKeyword()

StringRef clang::sema::FunctionScopeInfo::getFirstCoroutineStmtKeyword | ( |  | ) | const
| inline

Definition at line 458 of file ScopeInfo.h.

References clang::SourceLocation::isValid().

Referenced by clang::Sema::CheckCompletedCoroutineBody(), diagReturnOnAllocFailure(), and noteMemberDeclaredHere().

## ◆ getWeakObjectUses()

const WeakObjectUseMap& clang::sema::FunctionScopeInfo::getWeakObjectUses | ( |  | ) | const
| inline

Definition at line 392 of file ScopeInfo.h.

Referenced by diagnoseRepeatedUseOfWeak().

## ◆ hasInvalidCoroutineSuspends()

bool clang::sema::FunctionScopeInfo::hasInvalidCoroutineSuspends | ( |  | ) | const
| inline

Definition at line 476 of file ScopeInfo.h.

Referenced by clang::CoroutineStmtBuilder::buildDependentStatements().

## ◆ isCoroutine()

bool clang::sema::FunctionScopeInfo::isCoroutine | ( |  | ) | const
| inline

Definition at line 446 of file ScopeInfo.h.

References clang::SourceLocation::isInvalid().

Referenced by clang::Sema::CheckCompletedCoroutineBody(), CheckFallThroughForBody(), and clang::sema::AnalysisBasedWarnings::IssueWarnings().

## ◆ markSafeWeakUse()

void FunctionScopeInfo::markSafeWeakUse | ( | const Expr * | E | ) |

Record that a given expression is a "safe" access of a weak object (e.g.

assigning it to a strong variable.)

Part of the implementation of -Wrepeated-use-of-weak.

Definition at line 173 of file ScopeInfo.cpp.

References clang::ObjCPropertyDecl::findPropertyDecl(), and clang::Expr::IgnoreParenCasts().

Referenced by LookupMethodInReceiverType().

## ◆ NeedsScopeChecking()

bool clang::sema::FunctionScopeInfo::NeedsScopeChecking | ( |  | ) | const
| inline

Definition at line 430 of file ScopeInfo.h.

## ◆ recordUseOfWeak() [1/2]

template<typename ExprT >

void clang::sema::FunctionScopeInfo::recordUseOfWeak | ( | const ExprT * | E,
|  | bool | IsRead = `true`
| ) |  |
| inline

Record that a weak object was accessed.

Part of the implementation of -Wrepeated-use-of-weak.

Definition at line 1001 of file ScopeInfo.h.

Referenced by LookupMemberExpr(), and LookupMethodInReceiverType().

## ◆ recordUseOfWeak() [2/2]

void FunctionScopeInfo::recordUseOfWeak | ( | const ObjCMessageExpr * | Msg,
|  | const ObjCPropertyDecl * | Prop
| ) |  |

Definition at line 165 of file ScopeInfo.cpp.

References clang::ObjCMessageExpr::getInstanceReceiver(), and clang::ObjCMessageExpr::getNumArgs().

## ◆ setCoroutineSuspends()

void clang::sema::FunctionScopeInfo::setCoroutineSuspends | ( | Stmt * | Initial,
|  | Stmt * | Final
| ) |  |
| inline

Definition at line 480 of file ScopeInfo.h.

## ◆ setFirstCoroutineStmt()

void clang::sema::FunctionScopeInfo::setFirstCoroutineStmt | ( | SourceLocation | Loc,
|  | StringRef | Keyword
| ) |  |
| inline

Definition at line 448 of file ScopeInfo.h.

References clang::SourceLocation::isInvalid().

## ◆ setHasBranchIntoScope()

void clang::sema::FunctionScopeInfo::setHasBranchIntoScope | ( |  | ) |
| inline

Definition at line 396 of file ScopeInfo.h.

## ◆ setHasBranchProtectedScope()

void clang::sema::FunctionScopeInfo::setHasBranchProtectedScope | ( |  | ) |
| inline

Definition at line 400 of file ScopeInfo.h.

## ◆ setHasCXXTry()

void clang::sema::FunctionScopeInfo::setHasCXXTry | ( | SourceLocation | TryLoc | ) |
| inline

Definition at line 420 of file ScopeInfo.h.

## ◆ setHasDroppedStmt()

void clang::sema::FunctionScopeInfo::setHasDroppedStmt | ( |  | ) |
| inline

Definition at line 408 of file ScopeInfo.h.

## ◆ setHasFallthroughStmt()

void clang::sema::FunctionScopeInfo::setHasFallthroughStmt | ( |  | ) |
| inline

Definition at line 416 of file ScopeInfo.h.

## ◆ setHasIndirectGoto()

void clang::sema::FunctionScopeInfo::setHasIndirectGoto | ( |  | ) |
| inline

Definition at line 404 of file ScopeInfo.h.

## ◆ setHasOMPDeclareReductionCombiner()

void clang::sema::FunctionScopeInfo::setHasOMPDeclareReductionCombiner | ( |  | ) |
| inline

Definition at line 412 of file ScopeInfo.h.

## ◆ setHasSEHTry()

void clang::sema::FunctionScopeInfo::setHasSEHTry | ( | SourceLocation | TryLoc | ) |
| inline

Definition at line 425 of file ScopeInfo.h.

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

## ◆ setNeedsCoroutineSuspends()

void clang::sema::FunctionScopeInfo::setNeedsCoroutineSuspends | ( | bool | value = `true` | ) |
| inline

Definition at line 470 of file ScopeInfo.h.

## Member Data Documentation

## ◆ Blocks

llvm::SmallPtrSet<const BlockDecl *, 1> clang::sema::FunctionScopeInfo::Blocks

The set of blocks that are introduced in this function.

Definition at line 207 of file ScopeInfo.h.

Referenced by Clear().

## ◆ ByrefBlockVars

llvm::TinyPtrVector<VarDecl *> clang::sema::FunctionScopeInfo::ByrefBlockVars

The set of __block variables that are introduced in this function.

Definition at line 210 of file ScopeInfo.h.

Referenced by Clear().

## ◆ CompoundScopes

SmallVector<CompoundScopeInfo, 4> clang::sema::FunctionScopeInfo::CompoundScopes

The stack of currently active compound stamement scopes in the function.

Definition at line 204 of file ScopeInfo.h.

Referenced by clang::Sema::DiagnoseUnexpandedParameterPacks(), clang::Sema::PopCompoundScope(), and clang::Sema::PushCompoundScope().

## ◆ CoroutineParameterMoves

llvm::SmallMapVector<ParmVarDecl *, Stmt *, 4> clang::sema::FunctionScopeInfo::CoroutineParameterMoves

A mapping between the coroutine function parameters that were moved to the coroutine frame, and their move statements.

Definition at line 197 of file ScopeInfo.h.

Referenced by Clear().

## ◆ CoroutinePromise

VarDecl* clang::sema::FunctionScopeInfo::CoroutinePromise = nullptr

The promise object for this coroutine, if any.

Definition at line 193 of file ScopeInfo.h.

Referenced by clang::CoroutineStmtBuilder::buildDependentStatements(), clang::Sema::CheckCompletedCoroutineBody(), CheckFallThroughForBody(), Clear(), and diagReturnOnAllocFailure().

## ◆ CoroutineSuspends

std::pair<Stmt *, Stmt *> clang::sema::FunctionScopeInfo::CoroutineSuspends

The initial and final coroutine suspend points.

Definition at line 200 of file ScopeInfo.h.

Referenced by clang::CoroutineStmtBuilder::buildDependentStatements(), and Clear().

## ◆ ErrorTrap

DiagnosticErrorTrap clang::sema::FunctionScopeInfo::ErrorTrap

Used to determine if errors occurred in this function or block.

Definition at line 177 of file ScopeInfo.h.

Referenced by Clear(), and clang::Sema::hasAnyUnrecoverableErrorsInThisFunction().

## ◆ FirstCoroutineStmtKind

unsigned char clang::sema::FunctionScopeInfo::FirstCoroutineStmtKind

An enumeration represeting the kind of the first coroutine statement in the function.

One of co_return, co_await, or co_yield.

Definition at line 161 of file ScopeInfo.h.

## ◆ FirstCoroutineStmtLoc

SourceLocation clang::sema::FunctionScopeInfo::FirstCoroutineStmtLoc

First coroutine statement in the current function.

(ex co_return, co_await, co_yield)

Definition at line 165 of file ScopeInfo.h.

Referenced by clang::Sema::CheckCompletedCoroutineBody(), Clear(), diagReturnOnAllocFailure(), and noteMemberDeclaredHere().

## ◆ FirstCXXTryLoc

SourceLocation clang::sema::FunctionScopeInfo::FirstCXXTryLoc

First C++ 'try' statement in the current function.

Definition at line 171 of file ScopeInfo.h.

Referenced by clang::Sema::ActOnSEHTryBlock(), and Clear().

## ◆ FirstReturnLoc

SourceLocation clang::sema::FunctionScopeInfo::FirstReturnLoc

First 'return' statement in the current function.

Definition at line 168 of file ScopeInfo.h.

Referenced by clang::Sema::CheckCompletedCoroutineBody(), and Clear().

## ◆ FirstSEHTryLoc

SourceLocation clang::sema::FunctionScopeInfo::FirstSEHTryLoc

First SEH '__try' statement in the current function.

Definition at line 174 of file ScopeInfo.h.

Referenced by clang::Sema::ActOnCXXTryBlock(), Clear(), and diagReturnOnAllocFailure().

## ◆ HasBranchIntoScope

bool clang::sema::FunctionScopeInfo::HasBranchIntoScope

Whether this function contains any switches or direct gotos.

Definition at line 115 of file ScopeInfo.h.

Referenced by Clear().

## ◆ HasBranchProtectedScope

bool clang::sema::FunctionScopeInfo::HasBranchProtectedScope

Whether this function contains a VLA, @try, try, C++ initializer, or anything else that can't be jumped past.

Definition at line 112 of file ScopeInfo.h.

Referenced by Clear().

## ◆ HasDroppedStmt

bool clang::sema::FunctionScopeInfo::HasDroppedStmt

Whether a statement was dropped because it was invalid.

Definition at line 121 of file ScopeInfo.h.

Referenced by Clear().

## ◆ HasFallthroughStmt

bool clang::sema::FunctionScopeInfo::HasFallthroughStmt

Whether there is a fallthrough statement in this function.

Definition at line 127 of file ScopeInfo.h.

Referenced by Clear(), and clang::sema::AnalysisBasedWarnings::IssueWarnings().

## ◆ HasIndirectGoto

bool clang::sema::FunctionScopeInfo::HasIndirectGoto

Whether this function contains any indirect gotos.

Definition at line 118 of file ScopeInfo.h.

Referenced by Clear().

## ◆ HasOMPDeclareReductionCombiner

bool clang::sema::FunctionScopeInfo::HasOMPDeclareReductionCombiner

True if current scope is for OpenMP declare reduction combiner.

Definition at line 124 of file ScopeInfo.h.

Referenced by Clear().

## ◆ HasPotentialAvailabilityViolations

bool clang::sema::FunctionScopeInfo::HasPotentialAvailabilityViolations

Whether we make reference to a declaration that could be unavailable.

Definition at line 131 of file ScopeInfo.h.

Referenced by Clear().

## ◆ Kind

ScopeKind clang::sema::FunctionScopeInfo::Kind

What kind of scope we are describing.

Definition at line 108 of file ScopeInfo.h.

Referenced by clang::sema::CapturingScopeInfo::classof(), clang::sema::BlockScopeInfo::classof(), clang::sema::CapturedRegionScopeInfo::classof(), and clang::sema::LambdaScopeInfo::classof().

## ◆ ModifiedNonNullParams

llvm::SmallPtrSet<const ParmVarDecl *, 8> clang::sema::FunctionScopeInfo::ModifiedNonNullParams

A list of parameters which have the nonnull attribute and are modified in the function.

Definition at line 219 of file ScopeInfo.h.

Referenced by Clear().

## ◆ NeedsCoroutineSuspends

bool clang::sema::FunctionScopeInfo::NeedsCoroutineSuspends

True only when this function has not already built, or attempted to build, the initial and final coroutine suspend points.

Definition at line 157 of file ScopeInfo.h.

Referenced by Clear().

## ◆ ObjCIsDesignatedInit

bool clang::sema::FunctionScopeInfo::ObjCIsDesignatedInit

True when this is a method marked as a designated initializer.

Definition at line 139 of file ScopeInfo.h.

Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), and Clear().

## ◆ ObjCIsSecondaryInit

bool clang::sema::FunctionScopeInfo::ObjCIsSecondaryInit

True when this is an initializer method not marked as a designated initializer within a class that has at least one initializer marked as a designated initializer.

Definition at line 149 of file ScopeInfo.h.

Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), and Clear().

## ◆ ObjCShouldCallSuper

bool clang::sema::FunctionScopeInfo::ObjCShouldCallSuper

A flag that is set when parsing a method that must call super's implementation, such as `-dealloc`, `-finalize`, or any method marked with `attribute`((objc_requires_super)).

Definition at line 136 of file ScopeInfo.h.

Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), and Clear().

## ◆ ObjCWarnForNoDesignatedInitChain

bool clang::sema::FunctionScopeInfo::ObjCWarnForNoDesignatedInitChain

This starts true for a method marked as designated initializer and will be set to false if there is an invocation to a designated initializer of the super class.

Definition at line 144 of file ScopeInfo.h.

Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), and Clear().

## ◆ ObjCWarnForNoInitDelegation

bool clang::sema::FunctionScopeInfo::ObjCWarnForNoInitDelegation

This starts true for a secondary initializer method and will be set to false if there is an invocation of an initializer on 'self'.

Definition at line 153 of file ScopeInfo.h.

Referenced by clang::Sema::ActOnStartOfObjCMethodDef(), and Clear().

## ◆ PossiblyUnreachableDiags

SmallVector<PossiblyUnreachableDiag, 4> clang::sema::FunctionScopeInfo::PossiblyUnreachableDiags

A list of PartialDiagnostics created but delayed within the current function scope.

These diagnostics are vetted for reachability prior to being emitted.

Definition at line 215 of file ScopeInfo.h.

Referenced by Clear(), flushDiagnostics(), and clang::sema::AnalysisBasedWarnings::IssueWarnings().

## ◆ Returns

SmallVector<ReturnStmt*, 4> clang::sema::FunctionScopeInfo::Returns

The list of return statements that occur within the function or block, if there is any chance of applying the named return value optimization, or if we need to infer a return type.

Definition at line 190 of file ScopeInfo.h.

Referenced by Clear(), clang::Sema::computeNRVO(), and clang::Sema::deduceClosureReturnType().

## ◆ SwitchStack

SmallVector<SwitchInfo, 8> clang::sema::FunctionScopeInfo::SwitchStack

SwitchStack - This is the current set of active switch statements in the block.

Definition at line 185 of file ScopeInfo.h.

Referenced by AddKeywordsToConsumer(), and Clear().

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

- include/clang/Sema/ScopeInfo.h
- lib/Sema/ScopeInfo.cpp