diff --git a/collects/macro-debugger/analysis/private/get-references.rkt b/collects/macro-debugger/analysis/private/get-references.rkt index 4f95a3c..ef3b887 100644 --- a/collects/macro-debugger/analysis/private/get-references.rkt +++ b/collects/macro-debugger/analysis/private/get-references.rkt @@ -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)] diff --git a/collects/macro-debugger/model/deriv-c.rkt b/collects/macro-debugger/model/deriv-c.rkt index 4da99e5..bc2791e 100644 --- a/collects/macro-debugger/model/deriv-c.rkt +++ b/collects/macro-debugger/model/deriv-c.rkt @@ -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 ) ;; (make-p:unknown ) diff --git a/collects/macro-debugger/model/deriv-parser.rkt b/collects/macro-debugger/model/deriv-parser.rkt index d238e74..965c488 100644 --- a/collects/macro-debugger/model/deriv-parser.rkt +++ b/collects/macro-debugger/model/deriv-parser.rkt @@ -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)] diff --git a/collects/macro-debugger/model/deriv-util.rkt b/collects/macro-debugger/model/deriv-util.rkt index d68afcc..953ead9 100644 --- a/collects/macro-debugger/model/deriv-util.rkt +++ b/collects/macro-debugger/model/deriv-util.rkt @@ -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))) diff --git a/collects/macro-debugger/model/reductions.rkt b/collects/macro-debugger/model/reductions.rkt index 7fe9d9a..9e3a7d4 100644 --- a/collects/macro-debugger/model/reductions.rkt +++ b/collects/macro-debugger/model/reductions.rkt @@ -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)) diff --git a/collects/tests/macro-debugger/tests/regression.rkt b/collects/tests/macro-debugger/tests/regression.rkt index 1be6b18..6b44695 100644 --- a/collects/tests/macro-debugger/tests/regression.rkt +++ b/collects/tests/macro-debugger/tests/regression.rkt @@ -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))) + ))