add `#%declare', require declaration of cross-phase persistent modules

original commit: 9e2cf2ab376a3461a1db943dfb35f6a152b70470
This commit is contained in:
Matthew Flatt 2013-07-22 10:34:39 -06:00
parent 09e2e75f06
commit 0ab3099f7e
3 changed files with 5 additions and 3 deletions

View File

@ -16,8 +16,8 @@
(provide tc-setup invis-kw maybe-optimize init-current-type-names)
(define-syntax-class invis-kw
#:literals (define-values define-syntaxes #%require #%provide begin)
(pattern (~or define-values define-syntaxes #%require #%provide begin)))
#:literals (define-values define-syntaxes #%require #%provide #%declare begin)
(pattern (~or define-values define-syntaxes #%require #%provide #%declare begin)))
(define (maybe-optimize body)
;; do we optimize?

View File

@ -214,6 +214,7 @@
;; these forms should always be ignored
[(#%require . _) (void)]
[(#%provide . _) (void)]
[(#%declare . _) (void)]
[(define-syntaxes . _) (void)]
[(begin-for-syntax . _) (void)]

View File

@ -6,7 +6,7 @@
;; For simplicity, protect everything produced by Typed Racket.
(define (arm stx)
(syntax-case stx (module module* #%plain-module-begin
#%require #%provide begin
#%require #%provide #%declare begin
define-values define-syntaxes
begin-for-syntax)
[(module name initial-import mb)
@ -18,6 +18,7 @@
'opaque)]
[(#%require . _) stx]
[(#%provide . _) stx]
[(#%declare . _) stx]
[(begin form ...)
(quasisyntax/loc stx (begin #,@(stx-map arm #'(form ...))))]
[(begin-for-syntax form ...)