Le Monday 15 May 2017 20:51:11 Per Bothner, vous avez écrit : > I checked in a fix, in both the master and kawa-2.4 branches. > > The bug only happened when the value of (html:td result) is not used. > You might say: But it is used in: > (set! html-literal-table-data-code > (html:td result)) > > No, because html-literal-table-data-code is not used, so the assignment > is ignored (except for possible side-effects). hello Per, it seems the bug is still active under some circumstances, i have made a few modif. in the code and even if the literal is used i have the same error: mattei@moita Jkawa]$ java -cp /home/mattei/kawa-2.4/lib/kawa.jar:/home/mattei/NetBeansProjects/Sidonie/build/web/WEB-INF/classes kawa.repl --output-format html -C DBtoWebObserversKawa.scm (compiling DBtoWebObserversKawa.scm to eu.oca.kawafunct.DBtoWebObserversKawa) Exception in thread "main" java.lang.Error: gnu.kawa.xml.MakeElement does not implement Externalizable at gnu.expr.LitTable.error(LitTable.java:122) at gnu.expr.LitTable.writeObject(LitTable.java:282) at gnu.expr.LitTable.emit(LitTable.java:85) at gnu.expr.Compilation.generateBytecode(Compilation.java:2210) at gnu.expr.Compilation.process(Compilation.java:1943) at gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:306) at gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:288) at kawa.repl.compileFiles(repl.java:780) at kawa.repl.processArgs(repl.java:441) at kawa.repl.main(repl.java:820) i have make some development in the code, and i cannot tell exactly what is the new instructions causing the same error again, i compiled it with the latest stable kawa-2.4 binary, i suppose your fixs are in the binary too. i have provided the source code in attachment, it should compile till it reach the error the same way on your host than on mine (i have commeted out some include scheme files from my library but there is no concern about that to compile) youn can compile it with your 2.4 kawa version like this: java -cp kawa-2.4.jar kawa.repl --output-format html -C DBtoWebObserversKawa.scm i suppose the news instructions causing the trouble are in those part of my code: in a let i assign option-lst to '(DIR: "LTR" BORDER: 1 width: 315 id: "table_observateurs") and use it here: ;; HTML table with options ;; Kawa offers simple slicing: @ not in Scheme R7RS (set! html-literal-table (html:table @option-lst @literal-rows-list)) ;; HTML (set! html-literal (html:td align: "center" html-literal-table)) (set! html-literal-str (html-literal:toString)) (display-msg-var-nl "DBtoWebObserversKawa : work : html-literal-str = " html-literal-str) (display-msg-var-nl "DBtoWebObserversKawa : work : res = " res) (append-string-to-result html-literal-str) but i also add some change in the literals in the WHILE loop before, is uppose if i revert all the changes it will compile again at some point... i had made some test in REPL before coding and all was good exept one time the REPL exit to shell after an error, i have made a lot of test here is a sample that lead to error in shell (i admit my literal input was strange...): [mattei@moita bin]$ ./kawa --output-format html #|kawa:1|# (html:td "foo") foo #|kawa:2|# (define td1 (html:td "foo")) #|kawa:3|# (define td-lst (list td1 td1 td1)) #|kawa:4|# td-lst foo foo foo #|kawa:5|# (car td-lst) foo #|kawa:6|# (eval `(html:table ,td-lst)) java.lang.NullPointerException at gnu.xml.XMLPrinter.getHtmlTag(XMLPrinter.java:525) at gnu.xml.XMLPrinter.startElement(XMLPrinter.java:498) at gnu.lists.TreeList.consumeIRange(TreeList.java:1252) at gnu.lists.TreeList.consumeNext(TreeList.java:1080) at gnu.xml.XMLPrinter.writeObject(XMLPrinter.java:723) at gnu.kawa.xml.NodeConstructor.popNodeContext(NodeConstructor.java:67) at atEvalLevel-1.run() at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.lang.Eval.evalBody(Eval.java:100) at kawa.lang.Eval.evalForm$X(Eval.java:27) at kawa.lib.scheme.eval.eval$X(eval.scm:9) at kawa.lib.scheme.eval.eval$X(eval.scm) at atInteractiveLevel-6.run(stdin:6) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) <{null name} #|kawa:7|# `(html:table td-lst) #|kawa:8|# `(html:table ,td-lst) #|kawa:9|# (apply html:table td-lst) #|kawa:10|# (define bar (apply html:table td-lst)) #|kawa:11|# bar #|kawa:12|# (display bar)
foofoofoo
#|kawa:13|# (define bar2 `(html:table ,td-lst)) #|kawa:14|# bar2 #|kawa:15|# (display bar2) (html:table (foo foo foo)) #|kawa:16|# td-lst #|kawa:17|# (display td-lst) (foo foo foo) #|kawa:18|# DIR: /dev/stdin:18:1: warning - keyword should be quoted if not in argument position java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at atInteractiveLevel-18.run(stdin:18) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:19|# (define option-lst '(DIR: "LTR" BORDER: 1 width: 315 id: "table_observateurs")) #|kawa:20|# option-lst java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.mapping.Values.writeValues(Values.java:226) at atInteractiveLevel-20.run(stdin:20) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:21|# td-lst #|kawa:22|# (display td-lst #|.....23|# ) (foo foo foo) #|kawa:24|# (append option-lst td-lst) java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.mapping.Values.writeValues(Values.java:226) at atInteractiveLevel-24.run(stdin:24) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:25|# (define option-lst '('DIR: "LTR" 'BORDER: 1 'width: 315 'id: "table_observateurs")) #|kawa:26|# option-lst java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.mapping.Values.writeValues(Values.java:226) at atInteractiveLevel-26.run(stdin:26) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:27|# (list DIR: "LTR" BORDER: 1 width: 315 id: "table_observateurs") java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.mapping.Values.writeValues(Values.java:226) at gnu.mapping.CallContext.writeValue(CallContext.java:333) at gnu.mapping.Procedure.apply(Procedure.java:153) at gnu.mapping.Procedure.apply(Procedure.java:118) at gnu.mapping.CallContext.runUntilDone(CallContext.java:227) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:349) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:28|# (define tbl-rows (apply html:tr td-lst)) #|kawa:29|# tbl-rows #|kawa:30|# (display tbl-rows) foofoofoo #|kawa:31|# html:table #|kawa:32|# list #|kawa:33|# car #|kawa:34|# #|kawa:35|# (define option-lst '(DIR: "LTR" BORDER: 1 width: 315 id: "table_observateurs")) #|kawa:36|# `(html-table ,@option-lst ,@tbl-rows) Exception in thread "main" java.lang.Error: expected list in quasi-quote splicing at kawa.lang.Quote.append$V(Quote.java:418) at atInteractiveLevel-36.run(stdin:36) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) shell exit here another run that does not exit with error to shell: [mattei@moita bin]$ ./kawa --output-format html #|kawa:1|# (define option-lst '(DIR: "LTR" BORDER: 1 width: 315 id: "table_observateurs")) #|kawa:2|# (define td1 (html:td "foo")) #|kawa:3|# (define td-lst (list td1 td1 td1)) #|kawa:4|# td-lst foo foo foo #|kawa:5|# (car td-lst) foo #|kawa:6|# (display td-lst) (foo foo foo) #|kawa:7|# (define tbl-rows (apply html:tr td-lst)) #|kawa:8|# (display tbl-rows) foofoofoo #|kawa:9|# (html:tr @td-lst) foofoofoo #|kawa:10|# (map html:tr td-lst) foo foo foo #|kawa:11|# (define tbl-row-lst (map html:tr td-lst)) #|kawa:12|# tbl-row-lst foo foo foo #|kawa:13|# (html:table DIR: "LTR" BORDER: 1 width: 315 id: "table_observateurs" @tbl-row-lst)
foo
foo
foo
#|kawa:14|# (html:table @option-lst @tbl-row-lst)
foo
foo
foo
#|kawa:15|# (display option-lst) (DIR: LTR BORDER: 1 width: 315 id: table_observateurs) #|kawa:16|# `(html-table ,@option-lst ,@tbl-row-lst) html-table DIR=" LTR " BORDER=" 1 " width=" 315 " id=" table_observateurs #|kawa:17|# (exit) Vous avez du nouveau courrier dans /var/spool/mail/mattei [mattei@moita bin]$ pwd /home/mattei/kawa-2.4/bin those examples are with kawa-2.4, the last one run well, but when i do similar thing in code i have the error i also test if first with kawa-2.1 as i expected it to do not make error if the literal was used regards, damien included file: DBtoWebObserversKawa.scm