provide a more helpful message on failure of syntax traversal in the stepper
This commit is contained in:
parent
50aae13378
commit
784bda15a8
|
@ -405,11 +405,27 @@
|
|||
[(both-r) (lambda (stx a b) b)]
|
||||
[else (error 'up-mapping "unexpected symbol in up-mapping (2): ~v" fn)])]))
|
||||
|
||||
;; like car, but provide a useful error message if given a non-pair
|
||||
(define (noisy-car arg)
|
||||
(cond [(pair? arg) (car arg)]
|
||||
[else (raise-argument-error 'noisy-car "pair in syntax traversal" 0 arg)]))
|
||||
|
||||
;; like cdr, but provide a useful error message if given a non-pair
|
||||
(define (noisy-cdr arg)
|
||||
(cond [(pair? arg) (cdr arg)]
|
||||
[else (raise-argument-error 'noisy-car "pair in syntax traversal" 0 arg)]))
|
||||
|
||||
;; like syntax-e, but provide a useful error message if given a non-syntax-object
|
||||
(define (noisy-syntax-e arg)
|
||||
(cond [(syntax? arg) (syntax-e arg)]
|
||||
[else (raise-argument-error 'noisy-car "syntax object in syntax traversal" 0 arg)]))
|
||||
|
||||
;; map a symbol in '(car cdr syntax-e) to the appropriate projector
|
||||
(define (down-mapping fn)
|
||||
(case fn
|
||||
[(car) car]
|
||||
[(cdr) cdr]
|
||||
[(syntax-e) syntax-e]
|
||||
[(car) noisy-car]
|
||||
[(cdr) noisy-cdr]
|
||||
[(syntax-e) noisy-syntax-e]
|
||||
[else (error 'down-mapping "called on something other than 'car, 'cdr, & 'syntax-e: ~v" fn)]))
|
||||
|
||||
(define (update fn-list val fn traversal)
|
||||
|
|
Loading…
Reference in New Issue
Block a user