This is the mail archive of the kawa@sources.redhat.com mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: defmacro: Null pointer exceptions with compiled files


On Sun, 2004-05-30 at 16:16, Chris Dean wrote:
> Found it.  Try module-static true:
> 
>     (module-name <incanddec>)
>     (module-static #t)
> 
>     (module-export inc dec)
>     ...

Note that type inference also appears to be faulty.

inc-and-dec.scm:

(module-name <IncAndDec>)
(module-static #t)
(module-export inc dec)

(defmacro inc (var)
  `(begin
     (set! ,var (+ ,var 1))
     ,var))

(defmacro dec (var)
  `(begin
     (set! ,var (- var 1))
     ,var))


gensym.scm:

(module-name <Gensym>)
(module-static #t)
(module-export gensym)

(define gensym-counter 0)

(define (gensym #!optional name)
  (string->symbol
   (string-append "gensym:#"
                  (number->string (inc gensym-counter))
                  (if name name ""))))


After -C compilation and the requires, (gensym "adam") produces:
Invalid parameter, was: null
java.lang.ClassCastException

If I replace (inc gensym-counter) with:
(begin (set! gensym-counter (+ gensym-counter 1)) gensym-counter))

And -C recompile then the gensym function starts working.

Regards,
Adam


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]