Compiler implementation of the D programming language.
Determine if operands of binary op can be reversed to fit operator overload.
Helper function to turn operator into template argument list
Operator overload. Check for operator overload, if so, replace with function call.
Expression e
| expression with operator |
Scope* sc
| context |
TOK* pop
| if not null, is set to the operator that was actually overloaded, which may not be e.op . Happens when operands are reversed to to match an overload |
null
if not an operator overload, otherwise the lowered expressionUtility to build a function call out of this reference and argument.
Search for function funcid in aggregate ad.
Figure out what is being foreach'd over by looking at the ForeachAggregate.
Scope* sc
| context |
bool isForeach
| true for foreach, false for foreach_reverse |
Expression feaggr
| ForeachAggregate |
Dsymbol sapply
| set to function opApply/opApplyReverse, or delegate, or null. Overload resolution is not done. |
Given array of foreach parameters and an aggregate type, find best opApply overload, if any of the parameter types are missing, attempt to infer them from the aggregate type.
ForeachStatement fes
| the foreach statement |
Scope* sc
| context |
Dsymbol sapply
| null or opApply or delegate |
© 1999–2019 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/dmd_opover.html