From 3c4ace142c3328bd446dae6b1fa637ec22f1baec Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sun, 29 May 2022 08:03:32 +0900 Subject: [PATCH] propagate source info manually in let (issue #835) --- lib/init-7.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/init-7.scm b/lib/init-7.scm index 44d6f8ed..b14b0540 100644 --- a/lib/init-7.scm +++ b/lib/init-7.scm @@ -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)))