test-variant.rkt (861B)
1 #lang typed/racket 2 3 (require phc-adt phc-toolkit type-expander typed/rackunit) 4 (adt-init) 5 6 (define-variant v1 [x Number String] [y String Number] [z Number String]) 7 (check-equal?: (ann (constructor x 1 "a") 8 (U [constructor w Number String] 9 [constructor x Number String] 10 [constructor y String Number])) 11 (constructor x 1 "a")) 12 (check-equal?: (constructor x 1 "a") 13 (constructor x 1 "a")) 14 (check-equal?: (ann (constructor x 1 "a") v1) 15 (constructor x 1 "a")) 16 (check-equal?: (ann (constructor x 1 "a") v1) 17 (ann (constructor x 1 "a") v1)) 18 (check-not-equal?: (ann (constructor x 2 "b") v1) 19 (ann (constructor y "b" 2) v1)) 20 (check-not-equal?: (ann (constructor x 3 "c") v1) 21 (ann (constructor z 3 "c") v1))