评论者:jafingerhut
这条评论非常适合于 ticket CLJ-1604,已经拷贝过去了。
Tom,看了你的项目。谢谢。看起来里面没有类似(def inc inc)的东西。在我的测试步骤’lein do clean, uberjar, test’中也持续抛出异常,但是只用警告编译并通过‘lein do clean, test’。我还有更多的测试结果表明在这些 Clojure 版本中这些结果如何变化。总结一下,明显影响结果的 Clojure 的更改如下(这些应该添加到您创建的新ticket中——欢迎这样做)
Clojure 1.6.0、1.7.0-alpha1 及之后的更新,直到带有描述“CLJ-1378:允许FnExpr使用类型提示覆盖其报告的类”:上述两个天秤座命令均没有错误或警告。
下一个带有描述“添加 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 和 Tom 的命名空间 compiler-update-not-referenced-bug.core 中)的调试打印值在 data.int-map 内打印时看起来正常,当不执行 uberjar 时在 Tom 的命名空间中正常,但执行 uberjar 时在测试中 int-map/update 未绑定在 Tom 的命名空间中。
如果这对结果有影响,我的测试在 Mac OS X 10.9.5 上进行,使用 Leiningen 2.5.0 和 Java 1.7.0_45 Java HotSpot(TM) 64 位服务器虚拟机。