X-Git-Url: https://git.lukelau.me/?a=blobdiff_plain;f=tests.scm;h=b3e630bbffefebbe31d959e7fd17ffa22e504976;hb=1b7e2b53e68a39265fd7424910998d2607cc3815;hp=6dfbd9f4459cc1e46b3258caab6d5c0ba0ff2e27;hpb=e4dc23d659849c88cec8c7e57d0d463f9493850e;p=scheme.git diff --git a/tests.scm b/tests.scm index 6dfbd9f..b3e630b 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,21 @@ '((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)