bug when combining include-library-declarations with cond-expand
Peter McGoron via Chicken-users <[email protected]>
| Newsgroups | gmane.lisp.scheme.chicken |
|---|---|
| Message-ID | <[email protected]> |
I am getting an error when trying to load a file with R7RS library
declarations that includes cond-expand clauses.
Here is an example: two files
test.scm:
(cond-expand
(chicken (begin (define is-chicken? #t)))
(else (begin (define is-chicken #f))))
test.sld:
(import r7rs)
(define-library (test)
(import (scheme base))
(include-library-declarations "test.scm")
(export is-chicken?))
Trying to load it with `csi test.sld` gives
> Error: (define-library) during expansion of (define-library ...) - invalid library declaration: ((##core#begin (##core#begin (define is-chicken? #t))))
>
> Call history:
>
> <syntax> (##core#quote #f)
> <eval> (chicken.load#load-unit (##core#quote library) (##core#quote #f) (##core#quote #f))
> <eval> (chicken.load#load-unit (##core#quote library) (##core#quote #f) (##core#quote #f))
> <eval> (chicken.load#load-unit (##core#quote expand) (##core#quote #f) (##core#quote #f))
> <syntax> (import-syntax chicken.base chicken.fixnum chicken.platform chicken.flonum (except scheme string-cop...
> <syntax> (##core#undefined)
> <syntax> (##core#undefined)
> <syntax> (##core#undefined)
> test.sld:1 (##core#begin (##core#require r7rs r7rs))
> test.sld:1 (##core#require r7rs r7rs)
> <syntax> (chicken.load#load-extension (##core#quote r7rs) (##core#quote #t) (##core#quote #f))
> <syntax> (##core#quote r7rs)
> <syntax> (##core#quote #t)
> <syntax> (##core#quote #f)
> <eval> (chicken.load#load-extension (##core#quote r7rs) (##core#quote #t) (##core#quote #f))
> test.sld:3 (define-library (test) (import (scheme base)) (include-library-declarations "test.scm") (export is-c... <--
The following, which should be equivalent, works:
test2.sld:
(import r7rs)
(define-library (test)
(import (scheme base))
(cond-expand
(chicken (begin (define is-chicken? #t)))
(else (begin (define is-chicken #f))))
(export is-chicken?))
csi test2.sld:
(import (test))
is-chicken? ; => #t
----------------------------------------------------------
Chicken Version: 5.4.0 (compiled from release tarball)
OS: Alpine Linux x86_64
CC: GCC Alpine 13.2.1_git20240309 (using musl libc)