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.


Compiler implementation of the D programming language.

Source opover.d

bool isCommutative(TOK op);
Determine if operands of binary op can be reversed to fit operator overload.
AggregateDeclaration isAggregate(Type t);
If type is a class or struct, return the symbol for it, else NULL
Objects* opToArg(Scope* sc, TOK op);
Helper function to turn operator into template argument list
Expression op_overload(Expression e, Scope* sc);
Operator overload. Check for operator overload, if so, replace with function call. Return NULL if not an operator overload.
Expression build_overload(ref const Loc loc, Scope* sc, Expression ethis, Expression earg, Dsymbol d);
Utility to build a function call out of this reference and argument.
Dsymbol search_function(ScopeDsymbol ad, Identifier funcid);
Search for function funcid in aggregate ad.
bool inferForeachAggregate(Scope* sc, bool isForeach, ref Expression feaggr, out Dsymbol sapply);
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.
true if successfully figured it out; feaggr updated with semantic analysis. false for failed, which is an error.
bool inferApplyArgTypes(ForeachStatement fes, Scope* sc, ref Dsymbol sapply);
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
false for errors