View source code
Display the source code in dmd/func.d from which thispage was generated on github.
Report a bug
If you spot a problem with this page, click here to create aBugzilla 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 usinglocal clone.

Function dmd.func.checkEscapingSiblings

Given a nested function f inside a function outerFunc, check if any sibling callers of f have escaped. If so, mark all the enclosing functions as needing closures. This is recursive: we need to check the callers of our siblings. Note that nested functions can only call lexically earlier nested functions, so loops are impossible.

bool checkEscapingSiblings(
  FuncDeclaration f,
  FuncDeclaration outerFunc,
  void* p = null
);

Parameters

NameDescription
f inner function (nested within outerFunc)
outerFunc outer function
p for internal recursion use

Returns

true if any closures were needed

Authors

Walter Bright

License

Boost License 1.0