ForwardingStatement

Statement whose symbol table contains foreach index variables in a local scope and forwards other members to the parent scope. This wraps a statement.

Also see: dmd.attrib.ForwardingAttribDeclaration

Members

Functions

flatten
Statements* flatten(Scope* sc)

ForwardingStatements are distributed over the flattened sequence of statements. This prevents flattening to be "blocked" by a ForwardingStatement and is necessary, for example, to support generating scope guards with `static foreach`:

Variables

statement
Statement statement;

The wrapped statement.

sym
ForwardingScopeDsymbol sym;

The symbol containing the static foreach variables.

Inherited Members

From Statement

arraySyntaxCopy
Statements* arraySyntaxCopy(Statements* a)

Do syntax copy of an array of Statement's.

hasBreak
bool hasBreak()

Determine if an enclosed break would apply to this statement, such as if it is a loop or switch statement.

hasContinue
bool hasContinue()

Determine if an enclosed continue would apply to this statement, such as if it is a loop statement.

usesEH
bool usesEH()
comeFrom
bool comeFrom()
hasCode
bool hasCode()
scopeCode
Statement scopeCode(Scope* sc, Statement* sentry, Statement* sexception, Statement* sfinally)

If this statement has code that needs to run in a finally clause at the end of the current scope, return that code in the form of a Statement.

flatten
Statements* flatten(Scope* sc)

Flatten out the scope by presenting the statement as an array of statements.

last
inout(Statement) last()

Find last statement in a sequence of statements.

accept
void accept(Visitor v)

Support Visitor Pattern

endsWithReturnStatement
inout(ReturnStatement) endsWithReturnStatement()

Does this statement end with a return statement?

isErrorStatement
inout(ErrorStatement) isErrorStatement()

A cheaper method of doing downcasting of Statements.

Meta