W3cubDocs

/D

ddmd.escape

Compiler implementation of the D programming language.

Authors:
Walter Bright
License:
Boost License 1.0
Source:
escape.d
bool checkParamArgumentEscape(Scope* sc, FuncDeclaration fdc, Identifier par, Expression arg, bool gag)

Function parameter par is being initialized to arg, and par may escape. Detect if scoped values can escape this way. Print error messages when these are detected.

Parameters:
Scope* sc used to determine current function and module
Identifier par identifier of function parameter
Expression arg initializer for param
bool gag do not print error messages
Returns:
true if pointers to the stack can escape via assignment
bool checkAssignEscape(Scope* sc, Expression e, bool gag)

Given an AssignExp, determine if the lvalue will cause the contents of the rvalue to escape. Print error messages when these are detected. Infer 'scope' for the lvalue where possible, in order to eliminate the error.

Parameters:
Scope* sc used to determine current function and module
ae AssignExp to check for any pointers to the stack
bool gag do not print error messages
Returns:
true if pointers to the stack can escape via assignment
bool checkThrowEscape(Scope* sc, Expression e, bool gag)

Detect cases where pointers to the stack can 'escape' the lifetime of the stack frame when throwing e. Print error messages when these are detected.

Parameters:
Scope* sc used to determine current function and module
Expression e expression to check for any pointers to the stack
bool gag do not print error messages
Returns:
true if pointers to the stack can escape
bool checkReturnEscape(Scope* sc, Expression e, bool gag)

Detect cases where pointers to the stack can 'escape' the lifetime of the stack frame by returning 'e' by value. Print error messages when these are detected.

Parameters:
Scope* sc used to determine current function and module
Expression e expression to check for any pointers to the stack
bool gag do not print error messages
Returns:
true if pointers to the stack can escape
bool checkReturnEscapeRef(Scope* sc, Expression e, bool gag)

Detect cases where returning 'e' by ref can result in a reference to the stack being returned. Print error messages when these are detected.

Parameters:
Scope* sc used to determine current function and module
Expression e expression to check
bool gag do not print error messages
Returns:
true if references to the stack can escape
void findAllOuterAccessedVariables(FuncDeclaration fd, VarDeclarations* vars)

Find all variables accessed by this delegate that are in functions enclosing it.

Parameters:
FuncDeclaration fd function
VarDeclarations* vars array to append found variables to

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