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.


Compiler implementation of the D programming language.

Source delegatize.d

Expression toDelegate(Expression e, Type t, Scope* sc);
Convert expression into a delegate.
Used to convert the argument to a lazy parameter.
Expression e argument to convert to a delegate
Type t the type to be returned by the delegate
Scope* sc context
A delegate literal
bool lambdaCheckForNestedRef(Expression e, 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`.
Scope* sc context
Expression e expression to check
true if error occurs.
bool ensureStaticLinkTo(Dsymbol s, Dsymbol p);
See if context s is nested within context p, meaning it p is reachable at runtime by walking the static links. If any of the intervening contexts are function literals, make sure they are delegates.
Dsymbol s inner context
Dsymbol p outer context
true means it is accessible by walking the context pointers at runtime