Accept whitespace in Record and Type reader forms
Description
Environment
Attachments
Activity
Alex Miller September 9, 2013 at 7:26 AM
Thanks for checking!
Nicola Mometto September 8, 2013 at 10:57 PM
EdnReader doesn't read record/type literals so in this case it's not affected
Alex Miller September 8, 2013 at 9:14 PM
Any LispReader fix likely also affects EdnReader.
Andy Fingerhut September 8, 2013 at 9:40 AM
Patch clj-1234-v1.txt adds a test that fails without the patch, and passes with it, verifying that white space is allowed after #record.name but before {.
Very straightforward patch, especially since fogus was nice enough to write 2 commented-out lines that did the trick simply by uncommenting them.
Alex Miller July 25, 2013 at 8:40 PM
Stack trace in case it's useful:
user=> (pst *e)
ReaderException java.lang.RuntimeException: Unreadable constructor form starting with "#user.B "
clojure.lang.LispReader.read (LispReader.java:220)
clojure.core/read (core.clj:3407)
clojure.core/read (core.clj:3405)
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn--589/fn--592 (interruptible_eval.clj:52)
clojure.main/repl/read-eval-print--6588/fn--6589 (main.clj:257)
clojure.main/repl/read-eval-print--6588 (main.clj:257)
clojure.main/repl/fn--6597 (main.clj:277)
clojure.main/repl (main.clj:277)
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn--589 (interruptible_eval.clj:56)
clojure.core/apply (core.clj:617)
clojure.core/with-bindings* (core.clj:1788)
clojure.tools.nrepl.middleware.interruptible-eval/evaluate (interruptible_eval.clj:41)
Caused by:
RuntimeException Unreadable constructor form starting with "#user.B "
clojure.lang.Util.runtimeException (Util.java:219)
clojure.lang.LispReader$CtorReader.readRecord (LispReader.java:1224)
clojure.lang.LispReader$CtorReader.invoke (LispReader.java:1174)
clojure.lang.LispReader$DispatchReader.invoke (LispReader.java:619)
clojure.lang.LispReader.read (LispReader.java:185)
clojure.core/read (core.clj:3407)
Whitespace should be allowed in the record reader form as with tagged literals. Following example shows the problem:
Patch: clj-1234-v1.diff
Screened by: Alex Miller