pschachte / wybe

A programming language supporting most of both declarative and imperative programming
MIT License
43 stars 6 forks source link

Update syntax does not work with subtraction #460

Open pschachte opened 5 months ago

pschachte commented 5 months ago

For example, the following do not compile:

!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.

pschachte commented 4 months ago

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.