Opened 12 years ago
Last modified 12 months ago
#938 assigned enhancement
Feature Request: Load type files for units
Reported by: | megane | Owned by: | felix winkelmann |
---|---|---|---|
Priority: | minor | Milestone: | 6.0.0 |
Component: | compiler | Version: | 4.8.x |
Keywords: | types units | Cc: | |
Estimated difficulty: | medium |
Description
Currently type files for units not installed in the repository are not loaded.
I've attached a patch that does something like this, but it's just a quick hack that works for my needs.
You should probably use ##sys#resolve-include-filename
to find the types file, like it's used to find the inline files.
Attachments (2)
Change History (10)
Changed 12 years ago by
Attachment: | load-unit-type-files.patch added |
---|
comment:1 Changed 12 years ago by
Owner: | set to felix winkelmann |
---|---|
Status: | new → assigned |
Changed 12 years ago by
Attachment: | search-for-types-files-from-include-paths.patch added |
---|
a better hack
comment:2 Changed 9 years ago by
Milestone: | someday → 5.1 |
---|
Seems to be somehow related to the new unit/module handling in 5.0
comment:3 Changed 8 years ago by
Estimated difficulty: | → medium |
---|
comment:4 Changed 6 years ago by
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 <--
comment:5 Changed 6 years ago by
Milestone: | 5.1 → 5.2 |
---|
comment:6 Changed 5 years ago by
Milestone: | 5.2 → 5.3 |
---|
comment:7 Changed 4 years ago by
Milestone: | 5.3 → 5.4 |
---|
comment:8 Changed 12 months ago by
Milestone: | 5.4 → 6.0.0 |
---|
a hack