From 89385ad3095d6c66bb6a72d0caed53778ad70124 Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Thu, 19 Nov 2009 04:39:21 +0000 Subject: [PATCH] macro-stepper: added second error location for set! svn: r16886 --- collects/macro-debugger/model/deriv-c.ss | 4 ++-- collects/macro-debugger/model/deriv-parser.ss | 5 +++-- collects/macro-debugger/model/reductions.ss | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/collects/macro-debugger/model/deriv-c.ss b/collects/macro-debugger/model/deriv-c.ss index 1e54bebddd..09eea0eff0 100644 --- a/collects/macro-debugger/model/deriv-c.ss +++ b/collects/macro-debugger/model/deriv-c.ss @@ -58,12 +58,12 @@ ;; (make-p:#%expression Deriv ?Stx) ;; (make-p:if Boolean Deriv Deriv Deriv) ;; (make-p:wcm Deriv Deriv Deriv) -;; (make-p:set! Rs Deriv) +;; (make-p:set! Rs ?Exn Deriv) ;; (make-p:set!-macro Rs Deriv) (define-struct (p:#%expression prule) (inner untag) #:transparent) (define-struct (p:if prule) (test then else) #:transparent) (define-struct (p:wcm prule) (key mark body) #:transparent) -(define-struct (p:set! prule) (id-resolves rhs) #:transparent) +(define-struct (p:set! prule) (id-resolves ?2 rhs) #:transparent) (define-struct (p:set!-macro prule) (deriv) #:transparent) ;; (make-p:#%app Stx LDeriv) diff --git a/collects/macro-debugger/model/deriv-parser.ss b/collects/macro-debugger/model/deriv-parser.ss index 17c14f5875..7bb6d7b4f7 100644 --- a/collects/macro-debugger/model/deriv-parser.ss +++ b/collects/macro-debugger/model/deriv-parser.ss @@ -486,8 +486,9 @@ (PrimSet (#:args e1 e2 rs) - [(prim-set! ! Resolves next (? EE)) - (make p:set! e1 e2 rs $2 $3 $5)] + ;; Unrolled to avoid shift/reduce + [(prim-set! ! resolve Resolves ! next (? EE)) + (make p:set! e1 e2 rs $2 (cons $3 $4) $5 $7)] [(prim-set! Resolves (? MacroStep) (? EE)) (make p:set!-macro e1 e2 rs #f ($3 e1 $2 $4))]) diff --git a/collects/macro-debugger/model/reductions.ss b/collects/macro-debugger/model/reductions.ss index c5fe47ba06..3cd9fa8308 100644 --- a/collects/macro-debugger/model/reductions.ss +++ b/collects/macro-debugger/model/reductions.ss @@ -235,10 +235,11 @@ (R [! ?1] [#:pattern ?form] [Expr ?form deriv])] - [(Wrap p:set! (e1 e2 rs ?1 id-rs rhs)) + [(Wrap p:set! (e1 e2 rs ?1 id-rs ?2 rhs)) (R [! ?1] [#:pattern (?set! ?var ?rhs)] [#:learn id-rs] + [! ?2] [Expr ?rhs rhs])] ;; Macros