Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.

Flatten out the scope by presenting the statement
as an array of statements.
Returns NULL if no flattening necessary.

class ErrorStatement: ddmd.statement.Statement;

Any Statement that fails semantic() or has a component that is an ErrorExp or
a TypeError should return an ErrorStatement from semantic().

class PeelStatement: ddmd.statement.Statement;

Statement toStatement(Dsymbol s);

Convert TemplateMixin members (== Dsymbols) to Statements.

class ExpStatement: ddmd.statement.Statement;

class DtorExpStatement: ddmd.statement.ExpStatement;

class CompileStatement: ddmd.statement.Statement;

class CompoundStatement: ddmd.statement.Statement;

final this(Loc loc, Statements* s);

Construct a CompoundStatement using an already existing
array of Statements

Parameters:

Loc loc

Instantiation information

Statements* s

An array of Statements, that will referenced by this class

final this(Loc loc, Statement[] sts...);

Construct a CompoundStatement from an array of Statements

Parameters:

Loc loc

Instantiation information

s

A variadic array of Statements, that will copied in this class
The entries themselves will not be copied.

class CompoundDeclarationStatement: ddmd.statement.CompoundStatement;

class UnrolledLoopStatement: ddmd.statement.Statement;

The purpose of this is so that continue will go to the next
of the statements, and break will go to the end of the statements.

class ScopeStatement: ddmd.statement.Statement;

class ForwardingStatement: ddmd.statement.Statement;

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: ddmd.attrib.ForwardingAttribDeclaration

ForwardingScopeDsymbol sym;

The symbol containing the static foreach variables.

Statement statement;

The wrapped statement.

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`: