X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=tests.scm;h=49fc2c4bc861b13de41f454a7aa2b6e6b103d8d9;hb=adbf51b9013353037797f4cc830a6c55628ce038;hp=6dfbd9f4459cc1e46b3258caab6d5c0ba0ff2e27;hpb=e4dc23d659849c88cec8c7e57d0d463f9493850e;p=scheme.git diff --git a/tests.scm b/tests.scm index 6dfbd9f..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) @@ -260,3 +260,30 @@ '((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) +