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.


Reply via email to