~ 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