summaryrefslogtreecommitdiff
path: root/module
diff options
context:
space:
mode:
authorMihail Iosilevich <yosik@paranoid.email>2022-06-12 13:13:32 +0300
committerLudovic Courtès <ludo@gnu.org>2022-06-16 09:36:31 +0200
commit158da6966b9ea2e949ae714863861d4f5bc5a56e (patch)
tree3739d5b7ddd24447d9ae0d8f6e93e3162193bd98 /module
parente8a41aee2932d1332cd4010398c41be56d4c4be3 (diff)
downloadguile-158da6966b9ea2e949ae714863861d4f5bc5a56e.tar.gz
Allow (library ...) form in cond-expand inside R7RS define-library.
Guile (3.0.8) reports a compilation error when cond-expand tries to check existence of a missing library: scheme@(guile-user)> (define-library (test) (cond-expand ((library (scheme sort)) (import (scheme sort))))) While compiling expression: no code for module (scheme sort) It looks like bug #40252 was not fully eliminated. Also, (library ...) cannot handle module names like (srfi 1), though (import (srfi 1)) works fine. For example, this code fails: scheme@(guile-user)> (define-library (test) (cond-expand ((library (srfi 1)) (import (srfi 1))))) While compiling expression: In procedure symbol->string: Wrong type argument in position 1 (expecting symbol): 1 There are probably other cases when (library ...) and (import ...) does not work identically: (library ...) uses resolve-interface while (import ...) uses resolve-r6rs-interface. This patch fixes both issues. * module/ice-9/r7rs-libraries.scm (define-library): Replace 'resolve-interface' call by 'resolve-r6rs-interface', wrapped in 'cond-expand'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'module')
-rw-r--r--module/ice-9/r7rs-libraries.scm5
1 files changed, 4 insertions, 1 deletions
diff --git a/module/ice-9/r7rs-libraries.scm b/module/ice-9/r7rs-libraries.scm
index c4c4da22f..63a300a26 100644
--- a/module/ice-9/r7rs-libraries.scm
+++ b/module/ice-9/r7rs-libraries.scm
@@ -55,7 +55,10 @@
((not req)
(not (has-req? #'req)))
((library lib-name)
- (->bool (resolve-interface (syntax->datum #'lib-name))))
+ (->bool
+ (false-if-exception
+ (resolve-r6rs-interface
+ (syntax->datum #'lib-name)))))
(id
(identifier? #'id)
;; FIXME: R7RS (features) isn't quite the same as