!x - 1 # should decrement x
10 - !x # should subtract x from 10
These elicit these compiler errors:
test-cases/final-dump/minus_update.wybe:4:2: Ambiguous overloading: call could refer to:
wybe.int.-<3>
wybe.int.-<0>
test-cases/final-dump/minus_update.wybe:5:1: Ambiguous overloading: call could refer to:
wybe.int.-<3>
wybe.int.-<0>
I suspect this is caused by some kind of conflict with unary subtraction.
This is hard to fix because of the way type checking runs first, followed by mode checking. Considering only types without looking at modes, we can't distinguish unary negation from something like !x - 1.
For example, the following do not compile:
These elicit these compiler errors:
I suspect this is caused by some kind of conflict with unary subtraction.