X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=tests.scm;h=2b6e09a4c2c63207707f061f722ca4ca3c377a66;hb=86531822ef58c5b29751976f5b41d1c631bdd459;hp=4e14fb6ab8ee3634b1fce5be5166d55fe8455d96;hpb=89ef32141732e6d0bbfc7484b465844b62d8d139;p=scheme.git diff --git a/tests.scm b/tests.scm index 4e14fb6..2b6e09a 100644 --- a/tests.scm +++ b/tests.scm @@ -43,18 +43,17 @@ (let ((str (read-file "/tmp/test-output.txt"))) (test str output))) -(test (data-tors (data-layout '(data A - (foo Int Bool) +(test (data-tors '(A . ((foo Int Bool) (bar Bool)))) - '((foo . (constructor . (abs Int (abs Bool A)))) - (foo~0 . (0 . (abs A Int))) - (foo~1 . (1 . (abs A Bool))) - (bar . (constructor . (abs Bool A))) - (bar~0 . (0 . (abs A Bool))))) - -(test (data-tors-env - (data-layout '(data A - (foo Int 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) + (bar (A bar constructor) abs Bool A) + (bar~0 (A bar 0) abs A Bool))) + +(test (data-tors-type-env + '(A . ((foo Int Bool) (bar Bool)))) '((foo . (abs Int (abs Bool A))) (foo~0 . (abs A Int)) @@ -154,9 +153,9 @@ (- y x)))) '((let () - ((let ((x 42 : Int) - (y ((((+ : (abs Int (abs Int Int))) (1 : Int)) : (abs Int Int)) (x : Int)) : Int)) - (((((- : (abs Int (abs Int Int))) (y : Int)) : (abs Int Int)) (x : Int)) : Int)))))) + ((let ((x (42 : Int)) + (y (((+ : (abs Int (abs Int Int))) (1 : Int) (x : Int)) : Int))) + (((- : (abs Int (abs Int Int))) (y : Int) (x : Int)) : Int)) : Int)) : Int)) (test-expr '(+ 1 2) 3) (test-expr '(bool->int (= 2 0)) 0) @@ -224,3 +223,10 @@ ;; (print "b") ;; (f (- m 1))))]) ;; (f 10))) "ababababab") + + ; adts and pattern matching + +(test-prog '((data A [foo Bool Int]) + (let ([(foo x y) (foo (= 3 3) 42)]) + y)) + 42)