amulet
amulet copied to clipboard
Confusing error location on `type syn <- foo [bar]`
In the code
type foo <- list [string]
I accidentally use [string]
instead of list string
. This leads to a confusing error:
types.ml[1:1 ..1:8]: error (E2001)
│
1 │ type foo <- list [string]
│ ^^^^^^^^
Couldn't match actual type type
with the type expected by the context, list type
The error location is wrong, pointing to type foo
instead of [string]
.
The same error does not occur without a type constructor, in fact type foo <- [string, int]
is accepted as valid by amc. Should I open an issue for that too?
Oh, this'll be interesting. I have a feeling we don't preserve position information by the time we get to the TC.
The same error does not occur without a type constructor, in fact
type foo <- [string, int]
is accepted as valid by amc. Should I open an issue for that too?
That bit is intentional - it's a type-level list.