typed-racket/typed-racket-test/fail/opaque-object-contract.rkt
Asumu Takikawa 8d0c352dcc Add a custom object contract for use in TR
This corresponds to the more strict object contracts
from the OOPSLA paper. Also use `object/c-opaque` in
TR contract generation
2015-03-04 16:26:35 -05:00

26 lines
499 B
Racket

#;
(exn-pred #rx"uncontracted typed.*blaming: .*opaque-object-contract.rkt")
#lang racket/base
(require racket/class)
(module a racket
(provide c%)
(define c%
(class object%
(super-new)
(define/public (m) (void)))))
(module b typed/racket
(require/typed (submod ".." a) [c% (Class [m (-> Void)])])
(provide o)
(: o (Object))
(define o (new (class c%
(super-new)
(define/public (n) (void))))))
(require 'b)
(send o m)
(send o n)