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.
dmd.sideeffect
Find side-effects of expressions.
Authors:
License:
Source sideeffect.d
Documentation https://dlang.org/phobos/dmd_sideeffect.html
- bool
isTrivialExp
(Expressione
); - Front-end expression rewriting should create temporary variables for non trivial sub-expressions in order to:
- save evaluation order
- prevent sharing of sub-expression in AST
- bool
hasSideEffect
(Expressione
, boolassumeImpureCalls
= false); - Determine if Expression has any side effects.Parameters:
Expression e
the expression bool assumeImpureCalls
whether function calls should always be assumed to be impure (e.g. debug is allowed to violate purity) - int
callSideEffectLevel
(FuncDeclarationf
); - Determine if the call of f, or function type or delegate type t1, has any side effects.Returns:0 has any side effects 1 nothrow + strongly pure 2 nothrow + strongly pure + only immutable indirections in the return type
- bool
discardValue
(Expressione
); - The result of this expression will be discarded. Print error messages if the operation has no side effects (and hence is meaningless).Returns:true if expression has no side effects
- VarDeclaration
copyToTemp
(StorageClassstc
, const char[]name
, Expressione
); - Build a temporary variable to copy the value of e into.Parameters:
StorageClass stc
storage classes will be added to the made temporary variable char[] name
name for temporary variable Expression e
original expression Returns:Newly created temporary variable. - Expression
extractSideEffect
(Scope*sc
, const char[]name
, ref Expressione0
, Expressione
, boolalwaysCopy
= false); - Build a temporary variable to extract e's evaluation, if e is not trivial.Parameters:
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. Returns:When e is trivial and alwaysCopy == false, e itself is returned. Otherwise, a new VarExp is returned.Note e's lvalue-ness will be handled well by STC.ref_ or STC.rvalue.
Copyright © 1999-2024 by the D Language Foundation | Page generated by
Ddoc on Sun Nov 17 01:06:41 2024