From 830daadee6d4b906b91b134c58cc36f4834ac771 Mon Sep 17 00:00:00 2001 From: Colin Jones Date: Fri, 21 Sep 2012 17:42:01 -0500 Subject: [PATCH] Read +/- Infinity and NaN --- src/jvm/clojure/lang/LispReader.java | 12 ++++++++++++ test/clojure/test_clojure/reader.clj | 5 +++++ 2 files changed, 17 insertions(+), 0 deletions(-) diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java index 8a5b25c..e2b3aca 100644 --- a/src/jvm/clojure/lang/LispReader.java +++ b/src/jvm/clojure/lang/LispReader.java @@ -312,6 +312,18 @@ static private Object interpretToken(String s) { { return CLOJURE_SLASH; } + else if(s.equals("NaN")) + { + return Double.NaN; + } + else if(s.equals("-Infinity")) + { + return Double.NEGATIVE_INFINITY; + } + else if(s.equals("Infinity") || s.equals("+Infinity")) + { + return Double.POSITIVE_INFINITY; + } Object ret = null; ret = matchSymbol(s); diff --git a/test/clojure/test_clojure/reader.clj b/test/clojure/test_clojure/reader.clj index 5e8cddc..644eaf2 100644 --- a/test/clojure/test_clojure/reader.clj +++ b/test/clojure/test_clojure/reader.clj @@ -208,6 +208,11 @@ (is (instance? Double -1.0)) (is (instance? Double -1.)) + (is (instance? Double Infinity)) + (is (instance? Double +Infinity)) + (is (instance? Double -Infinity)) + (is (instance? Double NaN)) + ; Read BigDecimal (is (instance? BigDecimal 9223372036854775808M)) (is (instance? BigDecimal -9223372036854775809M)) -- 1.7.7.5 (Apple Git-26)