no title added by megane on Mon Aug 13 16:22:27 2012

(define-record foo a)
(define-type foo-t (struct foo))

(define (t1)
  (the foo-t (the foo-t (make-foo))))	; OK

(define (t2)
  (the (struct foo) (the (struct foo) (make-foo))))

(: bar (procedure () (struct foo)))
(define (bar)
  (make-foo))

(define (t3)
  (the (struct foo) (bar)))


;; $ csc -verbose -specialize  foo.scm

;; Note: in toplevel procedure `t2':
;;   expression returns a result of type `(struct foo)', but is declared to return `(struct foo)', which is not a subtype

;; Note: in toplevel procedure `t3':
;;   expression returns a result of type `(struct foo)', but is declared to return `(struct foo)', which is not a subtype