buf = append(buf, `\x`...)
buf = append(buf, lowerhex[byte(r)>>4])
buf = append(buf, lowerhex[byte(r)&0xF])
- case r > utf8.MaxRune:
+ case !utf8.ValidRune(r):
r = 0xFFFD
fallthrough
case r < 0x10000:
value = v
break
}
- if v > utf8.MaxRune {
+ if !utf8.ValidRune(v) {
err = ErrSyntax
return
}
{'\\', `'\\'`, `'\\'`, `'\\'`},
{0xFF, `'ÿ'`, `'\u00ff'`, `'ÿ'`},
{0x263a, `'☺'`, `'\u263a'`, `'☺'`},
+ {0xdead, `'�'`, `'\ufffd'`, `'�'`},
{0xfffd, `'�'`, `'\ufffd'`, `'�'`},
{0x0010ffff, `'\U0010ffff'`, `'\U0010ffff'`, `'\U0010ffff'`},
{0x0010ffff + 1, `'�'`, `'\ufffd'`, `'�'`},
"\"\n\"",
"\"\\n\n\"",
"'\n'",
+ `"\udead"`,
+ `"\ud83d\ude4f"`,
}
func TestUnquote(t *testing.T) {