Multiple overloads for same (binary) operator #1821
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Use case
It would be useful if we could have multiple overloads for the same operator, allowing eg. Vector class that can be multiplied both by scalar and another Vector:
Currently the compiler complains "ERROR TS2393: Duplicate function implementation."
Approach
Class
andClassPrototype
so that overloads is an arrayProgress
This is a draft PR. I'm currently implementing the above for ADD operator as proof of concept. I'm calling
resolver.resolveExpression(...)
in compiler.ts, line 4068 to find the type for the right hand side, but the call itself is causing the compiler to fail seemingly unrelated tests. So I'm guessing the method cannot be called in this phase of compilation or I'm calling it the wrong way?Does this approache seem feasible in general?