chicken-janitors
[Top][All Lists]
Advanced

[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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]