typed-racket/typed-racket-test/fail/sealing-contract-1.rkt
Asumu Takikawa 92d1dd1c5e Add sealing contracts for row polymorphic types
This enables contract generation in the negative
direction (untyped->typed) for row polymorphic types
(basically mixin types).

Depends on `class-seal` and `class-unseal` in
the racket/class library.
2015-05-13 20:52:32 -04:00

25 lines
559 B
Racket

#;
(exn-pred #rx"an unrelated class")
#lang racket/base
(module u racket
;; drops cls on the floor, doesn't match spec
(define (mixin cls)
(class object% (super-new)))
(provide mixin))
(module t typed/racket
;; expects a mixin that adds n
(require/typed (submod ".." u)
[mixin
(All (r #:row)
(-> (Class #:row-var r)
(Class #:row-var r [n (-> Integer Integer)])))])
(mixin (class object%
(super-new)
(define/public (m x) x))))
(require 't)