Closed EliteMasterEric closed 1 year ago
See #93 for an discussion on this topic.
Hey @Simn,
After reading your linked discussion, I concluded that #93 is related (and possibly a prerequisite for this) but does not directly supersede this proposal.
This proposal is not referring to the overload
keyword but to this specific feature:
https://haxe.org/manual/types-abstract-operator-overloading.html
I am essentially proposing that a new operator be added (which abstracts could replace) which would allow for abstract objects to be called as though they were anonymous functions.
Was reading through proposals and re-discovered this old issue I raised.
For anyone searching here, this feature was actually implemented in Haxe 4.3.0, in the form of @:op(a())
.
Haxe currently allows for abstracts to redefine unary operators such as
a++
, as well as binary operators, such asa + b
, and even other operators such as ternary, range, or array access. However, based on the documentation I have read, it does not currently allow overriding the function call operation.I would imagine this would look something like so:
At compilation time,
c(1, true)
would be replaced withCallableThing_Impl_.call(c, 1, true)
.The main sticking points here is the actual syntax;
@:op(Int, Bool)
is redundant since we already have the function signature,@:op(())
can't necessarily be interpreted by the compiler I don't think, and the@:callable
metadata is already in use.