Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
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.
dmd.delegatize
Implements conversion from expressions to delegates for lazy parameters.
Specification Lazy Parameters
Authors:
License:
Source delegatize.d
- Expression
toDelegate
(Expressione
, Typet
, Scope*sc
); - Convert expression into a delegate.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 Returns:A delegate literal - bool
lambdaCheckForNestedRef
(Expressione
, Scope*sc
); - Look for references to variables in a scope enclosing the new function literal.Essentially just calls checkNestedReference() for each variable reference in e`.Parameters:
Scope* sc
context Expression e
expression to check Returns:true if error occurs. - bool
ensureStaticLinkTo
(Dsymbols
, Dsymbolp
); - See if context
s
is nested within contextp
, 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.Parameters:Dsymbol s
inner context Dsymbol p
outer context Returns: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
Copyright © 1999-2024 by the D Language Foundation | Page generated by
Ddoc on Tue Nov 19 00:23:38 2024