通常在增强的错误打印后不会有空行。请看Clojure和ClojureScript中的示例。
cljs.user=> (require '[cljs.core.specs.alpha]) nil cljs.user=> (let [1]) 语法错误,在宏展开 cljs.core/let 时出错 (<cljs repl>:1:1)。 [1] - 失败: even-number-of-forms? 在 [:bindings] 规范::cljs.core.specs.alpha/bindings cljs.user=>
但是,使用CLJS-2945和CLJS-3011,您可以看到对于{{:clojure.error.phase}}、{{:execution}}打印多了一个空白行。
附带的补丁消除了这个多余的空白行,使得ClojureScript内部和与Clojure保持一致。以下是使用补丁的示例
cljs.user=> (ffirst 1) 执行错误 (错误) 在 (<cljs repl>:1)。 1 不是一个ISeqable cljs.user=>
而没有补丁时,您会看到
`
cljs.user=> (ffirst 1)
执行错误 (错误) 在 (:1)。
1 不是一个ISeqable
cljs.user=>
`
有一点困难是增强错误打印字符串在末尾有换行。例如看
https://github.com/clojure/clojurescript/blob/6ccb629e365f46a9516e4defeced652cce9d4d35/src/main/cljs/cljs/repl.cljs#L188
显示错误代码用于其他错误,所以在这个补丁中采取的修复方法是使用{{trimr}}强制统一性。