macro-debugger: fix deriv parser for begin-for-syntax
original commit: 57bdb62547483242ad30f44a1aa80c15cfca6cee
This commit is contained in:
parent
d62630672e
commit
890768b3c8
|
@ -130,8 +130,8 @@
|
|||
(recur/phase-up rhs)]
|
||||
[(p:define-values z1 z2 rs ?1 rhs)
|
||||
(recur rhs)]
|
||||
[(p:begin-for-syntax z1 z2 rs ?1 prep body)
|
||||
(recur prep)
|
||||
[(p:begin-for-syntax z1 z2 rs ?1 prep body locals)
|
||||
(recur prep locals)
|
||||
(recur/phase-up body)]
|
||||
[(p:#%expression z1 z2 rs ?1 inner untag)
|
||||
(recur inner)]
|
||||
|
|
|
@ -108,7 +108,7 @@
|
|||
;; where BFSBody is one of
|
||||
;; - ModuleBegin/Phase
|
||||
;; - (list BeginForSyntaxLifts ... LDeriv))
|
||||
(define-struct (p:begin-for-syntax prule) (prep body) #:transparent)
|
||||
(define-struct (p:begin-for-syntax prule) (prep body locals) #:transparent)
|
||||
|
||||
;; (make-p:stop <Base>)
|
||||
;; (make-p:unknown <Base>)
|
||||
|
|
|
@ -321,8 +321,8 @@
|
|||
phase-up (? EE/LetLifts) (? Eval) exit-prim)
|
||||
(make p:define-syntaxes $1 $8 null $3 $4 $6 $7)]
|
||||
[(enter-prim prim-begin-for-syntax ! (? PrepareEnv)
|
||||
phase-up (? ModuleBegin/Phase) exit-prim)
|
||||
(make p:begin-for-syntax $1 $7 null $3 $4 $6)]
|
||||
phase-up (? ModuleBegin/Phase) (? Eval) exit-prim)
|
||||
(make p:begin-for-syntax $1 $7 null $3 $4 $6 $7)]
|
||||
[(enter-prim prim-require (? Eval) exit-prim)
|
||||
(make p:require $1 $4 null #f $3)]
|
||||
[()
|
||||
|
@ -504,8 +504,8 @@
|
|||
|
||||
(PrimBeginForSyntax
|
||||
(#:args e1 e2 rs)
|
||||
[(prim-begin-for-syntax ! (? PrepareEnv) (? BeginForSyntax*))
|
||||
(make p:begin-for-syntax e1 e2 rs $2 $3 $4)])
|
||||
[(prim-begin-for-syntax ! (? PrepareEnv) (? BeginForSyntax*) (? Eval))
|
||||
(make p:begin-for-syntax e1 e2 rs $2 $3 $4 $5)])
|
||||
(BeginForSyntax*
|
||||
[((? EL))
|
||||
(list $1)]
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
(define (ok-node? x)
|
||||
(check 'ok-node? node? "node" x)
|
||||
(and (node-z1 x) #t))
|
||||
(and (node-z2 x) #t))
|
||||
(define (interrupted-node? x)
|
||||
(check 'interrupted-node? node? "node" x)
|
||||
(not (node-z2 x)))
|
||||
|
|
|
@ -270,7 +270,7 @@
|
|||
[! ?2]
|
||||
[Expr ?rhs rhs])]
|
||||
|
||||
[(Wrap p:begin-for-syntax (e1 e2 rs ?1 prep body))
|
||||
[(Wrap p:begin-for-syntax (e1 e2 rs ?1 prep body locals))
|
||||
(R [! ?1]
|
||||
[#:pattern ?form]
|
||||
[PrepareEnv ?form prep]
|
||||
|
@ -278,7 +278,8 @@
|
|||
[#:parameterize ((phase (add1 (phase))))
|
||||
[#:if (module-begin/phase? body)
|
||||
[[ModuleBegin/Phase ?forms body]]
|
||||
[[BeginForSyntax ?forms body]]]])]
|
||||
[[BeginForSyntax ?forms body]]]]
|
||||
[LocalActions ?forms locals])]
|
||||
|
||||
;; Macros
|
||||
[(Wrap mrule (e1 e2 rs ?1 me1 locals me2 ?2 etx next))
|
||||
|
|
|
@ -205,4 +205,14 @@
|
|||
(equal? (syntax->datum (state-e (step-s2 step)))
|
||||
'(define y 12)))
|
||||
"looking for m => define")))
|
||||
))
|
||||
|
||||
;; Added 3/12/2012 based on bug from cce
|
||||
(test-case "begin-for-syntax ends with phase1 eval"
|
||||
(let ([d (trace '(module m '#%kernel
|
||||
(#%module-begin
|
||||
(#%require (for-syntax '#%kernel))
|
||||
(begin-for-syntax
|
||||
(syntax-local-value (quote-syntax lambda) void)))))])
|
||||
(check-pred deriv? d)
|
||||
(check-pred ok-node? d)))
|
||||
))
|
||||
|
|
Loading…
Reference in New Issue
Block a user