W3cubDocs

/D

dmd.delegatize

Compiler implementation of the D programming language.

Authors:
Walter Bright
License:
Boost License 1.0
Source
delegatize.d
Documentation
https://dlang.org/phobos/dmd_delegatize.html
Coverage
https://codecov.io/gh/dlang/dmd/src/master/src/dmd/delegatize.d
Expression toDelegate(Expression e, Type t, 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(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`.

Parameters:
Scope* sc context
Expression e expression to check
Returns:
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.

Parameters:
Dsymbol s inner context
Dsymbol p outer context
Returns:
true means it is accessible by walking the context pointers at runtime
References
for static links see https://en.wikipedia.org/wiki/Call_stack#Functions_of_the_call_stack

© 1999–2019 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/dmd_delegatize.html