Skip to content

Commit bfe263a

Browse files
committed
fix #4896 ' not needed be escaped when printed inside double quotes
Invariant: we always print Unicode inside ""
1 parent 33441df commit bfe263a

File tree

7 files changed

+7
-37
lines changed

7 files changed

+7
-37
lines changed

jscomp/syntax/ast_utf8_string.ml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ let error ~loc error =
6161
visual input while es5 string
6262
does not*)
6363

64-
let rec check_and_transform (loc : int ) buf s byte_offset s_len =
64+
let rec check_and_transform (loc : int ) (buf : Buffer.t) (s : string) (byte_offset : int) (s_len : int) =
6565
if byte_offset = s_len then ()
6666
else
6767
let current_char = s.[byte_offset] in
@@ -71,9 +71,6 @@ let rec check_and_transform (loc : int ) buf s byte_offset s_len =
7171
| Single 34 ->
7272
Buffer.add_string buf "\\\"";
7373
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
74-
| Single 39 ->
75-
Buffer.add_string buf "\\'";
76-
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
7774
| Single 10 ->
7875
Buffer.add_string buf "\\n";
7976
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len

jscomp/syntax/ast_utf8_string_interp.ml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,6 @@ let rec check_and_transform (loc : int ) s byte_offset ({s_len; buf} as cxt : c
202202
| Single 34 ->
203203
Buffer.add_string buf "\\\"";
204204
check_and_transform (loc + 1) s (byte_offset + 1) cxt
205-
| Single 39 ->
206-
Buffer.add_string buf "\\'";
207-
check_and_transform (loc + 1) s (byte_offset + 1) cxt
208205
| Single 10 ->
209206

210207
Buffer.add_string buf "\\n";

jscomp/test/chn_test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function eq(loc, x, y) {
3232

3333
console.log("你好,\n世界");
3434

35-
console.log("\x3f\u003f\b\t\n\v\f\r\0\"\'");
35+
console.log("\x3f\u003f\b\t\n\v\f\r\0\"'");
3636

3737
function convert(s) {
3838
return $$Array.to_list(Array.from(s, (function (x) {
@@ -227,7 +227,7 @@ eq("File \"chn_test.ml\", line 82, characters 5-12", convert(" \b\t\n\v\f\ra"),
227227
}
228228
});
229229

230-
eq("File \"chn_test.ml\", line 89, characters 6-13", convert(" \b\t\n\v\f\r\"\'\\\0a"), {
230+
eq("File \"chn_test.ml\", line 89, characters 6-13", convert(" \b\t\n\v\f\r\"'\\\0a"), {
231231
hd: 32,
232232
tl: {
233233
hd: 8,

lib/4.06.1/unstable/all_ounit_tests.ml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17652,7 +17652,7 @@ let error ~loc error =
1765217652
visual input while es5 string
1765317653
does not*)
1765417654

17655-
let rec check_and_transform (loc : int ) buf s byte_offset s_len =
17655+
let rec check_and_transform (loc : int ) (buf : Buffer.t) (s : string) (byte_offset : int) (s_len : int) =
1765617656
if byte_offset = s_len then ()
1765717657
else
1765817658
let current_char = s.[byte_offset] in
@@ -17662,9 +17662,6 @@ let rec check_and_transform (loc : int ) buf s byte_offset s_len =
1766217662
| Single 34 ->
1766317663
Buffer.add_string buf "\\\"";
1766417664
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
17665-
| Single 39 ->
17666-
Buffer.add_string buf "\\'";
17667-
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
1766817665
| Single 10 ->
1766917666
Buffer.add_string buf "\\n";
1767017667
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
@@ -18601,9 +18598,6 @@ let rec check_and_transform (loc : int ) s byte_offset ({s_len; buf} as cxt : c
1860118598
| Single 34 ->
1860218599
Buffer.add_string buf "\\\"";
1860318600
check_and_transform (loc + 1) s (byte_offset + 1) cxt
18604-
| Single 39 ->
18605-
Buffer.add_string buf "\\'";
18606-
check_and_transform (loc + 1) s (byte_offset + 1) cxt
1860718601
| Single 10 ->
1860818602

1860918603
Buffer.add_string buf "\\n";

lib/4.06.1/unstable/js_compiler.ml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93747,7 +93747,7 @@ let error ~loc error =
9374793747
visual input while es5 string
9374893748
does not*)
9374993749

93750-
let rec check_and_transform (loc : int ) buf s byte_offset s_len =
93750+
let rec check_and_transform (loc : int ) (buf : Buffer.t) (s : string) (byte_offset : int) (s_len : int) =
9375193751
if byte_offset = s_len then ()
9375293752
else
9375393753
let current_char = s.[byte_offset] in
@@ -93757,9 +93757,6 @@ let rec check_and_transform (loc : int ) buf s byte_offset s_len =
9375793757
| Single 34 ->
9375893758
Buffer.add_string buf "\\\"";
9375993759
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
93760-
| Single 39 ->
93761-
Buffer.add_string buf "\\'";
93762-
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
9376393760
| Single 10 ->
9376493761
Buffer.add_string buf "\\n";
9376593762
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
@@ -94258,9 +94255,6 @@ let rec check_and_transform (loc : int ) s byte_offset ({s_len; buf} as cxt : c
9425894255
| Single 34 ->
9425994256
Buffer.add_string buf "\\\"";
9426094257
check_and_transform (loc + 1) s (byte_offset + 1) cxt
94261-
| Single 39 ->
94262-
Buffer.add_string buf "\\'";
94263-
check_and_transform (loc + 1) s (byte_offset + 1) cxt
9426494258
| Single 10 ->
9426594259

9426694260
Buffer.add_string buf "\\n";

lib/4.06.1/unstable/js_refmt_compiler.ml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93747,7 +93747,7 @@ let error ~loc error =
9374793747
visual input while es5 string
9374893748
does not*)
9374993749

93750-
let rec check_and_transform (loc : int ) buf s byte_offset s_len =
93750+
let rec check_and_transform (loc : int ) (buf : Buffer.t) (s : string) (byte_offset : int) (s_len : int) =
9375193751
if byte_offset = s_len then ()
9375293752
else
9375393753
let current_char = s.[byte_offset] in
@@ -93757,9 +93757,6 @@ let rec check_and_transform (loc : int ) buf s byte_offset s_len =
9375793757
| Single 34 ->
9375893758
Buffer.add_string buf "\\\"";
9375993759
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
93760-
| Single 39 ->
93761-
Buffer.add_string buf "\\'";
93762-
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
9376393760
| Single 10 ->
9376493761
Buffer.add_string buf "\\n";
9376593762
check_and_transform (loc + 1) buf s (byte_offset + 1) s_len
@@ -94258,9 +94255,6 @@ let rec check_and_transform (loc : int ) s byte_offset ({s_len; buf} as cxt : c
9425894255
| Single 34 ->
9425994256
Buffer.add_string buf "\\\"";
9426094257
check_and_transform (loc + 1) s (byte_offset + 1) cxt
94261-
| Single 39 ->
94262-
Buffer.add_string buf "\\'";
94263-
check_and_transform (loc + 1) s (byte_offset + 1) cxt
9426494258
| Single 10 ->
9426594259

9426694260
Buffer.add_string buf "\\n";

0 commit comments

Comments
 (0)