propagate source info manually in let (issue #835)

This commit is contained in:
Alex Shinn 2022-05-29 08:03:32 +09:00
parent 42332bb04f
commit 3c4ace142c

View file

@ -208,7 +208,8 @@
(qq (cadr x) (- d 1))))) (qq (cadr x) (- d 1)))))
((compare (rename 'unquote-splicing) (car x)) ((compare (rename 'unquote-splicing) (car x))
(if (<= d 0) (if (<= d 0)
(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))
(list (rename 'list) (list (rename 'quote) 'unquote-splicing) (list (rename 'list) (list (rename 'quote) 'unquote-splicing)
(qq (cadr x) (- d 1))))) (qq (cadr x) (- d 1)))))
((compare (rename 'quasiquote) (car x)) ((compare (rename 'quasiquote) (car x))
@ -252,7 +253,10 @@
,@(cdr (cddr expr))))) ,@(cdr (cddr expr)))))
(,(cadr expr) ,@vars))) (,(cadr expr) ,@vars)))
,@vals) ,@vals)
`((,(rename 'lambda) ,vars ,@(cddr expr)) ,@vals))) ((lambda (res)
(pair-source-set! res (pair-source expr))
res)
`((,(rename 'lambda) ,vars ,@(cddr expr)) ,@vals))))
(map car bindings) (map car bindings)
(map cadr bindings)) (map cadr bindings))
(error "bad let syntax" expr))) (error "bad let syntax" expr)))