diff --git a/collects/tests/typed-racket/succeed/top-level-begin.rkt b/collects/tests/typed-racket/succeed/top-level-begin.rkt new file mode 100644 index 0000000000..aaabebafdb --- /dev/null +++ b/collects/tests/typed-racket/succeed/top-level-begin.rkt @@ -0,0 +1,11 @@ +#lang racket + +;; Test various (begin ...)s at the top-level. In +;; particular, avoid a (begin) regression. + +(define ns (make-base-namespace)) +(eval '(require typed/racket) ns) +(eval '(begin) ns) +(eval '(begin 1 2) ns) +(eval '(begin (+ 1 2) 5 3 "foo") ns) + diff --git a/collects/typed-racket/typecheck/tc-toplevel.rkt b/collects/typed-racket/typecheck/tc-toplevel.rkt index 9454a07889..8288774d59 100644 --- a/collects/typed-racket/typecheck/tc-toplevel.rkt +++ b/collects/typed-racket/typecheck/tc-toplevel.rkt @@ -422,10 +422,11 @@ ;; Don't open up `begin`s that are supposed to be ignored #:when (not (or (syntax-property form 'typechecker:ignore) (syntax-property form 'typechecker:ignore-some))) - (define-values (_ pass2-results) - (for/lists (_1 _2) ([form (syntax->list #'(e ...))]) - (tc-toplevel-form form))) - (begin0 (values #f (last pass2-results)) + (define result + (for/last ([form (syntax->list #'(e ...))]) + (define-values (_ result) (tc-toplevel-form form)) + result)) + (begin0 (values #f (or result (void))) (report-all-errors))] [_ (when ((internal-syntax-pred define-type-alias-internal) form)