mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
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>
This commit is contained in:
parent
e8a41aee29
commit
158da6966b
1 changed files with 4 additions and 1 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue