cpsMagic overloading is broken on master
alaviss opened this issue · comments
import cps
type
A = object
B = object
proc wait(c: Continuation, x: A): Continuation {.cpsMagic.} = discard
proc wait(c: Continuation, x: B): Continuation {.cpsMagic.} = discard
proc foo() {.cps: Continuation.} =
wait(B())
foo()
Got
test.nim(12, 7) Error: type mismatch: got <B>
but expected one of:
proc wait(c: Continuation; x: A): Continuation
first type mismatch at position: 1
required type for c: Continuation
but expression 'B()' is of type: B
proc wait(c: Continuation; x: B): Continuation
first type mismatch at position: 1
required type for c: Continuation
but expression 'B()' is of type: B
proc wait(x: A)
first type mismatch at position: 1
required type for x: A
but expression 'B()' is of type: B
expression: wait(B())
Regression introduced by #258. This form of overloading is used heavily by nim-sys
.
when compiles
?