增强错误打印通常不会留下空白行。请参见Clojure,以及例如,在ClojureScript中的此示例。
cljs.user=> (require '[cljs.core.specs.alpha]) nil cljs.user=> (let [1]) 语法错误在宏展开时在 cljs.core/let 中出现 (<cljs repl>:1:1). [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) 执行错误(错误)在 (<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}}强制执行一致性。