Subject: [R7RS] cond-expand in define-library forms
From: Marc Nieper-Wißkirchen <[email-masked]>
To: [email-masked]
Date: Fri, 27 Mar 2020 15:17:45 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

The following valid R7RS library definition is not handled correctly by
Guile:

(define-library (guile-test)
  (export fold)
  (cond-expand
    ((library (scheme list))
     (import (scheme list)))
    ((library (srfi srfi-1))
     (import (srfi srfi-1)))))

This is what I get:

$ guile --r7rs -L .
GNU Guile 3.0.1
...
> (import (guile-test))
While compiling expression:
no code for module (scheme list)
>

Thus, the cond-expand library declaration does not seem to be handled
correctly. Other experiments with cond-expand also show strange behaviors:

(define-library (guile-test)
  (export foo)
  (cond-expand
    (guile
     (import (scheme base))))
  (begin
    (define foo 42)))

> (import (guile-test))
While compiling expression:
Syntax error:
unknown location: source expression failed to match any pattern in form
(((begin (define foo 42))))

--

Marc