typed-racket/typed-racket-test/succeed/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
504 B
Racket

#lang racket/base
;; Ensure that for untyped-untyped calls, the opaque object
;; contract does not interfere.
(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)