By the way, this is how swank-clojure 1.4.4 is failing to compile with the patched clojure jar -
Exception in thread "main" java.lang.IllegalArgumentException: No matching ctor found for class clojure.lang.Compiler$CompilerException, compiling:(swank/commands/basic.clj:183:24) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6607) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6588) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$ThrowExpr$Parser.parse(Compiler.java:2306) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5748) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2679) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6588) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5748) at clojure.lang.Compiler$TryExpr$Parser.parse(Compiler.java:2158) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5748) at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5179) at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3753) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6598) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3575) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6602) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$TryExpr$Parser.parse(Compiler.java:2129) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5748) at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6049) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6588) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6588) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6588) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.access$100(Compiler.java:39) at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6013) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6588) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5748) at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5179) at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3753) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6598) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6588) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.access$100(Compiler.java:39) at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:531) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6588) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3626) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6602) at clojure.lang.Compiler.analyze(Compiler.java:6401) at clojure.lang.Compiler.analyze(Compiler.java:6362) at clojure.lang.Compiler.compile1(Compiler.java:7185) at clojure.lang.Compiler.compile(Compiler.java:7255) at clojure.lang.RT.compile(RT.java:389) at clojure.lang.RT.load(RT.java:429) at clojure.lang.RT.load(RT.java:402) at clojure.core$load$fn__5043.invoke(core.clj:5520) at clojure.core$load.doInvoke(core.clj:5519) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invoke(core.clj:5326) at clojure.core$load_lib$fn__4992.invoke(core.clj:5365) at clojure.core$load_lib.doInvoke(core.clj:5364) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invoke(core.clj:619) at clojure.core$load_libs.doInvoke(core.clj:5403) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invoke(core.clj:621) at clojure.core$use.doInvoke(core.clj:5497) at clojure.lang.RestFn.invoke(RestFn.java:512) at swank.swank$loading__4935__auto__.invoke(swank.clj:1) at clojure.lang.AFn.applyToHelper(AFn.java:159) at clojure.lang.AFn.applyTo(AFn.java:151) at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3460) at clojure.lang.Compiler.compile1(Compiler.java:7190) at clojure.lang.Compiler.compile1(Compiler.java:7180) at clojure.lang.Compiler.compile(Compiler.java:7255) at clojure.lang.RT.compile(RT.java:389) at clojure.lang.RT.load(RT.java:429) at clojure.lang.RT.load(RT.java:402) at clojure.core$load$fn__5043.invoke(core.clj:5520) at clojure.core$load.doInvoke(core.clj:5519) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invoke(core.clj:5326) at clojure.core$load_lib$fn__4992.invoke(core.clj:5365) at clojure.core$load_lib.doInvoke(core.clj:5364) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invoke(core.clj:619) at clojure.core$load_libs.doInvoke(core.clj:5403) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invoke(core.clj:621) at clojure.core$use.doInvoke(core.clj:5497) at clojure.lang.RestFn.invoke(RestFn.java:805) at moby.core$loading__4935__auto__.invoke(core.clj:1) at clojure.lang.AFn.applyToHelper(AFn.java:159) at clojure.lang.AFn.applyTo(AFn.java:151) at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3460) at clojure.lang.Compiler.compile1(Compiler.java:7190) at clojure.lang.Compiler.compile1(Compiler.java:7180) at clojure.lang.Compiler.compile(Compiler.java:7255) at clojure.lang.RT.compile(RT.java:389) at clojure.lang.RT.load(RT.java:429) at clojure.lang.RT.load(RT.java:402) at clojure.core$load$fn__5043.invoke(core.clj:5520) at clojure.core$load.doInvoke(core.clj:5519) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invoke(core.clj:5326) at clojure.core$load_lib$fn__4992.invoke(core.clj:5365) at clojure.core$load_lib.doInvoke(core.clj:5364) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invoke(core.clj:619) at clojure.core$load_libs.doInvoke(core.clj:5403) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invoke(core.clj:619) at clojure.core$require.doInvoke(core.clj:5486) at clojure.lang.RestFn.invoke(RestFn.java:457) at api.lib.server$loading__4935__auto__.invoke(server.clj:1) at clojure.lang.AFn.applyToHelper(AFn.java:159) at clojure.lang.AFn.applyTo(AFn.java:151) at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3460) at clojure.lang.Compiler.compile1(Compiler.java:7190) at clojure.lang.Compiler.compile1(Compiler.java:7180) at clojure.lang.Compiler.compile(Compiler.java:7255) at clojure.lang.RT.compile(RT.java:389) at clojure.lang.RT.load(RT.java:429) at clojure.lang.RT.load(RT.java:402) at clojure.core$load$fn__5043.invoke(core.clj:5520) at clojure.core$load.doInvoke(core.clj:5519) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invoke(core.clj:5326) at clojure.core$compile$fn__5048.invoke(core.clj:5531) at clojure.core$compile.invoke(core.clj:5530) at user$eval7.invoke(NO_SOURCE_FILE:1) at clojure.lang.Compiler.eval(Compiler.java:6659) at clojure.lang.Compiler.eval(Compiler.java:6649) at clojure.lang.Compiler.eval(Compiler.java:6622) at clojure.core$eval.invoke(core.clj:2852) at clojure.main$eval_opt.invoke(main.clj:300) at clojure.main$initialize.invoke(main.clj:319) at clojure.main$null_opt.invoke(main.clj:354) at clojure.main$main$fn__6682.invoke(main.clj:432) at clojure.main$main.doInvoke(main.clj:429) 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.IllegalArgumentException: No matching ctor found for class clojure.lang.Compiler$CompilerException at clojure.lang.Compiler$NewExpr.<init>(Compiler.java:2415) at clojure.lang.Compiler$NewExpr$Parser.parse(Compiler.java:2502) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6600) ... 167 more On Sat, Feb 2, 2013 at 7:43 PM, Chas Emerick <c...@cemerick.com> wrote: > Hi Baishampayan, > > I got such errors when I first started working on the patch; they were caused > by the compiler using print-dup'd strings to create namespaces instead of > emitting bytecode (which the patched build includes). Is it possible that > you have both an org.clojure/clojure jar and the patched com.cemerick/clojure > jar on your classpath? > > FWIW, such metadata happens to exist in some nREPL namespaces, and some of my > projects as well, so I presume that that's not the actual problem. > > Just out of curiosity, do things work well if you use e.g. inferior-lisp or > ritz? > > Thanks for testing! > > - Chas > > On Feb 1, 2013, at 11:10 PM, Baishampayan Ghose wrote: > >> Just did some testing with our code-base and Clojure 1.5.0-RC4 (with >> and without Chas' read-eval patch). >> >> There is definitely something strange going on. Things worked just >> fine with 1.5.0-RC4 but with the read-eval patch `lein swank` is >> completely broken but more than that, our code is failing to compile >> with this weird error - >> >> eval-reader: (clojure.lang.PersistentArrayMap/create {:author "Joe Dev >> <j...@helpshift.com>", :doc "Some doc here."}) >> RuntimeException EvalReader not allowed when *read-eval* is false. >> clojure.lang.Util.runtimeException (Util.java:219) >> >> Almost all our namespaces have documentation attached via metadata like this >> - >> >> (ns ^{:doc "Some doc here." >> :author "Joe Dev <j...@helpshift.com>"} >> com.helpshift.some.ns >> (:require [com.helpshift.other.ns :as chon]) >> (:use clojure.test >> midje.sweet)) >> >> FWIW, the file that will fail to compile is random and I couldn't >> reproduce this error on a fresh project with just a couple of files. >> >> It's quite clear that the eval-reader is getting used from inside >> Clojure and we need to test out the edge cases a bit more. >> >> This is clearly not a low-impact fix, but IMHO we should take the time >> and get it right before 1.5.0 >> >> Regards, >> BG >> >> >> On Sat, Feb 2, 2013 at 4:01 AM, Chas Emerick <c...@cemerick.com> wrote: >>> I have added a patch to CLJ-1153 that appears to address the *read-eval* >>> problem: >>> >>> http://dev.clojure.org/jira/browse/CLJ-1153?focusedCommentId=30523#comment-30523 >>> >>> code on github: >>> https://github.com/cemerick/clojure/commit/1f5c19c07443d2535ede4ff71d23b40c195d617f >>> >>> artifact on Clojars: [com.cemerick/clojure "1.5.0-SNAPSHOT"] >>> >>> The Leiningen dependency above is 1.5.0-RC4 + the patch on the ticket. >>> Note that you'll need to set your project's global :exclusions to >>> [org.clojure/clojure] in order for the com.cemerick/clojure artifact to >>> supersede it. >>> >>> It tests well for me, but needs to be exercised as much as possible. Some >>> have already done so (there's an ongoing discussion on the clojure-dev ML >>> with some initial test experiences: >>> http://groups.google.com/group/clojure-dev/browse_frm/thread/cc6f747919db6c94), >>> but I'm hoping that we can get as many eyes as possible on this — doing >>> both testing as well as code/patch examination — so as to ensure >>> correctness and maximize the chances of 1.5.0 final going out with this >>> vulnerability buttoned up. >>> >>> Thanks, >>> >>> - Chas >>> >>> -- >>> -- >>> 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 >>> --- >>> You received this message because you are subscribed to the Google Groups >>> "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to clojure+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >> >> >> >> -- >> Baishampayan Ghose >> b.ghose at gmail.com >> >> -- >> -- >> 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 >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> > > -- > -- > 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 > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > -- Baishampayan Ghose b.ghose at gmail.com -- -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.