fix debugger for syntax taints
This commit is contained in:
parent
68d49e9f59
commit
9bee07b7c0
|
@ -159,14 +159,18 @@
|
|||
(define (top-level-annotate stx)
|
||||
(kernel:kernel-syntax-case/phase
|
||||
stx (namespace-base-phase)
|
||||
[(module identifier name (plain-module-begin . module-level-exprs))
|
||||
(with-syntax ([(module . _) stx])
|
||||
(quasisyntax/loc stx (module identifier name
|
||||
(plain-module-begin
|
||||
#,@(map (lambda (e) (module-level-expr-iterator
|
||||
e (list (syntax-e #'identifier)
|
||||
(syntax-source #'identifier))))
|
||||
(syntax->list #'module-level-exprs))))))]
|
||||
[(module identifier name mb)
|
||||
(syntax-case (disarm #'mb) ()
|
||||
[(plain-module-begin . module-level-exprs)
|
||||
(with-syntax ([(module . _) stx])
|
||||
(quasisyntax/loc stx (module identifier name
|
||||
#,(rearm
|
||||
#'mb
|
||||
#`(plain-module-begin
|
||||
#,@(map (lambda (e) (module-level-expr-iterator
|
||||
e (list (syntax-e #'identifier)
|
||||
(syntax-source #'identifier))))
|
||||
(syntax->list #'module-level-exprs)))))))])]
|
||||
[else-stx
|
||||
(general-top-level-expr-iterator stx #f)]))
|
||||
|
||||
|
@ -238,7 +242,7 @@
|
|||
|
||||
(define (let/rec-values-annotator letrec?)
|
||||
(kernel:kernel-syntax-case
|
||||
expr #f
|
||||
(disarm expr) #f
|
||||
[(label (((var ...) rhs) ...) . bodies)
|
||||
(let* ([new-bindings (apply append
|
||||
(map syntax->list
|
||||
|
@ -305,9 +309,10 @@
|
|||
#,@new-bodies))))]))
|
||||
|
||||
(define annotated
|
||||
(syntax-rearm
|
||||
(rearm
|
||||
expr
|
||||
(kernel:kernel-syntax-case
|
||||
(syntax-disarm expr code-insp) #f
|
||||
(disarm expr) #f
|
||||
[var-stx (identifier? (syntax var-stx))
|
||||
(let ([binder (and (syntax-original? expr)
|
||||
(srfi:member expr bound-vars free-identifier=?))])
|
||||
|
@ -378,8 +383,7 @@
|
|||
[(#%variable-reference . _) expr]
|
||||
|
||||
[else (error 'expr-syntax-object-iterator "unknown expr: ~a"
|
||||
(syntax->datum expr))])
|
||||
expr))
|
||||
(syntax->datum expr))])))
|
||||
|
||||
(if annotate-break?
|
||||
(break-wrap
|
||||
|
@ -391,4 +395,7 @@
|
|||
|
||||
(values (top-level-annotate stx) (hash-map breakpoints (lambda (k v) k)))))
|
||||
|
||||
(define (disarm stx) (syntax-disarm stx code-insp))
|
||||
(define (rearm old new) (syntax-rearm new old))
|
||||
|
||||
(define code-insp (current-code-inspector)))
|
||||
|
|
Loading…
Reference in New Issue
Block a user