Stu,
I changed my code from 1.4.0 to 1.5.0 RC 16 (about 70 source files) and ran
into two small things.They are probably not bugs but they confused me.
I have not been following 1.5 development in detail, so these are probably
not at all new. So far everything else seems ok, which is great.
1. array-map used to throw an illegal argument exception on duplicate keys,
but now it succeeds and uses the last value in the array. This change seems
okay, I just had a case that used the old behavior and it took a bit to
realize what happened.
(array-map :a 1 :a 2 :b 0 :a 3 :b 1)
{:a 3, :b 1}
2. The defn macro used to be permissive when it had nothing but the
function name, but now it complains. That seems like an improvement, but
the problem is that it gives no information of what source file or line the
problem is at so it took me a while to find it.
I was defining a mocked out function, so I just had this: (defn x)
That was okay in 1.4.0, but now it returns the error below. I just replaced
it by (def x), so it was easy to fix once I saw it.
It seems to me macro errors never tell about where in the source they
happen, so I assume that must be very hard to fix and that we're still
stuck with this in 1.5.0. I must admit that trying to debug macro issues
(esp. in the 'ns' macro) are almost the only time I've found myself cursing
at clojure itself. Most of the time it is a joy.
Exception in thread "main" java.lang.IllegalArgumentException: Parameter
declaration missing
at clojure.core$assert_valid_fdecl.invoke(core.clj:6716)
at clojure.core$sigs.invoke(core.clj:223)
at clojure.core$defn.doInvoke(core.clj:301)
at clojure.lang.RestFn.invoke(RestFn.java:445)
at clojure.lang.Var.invoke(Var.java:423)
at clojure.lang.AFn.applyToHelper(AFn.java:167)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.lang.Compiler.macroexpand1(Compiler.java:6468)
at clojure.lang.Compiler.macroexpand(Compiler.java:6529)
at clojure.lang.Compiler.eval(Compiler.java:6603)
at clojure.lang.Compiler.load(Compiler.java:7064)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.loadResourceScript(RT.java:361)
at clojure.lang.RT.load(RT.java:440)
at clojure.lang.RT.load(RT.java:411)
at clojure.core$load$fn__5028.invoke(core.clj:5530)
at clojure.core$load.doInvoke(core.clj:5529)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5336)
at clojure.core$load_lib$fn__4977.invoke(core.clj:5375)
at clojure.core$load_lib.doInvoke(core.clj:5374)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$load_libs.doInvoke(core.clj:5413)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$require.doInvoke(core.clj:5496)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at midje.repl$load_facts$fn__5948.invoke(repl.clj:205) <-- yes this was in
a midje test case, but it does not tell where in my code it is
at midje.repl$load_facts.doInvoke(repl.clj:191)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at user$eval6011.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:6619)
at clojure.lang.Compiler.eval(Compiler.java:6609)
at clojure.lang.Compiler.eval(Compiler.java:6582)
at clojure.core$eval.invoke(core.clj:2852)
at clojure.main$eval_opt.invoke(main.clj:302)
at clojure.main$initialize.invoke(main.clj:321)
at clojure.main$null_opt.invoke(main.clj:356)
at clojure.main$main$fn__6656.invoke(main.clj:434)
at clojure.main$main.doInvoke(main.clj:431)
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)
Subprocess failed
-Eric
On Wednesday, February 13, 2013 10:33:42 PM UTC-5, [email protected]
wrote:
>
> If you care about Clojure 1.5 compatibility for your codebase, please test
> it against RC 16 as soon as possible.
>
> You can get the source and build it yourself from [1], or wait for Maven
> Central [2] to pick up the CI build, which usually takes a few hours.
>
> Thanks!
> Stu
>
> [1] https://github.com/clojure/clojure
> [2] http://bit.ly/WEnjAi
>
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.