Skip to content

Commit ebe962a

Browse files
committed
middleware.format: print otherwise non-serializable objects as strings
Fixes #722
1 parent c3249f8 commit ebe962a

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Bugs fixed
66

77
* [#719](https://github.com/clojure-emacs/cider-nrepl/issues/719): `middleware.test`: gracefully handle exceptions thrown within fixtures.
8+
* [#722](https://github.com/clojure-emacs/cider-nrepl/issues/722): `middleware.format`: print otherwise non-serializable objects as strings.
89

910
## 0.27.2 (2021-10-03)
1011

src/cider/nrepl/middleware/format.clj

+4-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@
4040
(let [reader (readers/string-push-back-reader s)
4141
sentinel (Object.)]
4242
(loop [forms []]
43-
(let [form (edn/read {:eof sentinel} reader)]
43+
(let [form (edn/read {:eof sentinel
44+
:default (fn [_tag value]
45+
(pr-str value))}
46+
reader)]
4447
(if (= sentinel form)
4548
forms
4649
(recur (conj forms form)))))))

test/clj/cider/nrepl/middleware/format_test.clj

+13
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,19 @@
113113
(is (= formatted-edn-sample formatted-edn))
114114
(is (= #{"done"} status))))
115115

116+
;; See: https://github.com/clojure-emacs/cider-nrepl/issues/722
117+
(testing "Objects of classes without an associated data-reader function are converted to strings via `pr-str`"
118+
(let [{:keys [formatted-edn status]
119+
:as response} (session/message {:op "format-edn"
120+
:edn (pr-str [1 2 (Object.) 3 4])})
121+
[a b ^String c d e] (read-string formatted-edn)]
122+
(testing (pr-str response)
123+
(is (= [1 2 3 4]
124+
[a b d e]))
125+
(is (string? c))
126+
(is (.contains c "java.lang.Object@"))
127+
(is (= #{"done"} status)))))
128+
116129
(testing "format-edn works for multiple forms"
117130
(let [{:keys [formatted-edn status]} (session/message {:op "format-edn"
118131
:edn ugly-edn-forms-sample})]

0 commit comments

Comments
 (0)