Skip to content

Commit 21b1b48

Browse files
committed
Add more tests for require/provide.
1 parent ee5db2d commit 21b1b48

File tree

3 files changed

+45
-23
lines changed

3 files changed

+45
-23
lines changed

private/languages.rkt

-4
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535
(submodule id module-path
3636
(module-level-form ...))
3737
(submodule* id module-path
38-
(module-level-form ...))
39-
(submodule* id
4038
(module-level-form ...)))
4139
(general-top-level-form (general-top-level-form)
4240
expr
@@ -115,8 +113,6 @@
115113
(- (submodule id module-path
116114
(module-level-form ...))
117115
(submodule* id module-path
118-
(module-level-form ...))
119-
(submodule* id
120116
(module-level-form ...)))
121117
(+ (module id module-path
122118
(module-level-form ...)

private/passes.rkt

+4-19
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,6 @@
100100
`(submodule* ,(syntax->datum #'id) ,(syntax->datum #'path)
101101
(,(for/list ([i (in-list (syntax->list #'(body ...)))])
102102
(parse-mod i env)) ...)))]
103-
[(module* id:id path
104-
(#%plain-module-begin body ...))
105-
(parameterize ([current-global-env/parse-and-rename (make-hash)])
106-
`(submodule* ,(syntax->datum #'id)
107-
(,(for/list ([i (in-list (syntax->list #'(body ...)))])
108-
(parse-mod i env)) ...)))]
109103
[else
110104
(parse-gen #'else env)]))
111105

@@ -250,12 +244,12 @@
250244
(parse-phaseless-req-spec i env)) ...)]
251245
[(for-template phaseless-req-spec ...)
252246
`(for-meta
253-
,#f
247+
,-1
254248
,(for/list ([i (in-list (syntax->list #'(phaseless-req-spec ...)))])
255249
(parse-phaseless-req-spec i env)) ...)]
256250
[(for-label phaseless-req-spec ...)
257251
`(for-meta
258-
,-1
252+
,#f
259253
,(for/list ([i (in-list (syntax->list #'(phaseless-req-spec ...)))])
260254
(parse-phaseless-req-spec i env)) ...)]
261255
[(just-meta phase-level raw-req-spec ...)
@@ -275,7 +269,7 @@
275269
`(prefix-all-except ,(syntax-e #'id)
276270
,(parse-raw-module-path #'raw-module-path env))]
277271
[(all-except raw-module-path ids:id ...)
278-
`(all-except ,(parse-raw-module-path #'raw-module-path)
272+
`(all-except ,(parse-raw-module-path #'raw-module-path env)
279273
,(map (curryr parse-expr env)
280274
(syntax->list #'(ids ...))) ...)]
281275
[(prefix-all-except id:id raw-module-path ids:id ...)
@@ -284,7 +278,7 @@
284278
,(parse-raw-module-path #'raw-module-path env)
285279
,(map (curryr parse-expr env) (syntax->list #'(ids ...))) ...)]
286280
[(rename raw-module-path id1:id id2:id)
287-
`(rename ,(parse-raw-module-path #'raw-module-path)
281+
`(rename ,(parse-raw-module-path #'raw-module-path env)
288282
,(parse-expr #'id1 env)
289283
,(parse-expr #'id2 env))]
290284
[else (parse-raw-module-path #'else env)]))
@@ -391,15 +385,6 @@
391385
null
392386
(list (with-output-language (Lsubmodules submodule-form)
393387
`(module ,id ,module-path
394-
(,module-level-form ...)
395-
(,(append* pre) ...)
396-
(,(append* post) ...)))))]
397-
[(submodule* ,id
398-
(,[module-level-form pre post] ...))
399-
(values `(#%plain-app (primitive void))
400-
null
401-
(list (with-output-language (Lsubmodules submodule-form)
402-
`(module ,id #f
403388
(,module-level-form ...)
404389
(,(append* pre) ...)
405390
(,(append* post) ...)))))])

private/tests.rkt

+41
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@
108108
(define a (make-variable 'a))
109109
(define b (make-variable 'b))
110110
(define c (make-variable 'c))
111+
(define match (make-variable 'match))
112+
(define match2 (make-variable 'match2))
111113
(define-compiler-test Lsrc top-level-form
112114
(check-equal?
113115
(current-compile #'(lambda (x) x))
@@ -158,6 +160,34 @@
158160
`(module foo racket/base
159161
((#%require racket/match)
160162
(#%provide (all-from-except racket/match ,(make-variable 'match))))))
163+
(check-equal?
164+
(current-compile #'(module bar racket/base
165+
(#%plain-module-begin
166+
(#%require (for-template racket/base)
167+
(for-label racket/base)
168+
(just-meta 0 racket))
169+
42)))
170+
`(module bar racket/base
171+
((#%require (for-meta -1 racket/base)
172+
(for-meta #f racket/base)
173+
(just-meta 0 racket))
174+
'42)))
175+
(check-equal?
176+
(current-compile #'(module bar racket/base
177+
(#%plain-module-begin
178+
(#%require (only racket/match match)
179+
(all-except racket/match match)
180+
(rename racket/match match2 match)
181+
(prefix-all-except match: racket/match match)
182+
; TODO (planet "match" ("match" "match")) ; Not a real package
183+
))))
184+
`(module bar racket/base
185+
((#%require (only racket/match ,match)
186+
(all-except racket/match ,match)
187+
(rename racket/match ,match2 ,match)
188+
(prefix-all-except match: racket/match ,match)
189+
; TODO (planet "match" ("match" "match"))
190+
))))
161191
(check-equal?
162192
(current-compile #'(module bar racket
163193
(#%plain-module-begin
@@ -214,6 +244,17 @@
214244
()
215245
((module test #f
216246
(,x) () ()))))
247+
(check-equal?
248+
(current-compile #'(module outer racket
249+
(#%plain-module-begin
250+
(module* inner #f
251+
(#%plain-module-begin
252+
5)))))
253+
`(module outer racket
254+
((#%plain-app (primitive void)))
255+
()
256+
((module inner #f
257+
('5) () ()))))
217258
(check-equal?
218259
(current-compile #'(module foo racket/base
219260
(#%plain-module-begin

0 commit comments

Comments
 (0)