~ chicken-core (chicken-5) 0556386ca0a4fa202fc37ecce862f0d560a61764


commit 0556386ca0a4fa202fc37ecce862f0d560a61764
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Wed May 14 10:30:20 2025 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Wed May 14 10:30:20 2025 +0200

    fix broken handling of "include" in "define-library" forms
    
    Also drop macroexpansion of forms, this must be done after the final module-form has
    been assembled, or definitions can't see (##sys#current-module) and will not
    properly handle exports.
    
    Repored by Anton Idukov

diff --git a/expand.scm b/expand.scm
index da9ff706..a329c4ba 100644
--- a/expand.scm
+++ b/expand.scm
@@ -1260,21 +1260,22 @@
                         (##sys#syntax-error 'define-library "invalid export specifier" spec name))))
             specs))
        (define (parse-imports specs)
-	 ;; XXX TODO: Should be import-for-syntax'ed as well?
-	 `(import ,@specs))
+         ;; XXX TODO: Should be import-for-syntax'ed as well?
+         `(import ,@specs))
        (define (process-includes fnames ci?)
-	 `(##core#begin
-	   ,@(map (lambda (fname)
+         `(##core#begin
+           ,@(map (lambda (fname)
                     (if (string? fname)
-                        `(##core#begin ,@(read-forms fname ci?)))
-		    (fname (##sys#syntax-error 'include "invalid include-filename" fname)))
-		  fnames)))
+                        `(##core#begin ,@(read-forms fname ci?))
+                        (##sys#syntax-error 'include "invalid filename"
+                          fname)))
+                  fnames)))
        (define (expand/begin e)
          (let ((e2 (expand e '())))
            (if (and (pair? e2) (eq? '##core#begin (car e2)))
                (cons '##core#begin (map expand/begin (cdr e2)))
                e2)))
-       (define (read-forms filename ci? #!optional (proc (lambda (x) (map expand/begin x))))
+       (define (read-forms filename ci?)
          (fluid-let ((##sys#default-read-info-hook
                        (let ((name 'chicken.compiler.support#read-info-hook))
                          (and (feature? 'compiling)
@@ -1283,13 +1284,13 @@
            (##sys#include-forms-from-file
                filename
                ##sys#current-source-filename ci?
-               (lambda (forms path) (proc forms)))))
+               (lambda (forms path) forms))))
        (define (process-include-decls fnames)
          (parse-decls
            (let loop ((fnames fnames) (all '()))
              (if (null? fnames)
                  (reverse all)
-                 (let ((forms (read-forms (car fnames) #t (lambda (x) x))))
+                 (let ((forms (read-forms (car fnames) #t)))
                    (loop (cdr fnames)
                          (append (reverse forms) all)))))))
        (define (fail spec)
Trap