dmd.staticcond
Lazily evaluate static conditions for static if, static assert and template constraints.
License
Source: staticcond.d
Documentation: https://dlang.org/phobos/dmd_staticcond.html
-
Declaration
boolevalStaticCondition(Scope*sc, Expressionoriginal, Expressione, out boolerrors, Expressions*negatives= null);Semantically analyze and then evaluate a static condition at compile time. This is special because short circuit operators &&, || and ?: at the top level are not semantically analyzed if the result of the expression is not necessary.
Parameters
Scope*scinstantiating scope
Expressionoriginaloriginalexpression, for error messagesExpressioneresulting expression
boolerrorsset to
trueiferrorsoccurredExpressions*negativesarray to store negative clauses
Return Value
trueif evaluates totrue -
Declaration
const(char)*visualizeStaticCondition(Expressionoriginal, Expressioninstantiated, const Expression[]negatives, boolfull, ref uintitemCount);Format a static condition as a tree-like structure, marking failed and bypassed expressions.
Parameters
ExpressionoriginaloriginalexpressionExpressioninstantiatedinstantiatedexpressionExpression[]negativesarray with negative clauses from
expressioninstantiatedboolfullcontrols whether it shows the
fulloutput or only failed partsuintitemCountreturns the number of written clauses
Return Value
formatted string or
nullif the expressions werenull, or if theinstantiatedexpression is not based on theoriginalone