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.opover
Handles operator overloading.
Specification Operator Overloading
Authors:
License:
Source opover.d
Documentation https://dlang.org/phobos/dmd_opover.html
- @safe bool
isCommutative
(EXPop
); - Determine if operands of binary op can be reversed to fit operator overload.
- Objects*
opToArg
(Scope*sc
, EXPop
); - Helper function to turn operator into template argument list
- Expression
op_overload
(Expressione
, Scope*sc
, EXP*pop
= null); - Operator overload. Check for operator overload, if so, replace with function call.Parameters:
Expression e
expression with operator Scope* sc
context EXP* 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 match an overloadReturns:null if not an operator overload, otherwise the lowered expression - Expression
build_overload
(const ref Locloc
, Scope*sc
, Expressionethis
, Expressionearg
, Dsymbold
); - Utility to build a function call out of this reference and argument.
- Dsymbol
search_function
(ScopeDsymbolad
, Identifierfuncid
); - Search for function funcid in aggregate ad.
- bool
inferForeachAggregate
(Scope*sc
, boolisForeach
, ref Expressionfeaggr
, out Dsymbolsapply
); - Figure out what is being foreach'd over by looking at the ForeachAggregate.Parameters:
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. Returns:true if successfully figured it out; feaggr updated with semantic analysis. false for failed, which is an error. - bool
inferApplyArgTypes
(ForeachStatementfes
, Scope*sc
, ref Dsymbolsapply
); - 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.Parameters:
ForeachStatement fes
the foreach statement Scope* sc
context Dsymbol sapply
null or opApply or delegate, overload resolution has not been done. Do overload resolution on sapply. Returns:false for errors
Copyright © 1999-2024 by the D Language Foundation | Page generated by
Ddoc on Wed Dec 18 08:51:48 2024