diff --git a/collects/tests/typed-racket/succeed/type-printer-single-level.rkt b/collects/tests/typed-racket/succeed/type-printer-single-level.rkt index cc4e3421dd..70988225e8 100644 --- a/collects/tests/typed-racket/succeed/type-printer-single-level.rkt +++ b/collects/tests/typed-racket/succeed/type-printer-single-level.rkt @@ -19,6 +19,7 @@ (tr-eval '(:type Foo)) (tr-eval '(:type Bar)) +(tr-eval '(:type (Number -> Integer))) ;; if #:verbose, make sure it's the full type (tr-eval '(:type #:verbose Bar)) @@ -26,6 +27,7 @@ (check-equal? (get-output-string out) (string-append "(U Integer String)\n[can expand further: String Integer]" "(Foo -> Foo)\n[can expand further: Foo]" + "(Number -> Integer)\n[can expand further: Integer Number]" "((U 0 1 Byte-Larger-Than-One Positive-Index-Not-Byte " "Positive-Fixnum-Not-Index Negative-Fixnum " "Positive-Integer-Not-Fixnum Negative-Integer-Not-Fixnum String) " diff --git a/collects/typed-racket/types/printer.rkt b/collects/typed-racket/types/printer.rkt index 032cd2ec8f..f17b1b038c 100644 --- a/collects/typed-racket/types/printer.rkt +++ b/collects/typed-racket/types/printer.rkt @@ -235,7 +235,10 @@ ;; print out a type ;; print-type : Type Port Boolean -> Void (define (print-type type port write? [ignored-names '()]) - (define (fp . args) (apply fprintf port args)) + (define (fp . args) + (parameterize ([current-print-type-fuel + (sub1 (current-print-type-fuel))]) + (apply fprintf port args))) (define (tuple? t) (match t [(Pair: a (? tuple?)) #t] @@ -302,7 +305,12 @@ (when proc (fp " ~a" proc)) (fp ")")] - [(Function: arities) (fp "~a" (print-case-lambda type))] + [(Function: arities) + (define fun-type + (parameterize ([current-print-type-fuel + (sub1 (current-print-type-fuel))]) + (print-case-lambda type))) + (fp "~a" fun-type)] [(arr: _ _ _ _ _) (fp "(arr ~a)" (format-arr type))] [(Vector: e) (fp "(Vectorof ~a)" e)] [(HeterogeneousVector: e) (fp "(Vector")