评论者:jafingerhut
这条评论对于工单CLJ-1604尤其相关,其中已经复制了这条评论
汤姆,我看了看你的项目。谢谢你。看起来它里面没有像(def inc inc)这样的东西。在我这边,总是会在'test'步骤中抛出异常,在'lein do clean, uberjar, test'中也是如此,但仅仅是编译警告,'lein do clean, test'通过测试。我还有更多的测试结果,显示这些结果如何随着Clojure版本的变化而变化。为了总结,对于结果影响最大的Clojure修改如下(这些应该添加到你创建的新工单中——你欢迎这样做)
Clojure 1.6.0, 1.7.0-alpha1以及之后的变更直到描述为"CLJ-1378: 允许FnExpr使用类型提示覆盖其报告的类"的提交:对于上面提到的任何一个lein命令都没有错误或警告。
下一个描述为"添加clojure.core/update,类似于update-in,但仅接受单个键"的提交添加了clojure.core/update:'lein do clean, test'正常运行,但'lein do clean, uberjar'在编译过程中抛出异常,可能由于CLJ-1241。
下一个描述为"修复CLJ-1241"的提交:'lein do clean, test'和'lein do clean, uberjar'会警告clojure.core/update,但没有错误或异常。'lein do clean, uberjar, test'在测试步骤中抛出异常,与我看到的Clojure 1.7.0-alpha4中的相同。clojure.core/update和int-map/update(在data.int-map和汤姆的命名空间compiler-update-not-referenced-bug.core中)的调试打印显示,在data.int-map内部打印时一切正常,在汤姆的命名空间中在没有做uberjar的情况下也是如此,但在做uberjar和测试时,int-map/update在汤姆的命名空间中未绑定。
如果这会影响结果,我的测试是在Mac OS X 10.9.5上进行的,使用了Java 1.7.0_45 HotSpot 64位服务器虚拟机上的Leiningen 2.5.0。