typed-racket/typed-racket-test/fail/sealing-contract-3.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

27 lines
570 B
Racket

#;
(exn-pred #rx"disallowed members \\(f\\)")
#lang racket/base
(module u racket
;; adds f instead of g like the spec says
(define (mixin cls)
(class cls
(super-new)
(field [f 0])))
(provide mixin))
(module t typed/racket
;; expects a mixin that adds g
(require/typed (submod ".." u)
[mixin
(All (r #:row)
(-> (Class #:row-var r)
(Class #:row-var r (field [g Integer]))))])
(mixin (class object%
(super-new)
(field [f 1]))))
(require 't)