X-Git-Url: https://git.lukelau.me/?a=blobdiff_plain;ds=sidebyside;f=tests.scm;h=d2711d7739ffaa2a671835d9be7f4bf6ed211f0d;hb=fff1029008b7399f597e0227fff2bf05b8a27b3c;hp=0c11e89714b89d309cae775cc7f47d3d800e752f;hpb=061f7cd9efa96f5d4e7206ec89931f9fd8421a6c;p=scheme.git diff --git a/tests.scm b/tests.scm index 0c11e89..d2711d7 100644 --- a/tests.scm +++ b/tests.scm @@ -300,3 +300,26 @@ [c 1]))) 2) +(test-prog '((data Foo [foo Int Int] [bar Bool]) + (case (foo 42 12) + [(foo 20 x) 0] + [(foo 42 x) x] + [(bar x) 0])) + 12) + +(test-prog '((data Foo [foo Int]) + (data Bar [bar Foo]) + (case (bar (foo 42)) + [(bar (foo x)) x])) + 42) + ; todo: make this error for incomplete pattern match +(test-prog '((data A [foo Int] [bar Int B]) + (data B [baz Int]) + (let ([val (bar 42 (baz 12))]) + (case val + [(foo 42) 0] + [(bar 32 (baz 12)) 1] + [(bar 42 (baz x)) x] + [(foo x) 2]))) + 12) +