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
ExpressiontoDelegate(Expressione, Typet, Scope*sc);Convert expression into a delegate.
Discussion
Used to convert the argument to a lazy parameter.
Parameters
Expressioneargument to convert to a delegate
Typetthe type to be returned by the delegate
Scope*sccontext
Return Value
A delegate literal
-
Declaration
boollambdaCheckForNestedRef(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 ine`.Parameters
Scope*sccontext
Expressioneexpression to check
Return Value
trueif error occurs. -
Declaration
boolensureStaticLinkTo(Dsymbols, Dsymbolp);See if context
is nested within contexts, meaning itpis reachable at runtime by walking the static links. If any of the intervening contexts are function literals, make sure they are delegates.pParameters
Dsymbolsinner context
Dsymbolpouter context
Return Value
truemeans 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