typed-racket/typed-racket-test/succeed/recursive-type-alias-terminates.rkt
2014-12-16 10:07:25 -05:00

23 lines
538 B
Racket

#lang racket/load
;; Test that contracts for mutually recursive class types do not
;; cause infinite loops when they execute.
(module a typed/racket
(define-type X%
(Class [m (-> (Instance Y%) String)]))
(define-type Y%
(Class [m (-> (Instance X%) Any)]))
(: x X%)
(define x (class object%
(super-new)
(define/public (m y) "foo")))
(: y Y%)
(define y (class object%
(super-new)
(define/public (m x) 0)))
(provide x y))
(require 'a)
(send (new x) m (new y))