From c3997a5f35c115cde4d47dcf3045e53f7e882eee Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Wed, 12 Nov 2014 17:08:41 -0500 Subject: [PATCH] Don't print the type at the REPL for Bottom Closes PR 14829 original commit: 7725262771632dbd6078d03204ca24adaa66891f --- .../typed-racket-lib/typed-racket/core.rkt | 16 ++++++++++------ .../tests/typed-racket/succeed/pr14829.rkt | 19 +++++++++++++++++++ 2 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr14829.rkt diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/core.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/core.rkt index 11996b1b..0cbb6a43 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/core.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/core.rkt @@ -122,10 +122,14 @@ [else (set! did-I-suggest-:print-type-already? #t) :print-type-message]))] [x (int-err "bad type result: ~a" x)])) - (if ty-str - #`(begin (display '#,ty-str) - #,(if (unbox include-extra-requires?) - extra-requires - #'(begin)) - #,(arm #'(begin transformed-body ...))) + (if (and ty-str + (not (null? (syntax-e #'(transformed-body ...))))) + (with-syntax ([(transformed-body ... transformed-last) + #'(transformed-body ...)]) + #`(begin #,(if (unbox include-extra-requires?) + extra-requires + #'(begin)) + #,(arm #'(begin transformed-body ...)) + (begin0 #,(arm #'transformed-last) + (display '#,ty-str)))) (arm #'(begin transformed-body ...))))))])) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr14829.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr14829.rkt new file mode 100644 index 00000000..d856f5d7 --- /dev/null +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/pr14829.rkt @@ -0,0 +1,19 @@ +#lang racket/base + +;; Test for PR 14829. Make sure the type is not printed +;; for expressions that return Bottom. + +(require rackunit + racket/sandbox) + +(define out (open-output-string)) + +(define tr-eval + (parameterize ([sandbox-output out]) + (call-with-trusted-sandbox-configuration + (λ () (make-evaluator 'typed/racket))))) + +(with-handlers ([exn? values]) + (tr-eval '(error "foo"))) + +(check-equal? "" (get-output-string out))