~ chicken-core (chicken-5) 0867c40abc61ffa2194209ac97bcc6a9d7362058


commit 0867c40abc61ffa2194209ac97bcc6a9d7362058
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Dec 4 13:00:23 2024 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Wed Dec 4 13:00:23 2024 +0100

    adapt to proper handling of ##sys#current-source-filename, which was not yet applied in c6

diff --git a/core.scm b/core.scm
index 0482cadf..0459a214 100644
--- a/core.scm
+++ b/core.scm
@@ -634,15 +634,17 @@
 		 (print "\n;; END OF FILE"))))) ) )
 
    (define (include-file x ci e dest ldest h ln tl?)
-       (##sys#include-forms-from-file
-              (cadr x) (caddr x) ci
-              (lambda (forms)
-                (walk (if (pair? (cdddr x)) ; body?
-                        (canonicalize-body/ln ln
-                                              (append forms (cadddr x))
-                                              compiler-syntax-enabled)
-                        `(##core#begin ,@forms))
-                    e dest ldest h ln tl?))))
+     (##sys#include-forms-from-file
+       (cadr x) (caddr x) ci
+       (lambda (forms path)
+         (let ((code (if (pair? (cdddr x)) ; body?
+                         (canonicalize-body/ln
+                           ln
+                           (append forms (cadddr x))
+                           compiler-syntax-enabled)
+                         `(##core#begin ,@forms))))
+           (fluid-let ((##sys#current-source-filename path))
+             (walk code e dest ldest h ln tl?))))))
 
   (define (walk x e dest ldest h outer-ln tl?)
     (cond ((keyword? x) `(quote ,x))
diff --git a/eval.scm b/eval.scm
index faf8face..64a9bbda 100644
--- a/eval.scm
+++ b/eval.scm
@@ -141,12 +141,14 @@
       (define (include-file x ci e tf cntr tl?)
         (##sys#include-forms-from-file
           (cadr x) (caddr x) ci
-	  (lambda (forms)
-            (compile (if (pair? (cdddr x)) ; body?
-                         (##sys#canonicalize-body (append forms (cadddr x))
-                                                  (##sys#current-environment))
-                         `(##core#begin ,@forms))
-                     e #f tf cntr tl?))))
+	  (lambda (forms path)
+            (let ((code (if (pair? (cdddr x)) ; body?
+                            (##sys#canonicalize-body
+                              (append forms (cadddr x))
+                              (##sys#current-environment))
+                            `(##core#begin ,@forms))))
+	      (fluid-let ((##sys#current-source-filename path))
+                (compile code e #f tf cntr tl?))))))
 
       (define (compile x e h tf cntr tl?)
 	(cond ((keyword? x) (lambda v x))
@@ -1195,12 +1197,15 @@
 	  (print "; including " path " ..."))
 	(call-with-input-file path
 	  (lambda (in)
-            (##sys#setislot in 13 (not ci))
-	    (fluid-let ((##sys#current-source-filename path))
-               (do ((x (read-with-source-info in) (read-with-source-info in))
-                    (xs '() (cons x xs)))
-                   ((eof-object? x)
-                    (k (reverse xs)))))))))))
+	    (let ((oldci (##sys#slot in 13)))
+  	     (k (fluid-let ((##sys#current-source-filename path))
+                 (##sys#setislot in 13 (not ci))
+                 (do ((x (read-with-source-info in) (read-with-source-info in))
+                      (xs '() (cons x xs)))
+                     ((eof-object? x)
+                      (##sys#setislot in 13 oldci)
+                      (reverse xs))))
+                path))))))))
 
 
 ;;; Extensions:
diff --git a/expand.scm b/expand.scm
index 2f3521e6..bb16f724 100644
--- a/expand.scm
+++ b/expand.scm
@@ -1283,7 +1283,7 @@
            (##sys#include-forms-from-file
                filename
                ##sys#current-source-filename ci?
-               (lambda (forms) (map expand/begin forms)))))
+               (lambda (forms path) (map expand/begin forms)))))
        (define (process-include-decls fnames)
 	 (parse-decls (append-map (lambda (fname) (read-forms fname #t)) fnames)))
        (define (fail spec)
Trap