Compiler implementation of the D programming language.
Front-end expression rewriting should create temporary variables for non trivial sub-expressions in order to: 1. save evaluation order 2. prevent sharing of sub-expression in AST
Determine if Expression has any side effects.
Determine if the call of f, or function type or delegate type t1, has any side effects.
The result of this expression will be discarded. Print error messages if the operation has no side effects (and hence is meaningless).
Build a temporary variable to copy the value of e into.
StorageClass stc
| storage classes will be added to the made temporary variable |
char* name
| name for temporary variable |
Expression e
| original expression |
Build a temporary variable to extract e's evaluation, if e is not trivial.
Scope* sc
| scope |
char* name
| name for temporary variable |
Expression e0
| a new side effect part will be appended to it. |
Expression e
| original expression |
bool alwaysCopy
| if true, build new temporary variable even if e is trivial. |
© 1999–2019 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/dmd_sideeffect.html