diff --git a/test/Tree/Eval/Positive.hs b/test/Tree/Eval/Positive.hs index 3f6ad1aca4..6026e3a577 100644 --- a/test/Tree/Eval/Positive.hs +++ b/test/Tree/Eval/Positive.hs @@ -244,5 +244,10 @@ tests = "Test041: Type unification" $(mkRelDir ".") $(mkRelFile "test041.jvt") - $(mkRelFile "out/test041.out") + $(mkRelFile "out/test041.out"), + PosTest + "Test042: Uncurried function type unification" + $(mkRelDir ".") + $(mkRelFile "test042.jvt") + $(mkRelFile "out/test042.out") ] diff --git a/tests/Tree/positive/out/test042.out b/tests/Tree/positive/out/test042.out new file mode 100644 index 0000000000..27ba77ddaf --- /dev/null +++ b/tests/Tree/positive/out/test042.out @@ -0,0 +1 @@ +true diff --git a/tests/Tree/positive/test042.jvt b/tests/Tree/positive/test042.jvt new file mode 100644 index 0000000000..d591d9f053 --- /dev/null +++ b/tests/Tree/positive/test042.jvt @@ -0,0 +1,25 @@ +type Eq { + mkEq : ((*, *) → bool) → Eq; +} + +function lambda_app(f : (*, *) → bool, a : *, b : *) : bool { + ccall(f, a, b) +} + +function spec(Eq) : Eq { + alloc[mkEq](calloc[lambda_app](case[Eq](arg[0]) { + mkEq: save { + tmp[0].mkEq[0] + } + })) +} + +function cmp(integer, integer) : bool { + lt(arg[0], arg[1]) +} + +function main() : bool { + save(call[spec](alloc[mkEq](calloc[cmp]()))) { + ccall(tmp[0].mkEq[0], 1, 2) + } +}