Make define-type
work at top-level
Closes PR 12913 original commit: f3e6276f9b2e0a50d54cc83ba05dcf670b5146da
This commit is contained in:
parent
02bc10ef98
commit
f6230841c0
10
collects/tests/typed-racket/succeed/pr12913.rkt
Normal file
10
collects/tests/typed-racket/succeed/pr12913.rkt
Normal file
|
@ -0,0 +1,10 @@
|
|||
#lang racket
|
||||
|
||||
;; Test that `define-type` works at the top-level
|
||||
|
||||
(define ns (make-base-namespace))
|
||||
(eval '(require typed/racket) ns)
|
||||
(eval '(define-type Foo (U String Symbol)) ns)
|
||||
(eval '(: x Foo) ns)
|
||||
(eval '(define x 'x) ns)
|
||||
|
|
@ -417,7 +417,15 @@
|
|||
;; used only from #%top-interaction
|
||||
;; syntax -> (values #f (or/c void? tc-results/c))
|
||||
(define (tc-toplevel-form form)
|
||||
(tc-toplevel/pass1 form)
|
||||
(begin0 (values #f (tc-toplevel/pass2 form))
|
||||
(report-all-errors)))
|
||||
(syntax-parse form
|
||||
[((~literal begin) e ...)
|
||||
(for-each tc-toplevel-form (syntax->list #'(e ...)))
|
||||
(begin0 (values #f (tc-toplevel/pass2 form))
|
||||
(report-all-errors))]
|
||||
[_
|
||||
(when ((internal-syntax-pred define-type-alias-internal) form)
|
||||
((compose register-type-alias parse-type-alias) form))
|
||||
(tc-toplevel/pass1 form)
|
||||
(begin0 (values #f (tc-toplevel/pass2 form))
|
||||
(report-all-errors))]))
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user