dmd.delegatize
Implements conversion from expressions to delegates for lazy parameters.
Specification: Lazy Parameters
License
Source: delegatize.d
Documentation: https://dlang.org/phobos/dmd_delegatize.html
-
Declaration
Expression
toDelegate
(Expressione
, Typet
, Scope*sc
);Convert expression into a delegate.
Discussion
Used to convert the argument to a lazy parameter.
Parameters
Expression
e
argument to convert to a delegate
Type
t
the type to be returned by the delegate
Scope*
sc
context
Return Value
A delegate literal
-
Declaration
bool
lambdaCheckForNestedRef
(Expressione
, Scope*sc
);Look for references to variables in a scope enclosing the new function literal.
Discussion
Essentially just calls
checkNestedReference() for each variable reference in
e
`.Parameters
Scope*
sc
context
Expression
e
expression to check
Return Value
true
if error occurs. -
Declaration
bool
ensureStaticLinkTo
(Dsymbols
, Dsymbolp
);See if context
is nested within contexts
, meaning itp
is reachable at runtime by walking the static links. If any of the intervening contexts are function literals, make sure they are delegates.p
Parameters
Dsymbol
s
inner context
Dsymbol
p
outer context
Return Value
true
means it is accessible by walking the context pointers at runtimeReferences: for static links see https://en.wikipedia.org/wiki/Call_stack#Functions_of_the_call_stack