[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #938: Feature Request: Load type files for units
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #938: Feature Request: Load type files for units |
Date: |
Thu, 08 Nov 2018 10:18:35 -0000 |
#938: Feature Request: Load type files for units
------------------------------------+-------------------------
Reporter: megane | Owner: felix
Type: enhancement | Status: assigned
Priority: minor | Milestone: 5.1
Component: compiler | Version: 4.8.x
Resolution: | Keywords: types units
Estimated difficulty: medium |
------------------------------------+-------------------------
Comment (by megane):
I think this issue was me confusing `-I` as an option to define additional
paths CHICKEN should use to look for __modules__, when it's actually for
the `include` form only.
CHICKEN only looks for modules in the egg repository and current
directory. For modules in the current directory it does __not__
automatically import `.types` or `.inline` files. You have to use
`-consult-types-file` and `-consult-inline-file` for those, respectively.
Maybe the `-I` could be made to specify additional paths to consult
modules from, if that makes sense.
I'm OK if this issue is closed as `invalid`, though.
The following shows that `.types` files are not automatically loaded.
{{{
$ ./run.sh
::::::::::::::
src/main.scm
::::::::::::::
(cond-expand
(chicken-5 (import (chicken base))
(import mod))
(else (import chicken)
(use mod)))
(print "--- main ---")
(compiler-typecase (foo 1)
(symbol (print 'ok))
(* (error "was not symbol")))
::::::::::::::
src/mod.scm
::::::::::::::
(module
mod
(foo)
(import scheme)
(cond-expand
(chicken-5 (import (chicken base) (chicken type)))
(else (import chicken)))
(: foo (* -> symbol))
(define (foo x)
(if (fixnum? x)
'fixnum
'not-fixnum))
)
::::::::::::::
run.sh
::::::::::::::
#!/usr/bin/env bash
set -e
set -o pipefail
more src/*.scm run.sh | cat
echo "### BUILD ###"
rm -rf build
mkdir -p build
cd build
csc -s -J -O3 -ot mod.types ../src/mod.scm -o mod.so
csc -O3 ../src/main.scm -o main
more *.import.scm *.types | cat
./main
### BUILD ###
::::::::::::::
mod.import.scm
::::::::::::::
;;;; mod.import.scm - GENERATED BY CHICKEN 5.0.0rc4 -*- Scheme -*-
(##sys#register-compiled-module
'mod
'mod
(scheme#list)
'((foo . mod#foo))
(scheme#list)
(scheme#list))
;; END OF FILE
::::::::::::::
mod.types
::::::::::::::
; GENERATED BY CHICKEN 5.0.0rc4 FROM ../src/mod.scm
(mod#foo (#(procedure) mod#foo (*) symbol))
; END OF FILE
--- main ---
Error: was not symbol
Call history:
../src/main.scm:3: chicken.load#load-extension
../src/main.scm:7: chicken.base#print
../src/main.scm:8: mod#foo
../src/main.scm:10: chicken.base#error <--
}}}
--
Ticket URL: <https://bugs.call-cc.org/ticket/938#comment:4>
CHICKEN Scheme <https://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Chicken-janitors] #938: Feature Request: Load type files for units,
Chicken Trac <=