preserving source info in quasiquote (restores line number reporting for (chibi test))

This commit is contained in:
Alex Shinn 2017-05-07 14:26:49 +09:00
parent 37178eacd5
commit 1e25dda078

View file

@ -8,11 +8,12 @@
(define (cddr x) (cdr (cdr x))) (define (cddr x) (cdr (cdr x)))
(define (cons-source kar kdr source) (define (cons-source kar kdr source)
((lambda (pair) ((lambda (pair source)
(if (pair? source) (if (pair? source)
(pair-source-set! pair (pair-source source))) (pair-source-set! pair (pair-source source)))
pair) pair)
(cons kar kdr))) (cons kar kdr)
(strip-syntactic-closures source)))
;; basic utils ;; basic utils
@ -194,7 +195,8 @@
(cadr (car x)) (cadr (car x))
(list (rename 'append) (cadr (car x)) (qq (cdr x) d)))) (list (rename 'append) (cadr (car x)) (qq (cdr x) d))))
(else (else
(list (rename 'cons) (qq (car x) d) (qq (cdr x) d))))) (list (rename 'cons-source) (qq (car x) d) (qq (cdr x) d)
(list (rename 'quote) x)))))
((vector? x) (list (rename 'list->vector) (qq (vector->list x) d))) ((vector? x) (list (rename 'list->vector) (qq (vector->list x) d)))
((if (identifier? x) #t (null? x)) (list (rename 'quote) x)) ((if (identifier? x) #t (null? x)) (list (rename 'quote) x))
(else x))) (else x)))