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)))
+ ))