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))