Hi. I have encountered a puzzling case. It can be demonstrated with
the following minimal example:
File `module.scm':
(module module (get-kw)
(import scheme
(chicken base))
(define (get-kw)
:prefix-kw))
File `main.scm':
(module main (main)
(import
scheme
(chicken base)
module)
(define (main)
(print (get-kw)))
(main))
Compile and run as follows:
csc -K prefix -J -e -c -o module.o module.scm -unit module
csc -K prefix -c -o main.o main.scm
csc -K prefix -o test main.o module.o
./test
Result:
Error: Module `module' has unresolved identifiers
Unknown identifier `:prefix-kw'
In procedure `get-kw'
Call history:
<syntax> (chicken.load#load-unit (##core#quote library)
(##core#quote #f) (##core#quote #f))
<syntax> (##core#quote library)
<syntax> (##core#quote #f)
<syntax> (##core#quote #f)
<syntax> (##core#require library chicken.base)
<syntax> (chicken.load#load-unit (##core#quote library)
(##core#quote #f) (##core#quote #f))
<syntax> (##core#quote library)
<syntax> (##core#quote #f)
<syntax> (##core#quote #f)
<syntax> (define (get-kw) |:prefix-kw|)
<syntax> (##core#begin (##core#ensure-toplevel-definition
get-kw) (##core#set! get-kw (##core#lambda () |:pre...
<syntax> (##core#ensure-toplevel-definition get-kw)
<syntax> (##core#undefined)
<syntax> (##core#set! get-kw (##core#lambda () |:prefix-kw|))
<syntax> (##core#lambda () |:prefix-kw|)
<syntax> [get-kw] (##core#begin |:prefix-kw|) <--
If I use the regular keyword form, i.e. #:prefix-kw, it works as
expected. If I don't declare modules, it also works as expected.
I don't understand what's happening here. Possibly a bug?
Cheers,
Alexey.