This is the mail archive of the
kawa@sources.redhat.com
mailing list for the Kawa project.
Re: kawa 1.6.98 problem
Per Bothner writes:
> Dr. M. Luedde wrote:
> > (define (f x)
> > (let ( (y 0) )
> > (let loop ()
> > (let () (if #f (loop)))
> > ;; uncomment below, then problem disappears.
> > ;; '()
> > )
> > (set-cdr! x y)))
> >
> > With `--full-tailcalls' this leads to a "java.lang.Error: attempting
> > to push dead variable". Inserting the spurious empty list, as indicated,
> > removes the problem.
>
> I just tried it:
> java kawa.repl --full-tailcalls -C /tmp/foo.scm
>
> and it compiles without errror.
Right, we have
D:\tmp> java kawa.repl --full-tailcalls -C d:/tmp/foo.scm
(compiling d:/tmp/foo.scm)
D:\tmp>
but on the other hand
D:\tmp> java -classpath d:\Tools\kawa\kawa.jar kawa.repl --full-tailcalls
#|kawa:1|# (load "d:/tmp/foo.scm")
java.lang.Error: attempting to push dead variable
at gnu.bytecode.CodeAttr.emitLoad(CodeAttr.java:1020)
at gnu.expr.ApplyExp.compile(ApplyExp.java:333)
at gnu.expr.ApplyExp.compile(ApplyExp.java:104)
at gnu.expr.Expression.compileNotePosition(Expression.java:82)
at gnu.expr.Expression.compileWithPosition(Expression.java:69)
at gnu.expr.BeginExp.compile(BeginExp.java:80)
at gnu.expr.Expression.compileWithPosition(Expression.java:72)
at gnu.expr.LetExp.compile(LetExp.java:73)
at gnu.expr.Expression.compileNotePosition(Expression.java:82)
at gnu.expr.Expression.compileWithPosition(Expression.java:69)
at gnu.expr.LambdaExp.compileBody(LambdaExp.java:1336)
at gnu.expr.LambdaExp.compileAsMethod(LambdaExp.java:1308)
at gnu.expr.LambdaExp.compileSetField(LambdaExp.java:520)
at gnu.expr.SetExp.compile(SetExp.java:145)
at gnu.expr.Expression.compileNotePosition(Expression.java:82)
at gnu.expr.Expression.compileWithPosition(Expression.java:69)
at gnu.expr.BeginExp.compile(BeginExp.java:80)
at gnu.expr.Expression.compileWithPosition(Expression.java:72)
at gnu.expr.LetExp.compile(LetExp.java:73)
at gnu.expr.Expression.compileWithPosition(Expression.java:72)
at gnu.expr.LambdaExp.compileBody(LambdaExp.java:1336)
at gnu.expr.Compilation.addClass(Compilation.java:1303)
at gnu.expr.Compilation.<init>(Compilation.java:742)
at gnu.expr.ModuleExp.evalToClass(ModuleExp.java:75)
at gnu.expr.ModuleExp.eval(ModuleExp.java:43)
at gnu.expr.ModuleExp.evalModule(ModuleExp.java:185)
at kawa.Shell.run(Shell.java:231)
at kawa.standard.load.loadSource(load.java:134)
at kawa.standard.load.loadSource(load.java:103)
at kawa.standard.load.apply(load.java:196)
at kawa.standard.load.apply2(load.java:172)
at kawa.standard.load.apply1(load.java:162)
at gnu.mapping.Procedure1.applyN(Procedure1.java:49)
at gnu.mapping.Procedure.apply(Procedure.java:102)
at gnu.mapping.CallContext.runUntilDone(CallContext.java:239)
at gnu.expr.ModuleExp.evalModule(ModuleExp.java:189)
at kawa.Shell.run(Shell.java:231)
at kawa.Shell.run(Shell.java:180)
at kawa.Shell.run(Shell.java:167)
at kawa.Shell.run(Shell.java:154)
at kawa.repl.main(repl.java:561)
#|kawa:2|#
The same happens when you type in the definition verbatim at the kawa
interpreter prompt.
Regards, Mirko.