通常增强错误打印后不会有空行。请参阅 Clojure,例如在 ClojureScript 中查看此示例
cljs.user=> (require '[cljs.core.specs.alpha]) nil cljs.user=> (let [1]) 语法错误在宏展开 cljs.core/let 时出现。 [1] - failed: even-number-of-forms? at: [:bindings] spec: :cljs.core.specs.alpha/bindings cljs.user=>
但是,在使用 CLJS-2945 和 CLJS-3011 之后,你可以看到在 {{:clojure.error.phase}} 和 {{:execution}} 打印中有额外的空行。
附带的补丁消除了这个额外的空行,使 ClojureScript 内部以及与 Clojure 的一致性得到了提升。以下是使用补丁的示例
cljs.user=> (ffirst 1) 执行错误(Error)在 (<cljs repl>:1)。 1 不是 ISeqable cljs.user=>
而没有补丁的情况下,你会看到
`
cljs.user=> (ffirst 1)
执行错误(Error)在 (:1)。
1 不是 ISeqable
cljs.user=>
`
有一个小的困难是增强错误打印字符串的末尾有换行符。例如,请参见
https://github.com/clojure/clojurescript/blob/6ccb629e365f46a9516e4defeced652cce9d4d35/src/main/cljs/cljs/repl.cljs#L188
用于显示错误的代码被用于其他错误,所以在这个补丁中采取的修复措施是通过使用 {{trimr}} 强制一致性。