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)))))
((compare (rename 'unquote-splicing) (car x))
(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)
(qq (cadr x) (- d 1)))))
((compare (rename 'quasiquote) (car x))
@ -252,7 +253,10 @@
,@(cdr (cddr expr)))))
(,(cadr expr) ,@vars)))
,@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 cadr bindings))
(error "bad let syntax" expr)))