From 0f0dd65d83ca836af798d132f49b0986d1d142d0 Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Mon, 18 Jul 2011 05:22:18 -0600 Subject: [PATCH] macro-stepper: update for new letrec-syntaxes+values expansion --- collects/macro-debugger/model/deriv-c.rkt | 3 ++- collects/macro-debugger/model/deriv-parser.rkt | 4 ++-- collects/macro-debugger/model/reductions.rkt | 8 +++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/collects/macro-debugger/model/deriv-c.rkt b/collects/macro-debugger/model/deriv-c.rkt index 89308a538b..7d142141a9 100644 --- a/collects/macro-debugger/model/deriv-c.rkt +++ b/collects/macro-debugger/model/deriv-c.rkt @@ -120,7 +120,8 @@ (define-struct (lderiv node) (?1 derivs) #:transparent) ;; A BDeriv is -;; (make-bderiv (list-of BRule) (U 'list 'letrec) LDeriv) +;; (make-bderiv (list-of BRule) (U 'list 'letrec) LDeriv/Deriv) +;; pass2 is Deriv if 'letrec, LDeriv if 'list (define-struct (bderiv node) (pass1 trans pass2) #:transparent) ;; A BRule is one of diff --git a/collects/macro-debugger/model/deriv-parser.rkt b/collects/macro-debugger/model/deriv-parser.rkt index ce65cadcda..afa8791461 100644 --- a/collects/macro-debugger/model/deriv-parser.rkt +++ b/collects/macro-debugger/model/deriv-parser.rkt @@ -504,8 +504,8 @@ [(enter-block (? BlockPass1) block->list (? EL)) (make bderiv $1 (and $4 (wlderiv-es2 $4)) $2 'list $4)] - [(enter-block BlockPass1 block->letrec (? EL)) - (make bderiv $1 (and $4 (wlderiv-es2 $4)) + [(enter-block BlockPass1 block->letrec (? EE)) + (make bderiv $1 (and $4 (list (wderiv-e2 $4))) $2 'letrec $4)]) ;; BlockPass1 Answer = (list-of BRule) diff --git a/collects/macro-debugger/model/reductions.rkt b/collects/macro-debugger/model/reductions.rkt index a6c104e9bb..2d05d7b924 100644 --- a/collects/macro-debugger/model/reductions.rkt +++ b/collects/macro-debugger/model/reductions.rkt @@ -506,10 +506,12 @@ [#:pass2] [#:if (eq? trans 'letrec) (;; FIXME: foci (difficult because of renaming?) - [#:walk (wlderiv-es1 pass2) 'block->letrec]) + [#:walk (list (wderiv-e1 pass2)) 'block->letrec] + [#:pattern (?expr)] + [Expr ?expr pass2]) ([#:rename ?block (wlderiv-es1 pass2)] - [#:set-syntax (wlderiv-es1 pass2)])] - [List ?block pass2])] + [#:set-syntax (wlderiv-es1 pass2)] + [List ?block pass2])])] [#f (R)]))