From 6ff74e8c35dd668ef6ce1f48e14c22166bc10646 Mon Sep 17 00:00:00 2001 From: Chris Jester-Young Date: Tue, 7 Jun 2016 14:15:04 -0400 Subject: [PATCH] Give correct type to `in-port` when used with custom reader (#367) * Give correct type to `in-port` when used with custom reader. Currently, `in-port` returns `(Sequenceof Any)` unconditionally, which is correct if the given read function is `read` (default value). However, `(in-port read-line)`, `(in-port read-char)`, etc. should have more specific types. * For `in-port`, strip out EOF from the sequence type. --- typed-racket-lib/typed-racket/base-env/base-special-env.rkt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/typed-racket-lib/typed-racket/base-env/base-special-env.rkt b/typed-racket-lib/typed-racket/base-env/base-special-env.rkt index 747a29a4..30691a74 100644 --- a/typed-racket-lib/typed-racket/base-env/base-special-env.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-special-env.rkt @@ -182,7 +182,9 @@ [(-HashTop) (-seq (-pair Univ Univ))]))] ;; in-port [(make-template-identifier 'in-port 'racket/private/for) - (->opt [(-> -Input-Port Univ) -Input-Port] (-seq Univ))] + (-poly (a) + (cl->* (-> (-seq Univ)) + (->opt (-> -Input-Port (Un a (-val eof))) [-Input-Port] (-seq a))))] ;; in-input-port-bytes [(make-template-identifier 'in-input-port-bytes 'racket/private/for) (-> -Input-Port (-seq -Byte))]