2024年的Clojure调查问卷中分享您的想法!

欢迎!请查看关于页面以了解有关如何使用此功能的一些更多信息。

0
tools.emitter.jvm

目前,TEMJVM为经过提示的局部变量发出检查代码。这不符合clojure.org的说明,clojure.org表示标签不会得到强制执行,而是用于反射消除,而不是Java样式的静态类型。

此问题在加载clojure.core/ns-publics时表现出来,它使用带有^clojure.lang Namespace提示参数,但按照Clojure的所述提示行为,期望接受java.lang.Object域。

修复方法是采用Clojure的checkcast样式,即局部变量不必比Object类型更精确地提示,函数参数也是如此。只有交互站点实际上应该发出checkcast。

这种行为可能会有人认为是愚蠢的,但是它可以防止TEMJVM自行托管,所以就这样了。

1 个答案

0
...