diff --git a/typed-racket-lib/typed-racket/typecheck/toplevel-trampoline.rkt b/typed-racket-lib/typed-racket/typecheck/toplevel-trampoline.rkt index 2e66d7cf..1402f7c1 100644 --- a/typed-racket-lib/typed-racket/typecheck/toplevel-trampoline.rkt +++ b/typed-racket-lib/typed-racket/typecheck/toplevel-trampoline.rkt @@ -65,8 +65,14 @@ (local-expand/capture* #'e 'top-level (kernel-form-identifier-list)))) (syntax-parse head-expanded #:literal-sets (kernel-literals) - [(begin (define-values (n) _) ... (~or _:ignore^ _:ignore-some^)) - #'e] + [(begin (define-values (n) _) ... + (~and (~or _:ignore^ _:ignore-some^) + (~not (~or _:tr:class^ + _:tr:unit^ + _:tr:unit:invoke^ + _:tr:unit:compound^ + _:tr:unit:from-context^)))) + head-expanded] ;; keep trampolining on begins [(begin (define-values (n) e-rhs) ... (begin e ... e-last)) #`(begin (tc-toplevel-trampoline orig-stx (define-values (n) e-rhs)) diff --git a/typed-racket-test/fail/top-level-unit-and-class.rkt b/typed-racket-test/fail/top-level-unit-and-class.rkt new file mode 100644 index 00000000..24876886 --- /dev/null +++ b/typed-racket-test/fail/top-level-unit-and-class.rkt @@ -0,0 +1,8 @@ +#lang racket/load + +;; A test for GH issue #220 + +(require typed/racket) + +(class object% (super-new) (+ 1 "foo")) +(unit (import) (export) (+ 1 "foo"))