Fix reader NaN notation: -nan.0/+nan.0, not just nan.0.
authorTaylor R Campbell <campbell@mumble.net>
Thu, 8 Nov 2018 16:02:09 +0000 (16:02 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Thu, 8 Nov 2018 16:02:09 +0000 (16:02 +0000)
src/runtime/numpar.scm
src/runtime/reader.scm
tests/runtime/test-readwrite.scm

index d995b14fd36b5032965b9f2ae9688a6751cde4a8..d30010b4cf77ce5a95bcd42a2dce96c3045270a6 100644 (file)
@@ -34,7 +34,8 @@ USA.
         (end (fix:end-index end (string-length string) caller))
         (start (fix:start-index start end caller))
         (z
-         (cond ((string=? string "nan.0") (flo:nan.0))
+         (cond ((string=? string "+nan.0") (flo:nan.0))
+               ((string=? string "-nan.0") (flo:nan.0))
                ((string=? string "+inf.0") (flo:+inf.0))
                ((string=? string "-inf.0") (flo:-inf.0))
                (else
index 84c051a5199fd0904e28e37faac5e005b2f8cad4..31159075d58194dba3f1bd30e9a16359572e9494 100644 (file)
@@ -433,9 +433,7 @@ USA.
   ctx
   (let ((string (read-atom db (list char))))
     (or (maybe-keyword db string)
-       (if (string=? string "nan.0")
-           (flo:nan.0)
-           (make-symbol db string)))))
+       (make-symbol db string))))
 
 (define (maybe-keyword db string)
   (cond ((and (eq? 'suffix (db-keyword-style db))
index 9e2a50e00829b7ebbd26f6c89d1510d8fc43348e..52f45b4e3c02dc04b67e675db9a7fc79a0976e5f 100644 (file)
@@ -70,7 +70,7 @@ USA.
   `(("+inf.0" ,assert-inf+)
     ("-inf.0" ,assert-inf-)
     ("inf.0" ,assert-symbol)
-    ("nan.0" ,assert-symbol xfail))
+    ("nan.0" ,assert-symbol))
   (lambda (string #!optional assertion xfail?)
     (with-expected-failure xfail?
       (lambda ()
@@ -79,8 +79,8 @@ USA.
          (assert-equal (write-to-string object) string))))))
 
 (define-enumerated-test 'read
-  `(("+nan.0" ,assert-nan xfail)
-    ("-nan.0" ,assert-nan xfail))
+  `(("+nan.0" ,assert-nan)
+    ("-nan.0" ,assert-nan))
   (lambda (string assertion #!optional xfail?)
     (with-expected-failure xfail?
       (lambda ()