www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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