Make provide expansion respect disappeared uses on expanded syntax.

This commit is contained in:
Eric Dobson 2015-03-15 10:24:34 -07:00 committed by Matthew Flatt
parent 9c9e922b4a
commit 408d86f1c7
2 changed files with 17 additions and 2 deletions

View File

@ -1387,7 +1387,21 @@
(let ([form (expand `(module m racket/base (let ([form (expand `(module m racket/base
(require (rename-in racket/base [lib racket-base:lib]) (require (rename-in racket/base [lib racket-base:lib])
(racket-base:lib "racket/base"))))]) (racket-base:lib "racket/base"))))])
(test #t find-disappeared form #'racket-base:lib))) (test #t find-disappeared form #'racket-base:lib))
;; Check case where the provide transformer also sets disappeared-use
(let ([form (expand `(module m racket/base
(require (for-syntax racket/base racket/provide-transform))
(define-syntax my-out
(make-provide-transformer
(lambda (stx phases) null)
(lambda (stx phases)
(syntax-case stx ()
[(head id)
(syntax-property #'(rename-out)
'disappeared-use
(syntax-local-introduce #'id))]))))
(provide (my-out map))))])
(test #t find-disappeared form #'map)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View File

@ -77,7 +77,8 @@
stx)) stx))
(syntax-property v (syntax-property v
'disappeared-use 'disappeared-use
(syntax-local-introduce #'id))) (cons (syntax-local-introduce #'id)
(or (syntax-property v 'disappeared-use) null))))
stx))] stx))]
[_ stx])))) [_ stx]))))