fix problems with errortrace and namespace phases

svn: r11541
This commit is contained in:
Matthew Flatt 2008-09-04 22:03:06 +00:00
parent b44494abe5
commit e67b138830
3 changed files with 6 additions and 10 deletions

View File

@ -323,7 +323,7 @@
(syntax-case top-e (#%plain-module-begin)
[(mod name init-import (#%plain-module-begin body ...))
(normal
#`(module name init-import
#`(#,(namespace-module-identifier) name init-import
#,(syntax-recertify
#`(#%plain-module-begin
#,((make-syntax-introducer)

View File

@ -381,7 +381,7 @@
expr
(rebuild expr (list (cons #'rhs marked)))))]
[(module name init-import (#%plain-module-begin body ...))
[(module name init-import (__plain-module-begin body ...))
;; Just wrap body expressions
(let ([bodys (syntax->list (syntax (body ...)))]
[mb (list-ref (syntax->list expr) 3)])

View File

@ -3,10 +3,6 @@
(require (for-syntax scheme/base)
(for-template scheme/base))
(define-for-syntax anchor #f)
(define-for-syntax (quick-phase?)
(= 1 (variable-reference->phase (#%variable-reference anchor))))
(define-syntax kernel-syntax-case-internal
(lambda (stx)
(syntax-case stx ()
@ -32,19 +28,19 @@
#%variable-reference)))))
(let ([p phase])
(cond
[(and #,(or (syntax-e #'rel?) (quick-phase?)) (= p 0))
[(and #,(syntax-e #'rel?) (= p 0))
free-identifier=?]
[(and #,(or (syntax-e #'rel?) (quick-phase?)) (= p 1))
[(and #,(syntax-e #'rel?) (= p 1))
free-transformer-identifier=?]
[else (let ([id (namespace-module-identifier p)])
(lambda (a b)
(free-identifier=? (datum->syntax id
(let ([s (syntax-e a)])
(let ([s (syntax-e b)])
(case s
[(#%plain-app) '#%app]
[(#%plain-lambda) 'lambda]
[else s])))
b
a
p)))]))
clause ...))])))