X-Git-Url: https://git.lukelau.me/?a=blobdiff_plain;f=tests.scm;h=49fc2c4bc861b13de41f454a7aa2b6e6b103d8d9;hb=7bcc8cc8aa41849a6f6e0615a1309b7ac3b3956f;hp=fa5b195e1b2575c4d14f9e385c854aad53dd0823;hpb=006b94f5a24a794665788737fec8d54086284317;p=scheme.git diff --git a/tests.scm b/tests.scm index fa5b195..49fc2c4 100644 --- a/tests.scm +++ b/tests.scm @@ -70,10 +70,10 @@ (bar Bool)))) '((foo (A foo constructor) abs Int (abs Bool A)) - (foo~0 (A foo 0) abs A Int) - (foo~1 (A foo 1) abs A Bool) + (foo~0 (A foo 0 Int) abs A Int) + (foo~1 (A foo 1 Bool) abs A Bool) (bar (A bar constructor) abs Bool A) - (bar~0 (A bar 0) abs A Bool))) + (bar~0 (A bar 0 Bool) abs A Bool))) (test (data-tors-type-env '(A . ((foo Int Bool) @@ -155,9 +155,7 @@ (test-types (typecheck - '((data A - [foo Int] - [bar Bool]) + '((data A [foo Int]) (let ([x (foo 42)] [(foo y) x]) x))) @@ -165,9 +163,7 @@ (test-types (typecheck - '((data A - [foo Int] - [bar Bool]) + '((data A [foo Int]) (let ([x (foo 42)] [(foo y) x]) y))) @@ -259,3 +255,35 @@ (let ([(foo x y) (foo (= 3 3) 42)]) y)) 42) + +(test-exception (expand-pattern-matches + '((data A [foo Int] + [bar Bool]) + (let ([(foo x) (foo 0)]) x)))) + +(test-prog '((data A [foo Int]) + (let ([x (foo 42)]) + (let ([(foo y) x]) + (+ 2 y)))) + 44) + +(test-prog '((data A [foo Bool Int Int]) + (let ([x (foo (= 2 1) 123 45)] + [(foo a b c) x]) + (+ b c))) + (+ 123 45)) + +(test-prog '((data A [foo Int]) + (data B [bar A]) + (let ([(bar (foo x)) (bar (foo 42))]) + x)) + 42) + +(test-prog '((data Foo [a] [b] [c]) + (let ([x b]) + (case x + [a 1] + [b 2] + [c 3]))) + 2) +