There are some rare situations with completely symmetrical graphs which mean that there isn't a "more correct" error. This is due to the annoying map iteration non-determinism, and so instead of fighting to remove every bit of that, let's just accept more than one error here.
17 lines
557 B
Plaintext
17 lines
557 B
Plaintext
-- main.mcl --
|
|
# $id could theoretically have type func(int) int or func(str) str, but it
|
|
# can't be both because it is bound to a class parameter, which must have a
|
|
# single type.
|
|
class use_polymorphically($id) {
|
|
test "test1" {
|
|
int8 => $id(42),
|
|
}
|
|
test "test2" {
|
|
anotherstr => $id("hello"),
|
|
}
|
|
}
|
|
include use_polymorphically(func($x) {$x})
|
|
-- OUTPUT --
|
|
# err: errUnify: unify error with: topLevel(singleton(func(x) { var(x) })): type error: str != int
|
|
# err: errUnify: unify error with: topLevel(singleton(func(x) { var(x) })): type error: int != str
|