2024 Clojure 状态调查! 中分享你的想法。

欢迎!请参阅 关于 页面以了解有关此功能的更多信息。

0
ClojureScript

Defrecord 生成的代码与 ECMASCRIPT3 语言不兼容

(defrecord Query [with in])

`
从 ["src"] 编译 "target/main.js"...
Jul 14, 2017 6:58:14 PM com.google.javascript.jscomp.LoggerErrorManager println
WARNING: /Users/prokopov/work/cljs-test/target/cljsbuild-compiler-0/cljs_test/core.js:117: WARNING - 在 JavaScript 的旧版本中不允许关键字和保留字作为无引号属性名称。如果您针对的是新的 JavaScript 版本,请设置适当的 language_in 选项。
return (!((other13203 == null))) && ((this13202strong$1.constructor === other13203.constructor)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1.with,other13203.with)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1.in,other13203.in)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1strong$,other13203.__extmap)));

                                                                                                                                                        ^

Jul 14, 2017 6:58:14 PM com.google.javascript.jscomp.LoggerErrorManager println
WARNING: /Users/prokopov/work/cljs-test/target/cljsbuild-compiler-0/cljs_test/core.js:117: WARNING - 在 JavaScript 的旧版本中不允许关键字和保留字作为无引号属性名称。如果您针对的是新的 JavaScript 版本,请设置适当的 language_in 选项。
return (!((other13203 == null))) && ((this13202strong$1.constructor === other13203.constructor)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1.with,other13203.with)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1.in,other13203.in)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1strong$,other13203.__extmap)));

                                                                                                                                                                        ^

Jul 14, 2017 6:58:14 PM com.google.javascript.jscomp.LoggerErrorManager println
WARNING: /Users/prokopov/work/cljs-test/target/cljsbuild-compiler-0/cljs_test/core.js:117: WARNING - 在 JavaScript 的旧版本中不允许关键字和保留字作为无引号属性名称。如果您针对的是新的 JavaScript 版本,请设置适当的 language_in 选项。
return (!((other13203 == null))) && ((this13202strong$1.constructor === other13203.constructor)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1.with,other13203.with)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1.in,other13203.in)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1strong$,other13203.__extmap)));

                                                                                                                                                                                                                                              ^

Jul 14, 2017 6:58:14 PM com.google.javascript.jscomp.LoggerErrorManager println
WARNING: /Users/prokopov/work/cljs-test/target/cljsbuild-compiler-0/cljs_test/core.js:117: WARNING - 在 JavaScript 的旧版本中不允许关键字和保留字作为无引号属性名称。如果您针对的是新的 JavaScript 版本,请设置适当的 language_in 选项。
return (!((other13203 == null))) && ((this13202strong$1.constructor === other13203.constructor)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1.with,other13203.with)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1.in,other13203.in)) && (cljs.corestrong$.EQstrong$. cljs$core$IFn$_invoke$arity$2(this13202strong$1strong$,other13203.__extmap)));

                                                                                                                                                                                                                                                           ^

Jul 14, 2017 6:58:14 PM com.google.javascript.jscomp.LoggerErrorManager printSummary
WARNING: 0 个错误,4 个警告
成功编译 "target/main.js",耗时 6.224 秒。
`

可能应该进行一些名称转义?我看到 {{(defn with [])}} 编译为 {{cljs-test.core.with$}}。我们应该对记录做同样的事情吗?

3 答案

0

评论由:dnolen 提出

随着 CLJS-1620 的完成,我们应该更深入地考虑这个问题。

0

评论由:grncdr 提出

遇到了一个有趣的错误,可能是这个问题的后果

cljs.user=> (defrecord T [arguments]) cljs.user/T cljs.user=> (= (T. [1]) (T. [0])) true

0
参考: https://clojure.atlassian.net/browse/CLJS-2236(由tonsky提交)
...