Skip to content

Commit 4671019

Browse files
committed
allow non-constituent characters as char literals in edn reader
1 parent 51f9bbe commit 4671019

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/jvm/clojure/lang/EdnReader.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ static public Object read(PushbackReader r, boolean eofIsError, Object eofValue,
168168
unread(r, ch2);
169169
}
170170

171-
String token = readToken(r, (char) ch);
171+
String token = readToken(r, (char) ch, true);
172172
if(RT.suppressRead())
173173
return null;
174174
return interpretToken(token);
@@ -184,9 +184,9 @@ static public Object read(PushbackReader r, boolean eofIsError, Object eofValue,
184184
}
185185
}
186186

187-
static private String readToken(PushbackReader r, char initch) {
187+
static private String readToken(PushbackReader r, char initch, boolean leadConstituent) {
188188
StringBuilder sb = new StringBuilder();
189-
if(nonConstituent(initch))
189+
if(leadConstituent && nonConstituent(initch))
190190
throw Util.runtimeException("Invalid leading character: " + (char)initch);
191191

192192
sb.append(initch);
@@ -562,7 +562,7 @@ public Object invoke(Object reader, Object backslash, Object opts) {
562562
int ch = read1(r);
563563
if(ch == -1)
564564
throw Util.runtimeException("EOF while reading character");
565-
String token = readToken(r, (char) ch);
565+
String token = readToken(r, (char) ch, false);
566566
if(token.length() == 1)
567567
return Character.valueOf(token.charAt(0));
568568
else if(token.equals("newline"))

0 commit comments

Comments
 (0)