macro-stepper: added second error location for set!
svn: r16886 original commit: 89385ad3095d6c66bb6a72d0caed53778ad70124
This commit is contained in:
parent
0aaf1e3a12
commit
0bdb59a7c2
|
@ -58,12 +58,12 @@
|
||||||
;; (make-p:#%expression <Base> Deriv ?Stx)
|
;; (make-p:#%expression <Base> Deriv ?Stx)
|
||||||
;; (make-p:if <Base> Boolean Deriv Deriv Deriv)
|
;; (make-p:if <Base> Boolean Deriv Deriv Deriv)
|
||||||
;; (make-p:wcm <Base> Deriv Deriv Deriv)
|
;; (make-p:wcm <Base> Deriv Deriv Deriv)
|
||||||
;; (make-p:set! <Base> Rs Deriv)
|
;; (make-p:set! <Base> Rs ?Exn Deriv)
|
||||||
;; (make-p:set!-macro <Base> Rs Deriv)
|
;; (make-p:set!-macro <Base> Rs Deriv)
|
||||||
(define-struct (p:#%expression prule) (inner untag) #:transparent)
|
(define-struct (p:#%expression prule) (inner untag) #:transparent)
|
||||||
(define-struct (p:if prule) (test then else) #:transparent)
|
(define-struct (p:if prule) (test then else) #:transparent)
|
||||||
(define-struct (p:wcm prule) (key mark body) #: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)
|
(define-struct (p:set!-macro prule) (deriv) #:transparent)
|
||||||
|
|
||||||
;; (make-p:#%app <Base> Stx LDeriv)
|
;; (make-p:#%app <Base> Stx LDeriv)
|
||||||
|
|
|
@ -486,8 +486,9 @@
|
||||||
|
|
||||||
(PrimSet
|
(PrimSet
|
||||||
(#:args e1 e2 rs)
|
(#:args e1 e2 rs)
|
||||||
[(prim-set! ! Resolves next (? EE))
|
;; Unrolled to avoid shift/reduce
|
||||||
(make p:set! e1 e2 rs $2 $3 $5)]
|
[(prim-set! ! resolve Resolves ! next (? EE))
|
||||||
|
(make p:set! e1 e2 rs $2 (cons $3 $4) $5 $7)]
|
||||||
[(prim-set! Resolves (? MacroStep) (? EE))
|
[(prim-set! Resolves (? MacroStep) (? EE))
|
||||||
(make p:set!-macro e1 e2 rs #f ($3 e1 $2 $4))])
|
(make p:set!-macro e1 e2 rs #f ($3 e1 $2 $4))])
|
||||||
|
|
||||||
|
|
|
@ -235,10 +235,11 @@
|
||||||
(R [! ?1]
|
(R [! ?1]
|
||||||
[#:pattern ?form]
|
[#:pattern ?form]
|
||||||
[Expr ?form deriv])]
|
[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]
|
(R [! ?1]
|
||||||
[#:pattern (?set! ?var ?rhs)]
|
[#:pattern (?set! ?var ?rhs)]
|
||||||
[#:learn id-rs]
|
[#:learn id-rs]
|
||||||
|
[! ?2]
|
||||||
[Expr ?rhs rhs])]
|
[Expr ?rhs rhs])]
|
||||||
|
|
||||||
;; Macros
|
;; Macros
|
||||||
|
|
Loading…
Reference in New Issue
Block a user