www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit d19c2208c9b99c64f4b65e82c9ff4bd7af4c8633
parent 15ad6d8edb1ed55c9e2c36e3b1328bfa1d95bd58
Author: Ryan Culpepper <ryanc@racket-lang.org>
Date:   Mon, 18 Jul 2011 05:22:18 -0600

macro-stepper: update for new letrec-syntaxes+values expansion

original commit: 0f0dd65d83ca836af798d132f49b0986d1d142d0

Diffstat:
Mcollects/macro-debugger/model/deriv-c.rkt | 3++-
Mcollects/macro-debugger/model/deriv-parser.rkt | 4++--
Mcollects/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 @@ -120,7 +120,8 @@ (define-struct (lderiv node) (?1 derivs) #:transparent) ;; A BDeriv is -;; (make-bderiv <Node(Stxs)> (list-of BRule) (U 'list 'letrec) LDeriv) +;; (make-bderiv <Node(Stxs)> (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 @@ -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 @@ -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)]))