test-tagged-parametric.rkt (729B)
1 #lang typed/racket 2 3 (require phc-adt phc-toolkit type-expander typed/rackunit "ck.rkt") 4 (adt-init) 5 6 (define-tagged #:∀ (T) a [a : T] [b : T]) 7 (define-tagged b #:∀ (T) [a : T] [b : T]) 8 (define-tagged c [a : T] [b : T] #:∀ (T)) 9 10 (define (printed-type [t : String]) 11 (string-append "((tagged " t " a b)" 12 " (U Positive-Byte String) (U Positive-Byte String))")) 13 14 (check-print-type (a 3 "b") (printed-type "a")) 15 (check-ann (a 3 4) (tagged a [a Positive-Byte] [b Positive-Byte])) 16 17 (check-print-type (b 3 "b") (printed-type "b")) 18 (check-ann (b 3 4) (tagged b [a Positive-Byte] [b Positive-Byte])) 19 20 (check-print-type (c 3 "b") (printed-type "c")) 21 (check-ann (c 3 4) (tagged c [a Positive-Byte] [b Positive-Byte]))