From 45cb76c6524a53d0137bacedc8d84eae5877abd5 Mon Sep 17 00:00:00 2001 From: Alexander Taggart Date: Mon, 16 May 2011 10:51:26 -0700 Subject: [PATCH] Longs print-dup as literal instead of read-eval on Long constructor --- src/clj/clojure/core_print.clj | 2 +- test/clojure/test_clojure/printer.clj | 17 +++++++++++++++++ test/clojure/test_clojure/protocols.clj | 6 +++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/clj/clojure/core_print.clj b/src/clj/clojure/core_print.clj index f38e6e4..bdd249d 100644 --- a/src/clj/clojure/core_print.clj +++ b/src/clj/clojure/core_print.clj @@ -260,7 +260,7 @@ nil) (defmethod print-dup java.lang.Character [c w] (print-method c w)) -(defmethod print-dup java.lang.Integer [o w] (print-method o w)) +(defmethod print-dup java.lang.Long [o w] (print-method o w)) (defmethod print-dup java.lang.Double [o w] (print-method o w)) (defmethod print-dup clojure.lang.Ratio [o w] (print-method o w)) (defmethod print-dup java.math.BigDecimal [o w] (print-method o w)) diff --git a/test/clojure/test_clojure/printer.clj b/test/clojure/test_clojure/printer.clj index ecee4b6..2b255e9 100644 --- a/test/clojure/test_clojure/printer.clj +++ b/test/clojure/test_clojure/printer.clj @@ -81,3 +81,20 @@ (binding [*print-level* level *print-length* length] (is (= val (print-str coll))))))) + +(deftest print-dup-expected + (are [x s] (= s (binding [*print-dup* true] (print-str x))) + 1 "1" + 1.0 "1.0" + 1N "1N" + 1M "1M" + "hi" "\"hi\"")) + +(deftest print-dup-readable + (are [form] (let [x form] + (= x (read-string (binding [*print-dup* true] (print-str x))))) + 1 + 1.0 + 1N + 1M + "hi")) \ No newline at end of file diff --git a/test/clojure/test_clojure/protocols.clj b/test/clojure/test_clojure/protocols.clj index 05965f5..f62291c 100644 --- a/test/clojure/test_clojure/protocols.clj +++ b/test/clojure/test_clojure/protocols.clj @@ -376,11 +376,11 @@ (let [r (RecordToTestPrinting. 1 2)] (is (= "#clojure.test_clojure.protocols.RecordToTestPrinting{:a 1, :b 2}" (pr-str r))) - (is (= "#clojure.test_clojure.protocols.RecordToTestPrinting[#=(java.lang.Long. \"1\"), #=(java.lang.Long. \"2\")]" + (is (= "#clojure.test_clojure.protocols.RecordToTestPrinting[1, 2]" (binding [*print-dup* true] (pr-str r)))) - (is (= "#clojure.test_clojure.protocols.RecordToTestPrinting{:a #=(java.lang.Long. \"1\"), :b #=(java.lang.Long. \"2\")}" + (is (= "#clojure.test_clojure.protocols.RecordToTestPrinting{:a 1, :b 2}" (binding [*print-dup* true *verbose-defrecords* true] (pr-str r)))) - (is (= "#clojure.test_clojure.protocols.TypeToTestLiterals[#=(java.lang.Long. \"42\")]" + (is (= "#clojure.test_clojure.protocols.TypeToTestLiterals[42]" (binding [*print-dup* true] (pr-str (TypeToTestLiterals. 42)))))))) (defrecord RecordToTestLongHint [^long a]) -- 1.7.3.5