(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)