Function dmd.statementsem.makeTupleForeach
Type check and unroll foreach
over an expression tuple as well
as static foreach
statements and static foreach
declarations. For static foreach
statements and `static
foreach` declarations, the visitor interface is used (and the
result is written into the result
field.) For `static
foreach` declarations, the resulting Dsymbols* are returned
directly.
dmd .statementsem .makeTupleForeach makeTupleForeach
(
dmd .dscope .Scope* sc,
bool isStatic,
bool isDecl,
ForeachStatement fs,
dmd .root .array .Array!(dmd.dsymbol.Dsymbol)* dbody,
bool needExpansion
);
The unrolled body is wrapped into a
- UnrolledLoopStatement, for foreach
over an expression tuple.
- ForwardingStatement, for static foreach
statements.
- ForwardingAttribDeclaration, for static foreach
declarations.
static foreach
variables are declared as STC
, such
that they are inserted into the local symbol tables of the
forwarding constructs instead of forwarded. For `static
foreach` with multiple foreach loop variables whose aggregate
has been lowered into a sequence of tuples, this function
expands the tuples into multiple STC
static foreach
variables.