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
警告:/Users/prokopov/work/cljs-test/target/cljsbuild-compiler-0/cljs_test/core.js:117: 警告 - 在旧版本的 JavaScript 中不允许将关键字和保留字作为未引用的属性名称。如果您针对的是更新版本的 JavaScript,请设置适当的 language_in 选项。
return (!((other13203 == null))) && ((this13202$1.constructor === other13203.constructor)) && (cljs.core.EQ.cljs$core$IFn$_invoke$arity$2(this13202__$1.with,other13203.with)) && (cljs.core.EQ.cljs$core$IFn$_invoke$arity$2(this13202$1.in,other13203.in)) && (cljs.core.EQ.cljs$core$IFn$_invoke$arity$2(this13202$1.extmap,other13203.__extmap)));

                                                                                                                                                        ^

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

                                                                                                                                                                        ^

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

                                                                                                                                                                                                                                              ^

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

                                                                                                                                                                                                                                                           ^

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

可能需要发生一些名称转义?我看到 (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报告)
...