CRUNCH in CHICKEN issues

Diogo via Chicken-users <[email protected]>
Newsgroups gmane.lisp.scheme.chicken
Message-ID <[email protected]>
Dear mailing list,

some little issues appeared in my experiments with CRUNCH trunk/v0.99 and maybe
somebody can help me.

== 1. Embed

I am trying to embed crunch modules in test cases written in chicken like this:

    ; test.scm
    (import (scheme base) test crunch)
    (crunch (include "something-in-crunch.scm"))
    (import something-in-crunch)
    ; chicken tests ...

But that fails. Here is a minimal example showing the issue:

    $ cat crunch-embed.scm
    (import (scheme base)
            (scheme write)
            crunch)
    (crunch
        (module crunch-example
                    (foo)
                    (import (scheme base))
                    (define (foo) 123)))
    (import crunch-example)
    (display (foo))
    (newline)

    $ csc crunch-embed.scm
    $ ./crunch-embed

    Error: unbound variable: crunch-example#foo

        Call history:

        crunch-embed.scm:1: chicken.load#load-extension
        crunch-embed.scm:13: crunch-example#foo         <--

The symbol foo is being exported in the module crunch-example, why can't I
access it in the top level? Am I missing something?

Note that foo is in the binary:

    $ nm crunch-embed | grep foo
    00000000004010f4 T foo
    00000000006023a0 D foo___


== 2. (error)

(error ...) does not do what I'd expect. Consider this example:

    $ cat crunch-error.scm
    (import (scheme base))
    (define (main)
        (error 'check "something"))
    (cond-expand ((not crunched) (main)) (else))

When executing with CHICKEN I get the expected error:

    $ csc crunch-error.scm -o err
    $ ./err

    Error: (check) something

        Call history:

        crunch-error.scm:4: main
        crunch-error.scm:3: chicken.base#error          <--

With CRUNCH, I can't compile it:

    $ chicken-crunch crunch-error.scm -o err.c
    Error: crunch-error.scm:3: literal `check' has unrepresentable type
    Error: crunch-error.scm:3: argument types in procedure call `(chicken.base#error (quote <check>) (quote "something"))' do not match.
     call: (procedure (string #!optional string ? ?) noreturn)
     expected: (procedure (string #!optional ? ? ?) noreturn)

The documentations says (error S #!optional ...). I assume S means symbol.

== 3. Emit wrappers

The option -emit-wrappers is not working. The case in `crunch-driver.scm` seems
to have a weird form, so I changed it as follows:

    -          ((("-emit-wrappers" fname) . more)
    +          (("-emit-wrappers" fname . more)

But the file passed to -emit-wrappers ends up empty. How to use this option
properly? What I am trying is again to compile the module with crunch and
import it later in chicken.

Thanks!

Cheers,
-Diogo



--
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.