Hello ClojureScripters, I'm trying to update a port of hiccup [1] to the latest ClojureScript version. During HTML compilation I call at some point eval (in a Clojure macro) on a datastructure and get a java.lang.ClassCastException. This used in ClojureScript versions before 0.0-1211.
I traced it down to the following example. This works in ClojureScript 0.0-1011: ; Define a Clojure macro. (defmacro eval-test [arg] (eval arg)) ; Use the Clojure macro from ClojureScript. (eval-test "1") ;=> "1" (eval-test 1) ;=> 1 (eval-test "div") ;=> "div" (eval-test :div) ;=> :div (eval-test []) ;=> [] (eval-test {}) ;=> {} (eval-test #{}) ;=> #{} In ClojureScript 0.0-1211 it works on strings, numbers and symbols, but fails on vectors, maps and sets. I get the follwoing results: (eval-test "1") ;=> "1" (eval-test 1) ;=> 1 (eval-test "div") ;=> "div" (eval-test :div) ;=> :div (eval-test []) java.lang.ClassCastException: clojure.lang.Symbol cannot be cast to clojure.lang.Namespace, compiling:(NO_SOURCE_PATH:1) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6462) at clojure.lang.Compiler.analyze(Compiler.java:6262) at clojure.lang.Compiler.eval(Compiler.java:6508) at clojure.lang.Compiler.eval(Compiler.java:6477) at clojure.core$eval.invoke(core.clj:2797) at hiccup.core$eval_test.invoke(core.clj:20) at clojure.lang.AFn.applyToHelper(AFn.java:167) at clojure.lang.AFn.applyTo(AFn.java:151) at clojure.core$apply.invoke(core.clj:605) at cljs.compiler$macroexpand_1.invoke(compiler.clj:1351) at cljs.compiler$analyze_seq.invoke(compiler.clj:1368) at cljs.compiler$analyze.invoke(compiler.clj:1425) at cljs.compiler$analyze.invoke(compiler.clj:1418) at cljs.repl$evaluate_form.invoke(repl.clj:64) at cljs.repl$eval_and_print.invoke(repl.clj:124) at cljs.repl$repl.doInvoke(repl.clj:173) at clojure.lang.RestFn.invoke(RestFn.java:410) at cljsbuild.repl.listen$run_repl_listen.invoke(listen.clj:10) at cljsbuild.repl.listen$run_repl_launch.invoke(listen.clj:31) at user$eval2490.invoke(NO_SOURCE_FILE:1) at clojure.lang.Compiler.eval(Compiler.java:6511) at clojure.lang.Compiler.eval(Compiler.java:6500) at clojure.lang.Compiler.eval(Compiler.java:6501) at clojure.lang.Compiler.eval(Compiler.java:6477) at clojure.core$eval.invoke(core.clj:2797) at clojure.main$eval_opt.invoke(main.clj:297) at clojure.main$initialize.invoke(main.clj:316) at clojure.main$null_opt.invoke(main.clj:349) at clojure.main$main.doInvoke(main.clj:427) at clojure.lang.RestFn.invoke(RestFn.java:421) at clojure.lang.Var.invoke(Var.java:419) at clojure.lang.AFn.applyToHelper(AFn.java:163) at clojure.lang.Var.applyTo(Var.java:532) at clojure.main.main(main.java:37) Caused by: java.lang.ClassCastException: clojure.lang.Symbol cannot be cast to clojure.lang.Namespace at clojure.lang.Compiler.currentNS(Compiler.java:6864) at clojure.lang.Compiler.lookupVar(Compiler.java:6826) at clojure.lang.Compiler.lookupVar(Compiler.java:6847) at clojure.lang.Compiler.isInline(Compiler.java:6323) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6448) ... 33 more java.lang.ClassCastException: clojure.lang.Symbol cannot be cast to clojure.lang.Namespace, compiling:(NO_SOURCE_PATH:1) Does anyone have an idea what has changed between those versions? Could this be a bug? Thanks for your help, Roman. [1] https://github.com/r0man/hiccup/tree/clojurescript -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en