+ ; 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)