@@ -524,6 +524,8 @@ let unescape s =
| Invalid_escape_sequence (c,i,msg) as e -> raise e
| _ -> fail_no_hex ()
in
+ if u >= 0xD800 && u < 0xE000 then
+ fail (Some "UTF-16 surrogates are not allowed in strings.");
UTF8.add_uchar b (UChar.uchar_of_int u);
inext := !inext + a;
| _ ->
@@ -0,0 +1,6 @@
+class Main {
+ static function main() {
+ trace("\u{1F404}");
+ trace("\uD83D\uDC04");
+ }
+}
@@ -0,0 +1,2 @@
+--main Main
+--interp
@@ -0,0 +1 @@
+Main.hx:4: character 10 : Invalid escape sequence \u. UTF-16 surrogates are not allowed in strings.