Skip to content

Commit 4661b34

Browse files
authored
support ascii_only in template strings (mishoo#5911)
closes mishoo#5910
1 parent 2255074 commit 4661b34

File tree

2 files changed

+66
-2
lines changed

2 files changed

+66
-2
lines changed

lib/output.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,12 +1788,12 @@ function OutputStream(options) {
17881788
if (self.tag) self.tag.print(output);
17891789
output.print("`");
17901790
for (var i = 0; i < self.expressions.length; i++) {
1791-
output.print(self.strings[i]);
1791+
output.print(output.to_utf8(self.strings[i]));
17921792
output.print("${");
17931793
self.expressions[i].print(output);
17941794
output.print("}");
17951795
}
1796-
output.print(self.strings[i]);
1796+
output.print(output.to_utf8(self.strings[i]));
17971797
output.print("`");
17981798
});
17991799
DEFPRINT(AST_BigInt, function(output) {

test/compress/templates.js

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,70 @@ pure_funcs: {
429429
node_version: ">=4"
430430
}
431431

432+
ascii_only: {
433+
beautify = {
434+
ascii_only: true,
435+
}
436+
options = {
437+
templates: false,
438+
}
439+
input: {
440+
console.log(`\ud801\udc37\ud801𐐷${42}\u{10437}`);
441+
}
442+
expect_exact: "console.log(`\\ud801\\udc37\\ud801\\ud801\\udc37${42}\\u{10437}`);"
443+
expect_stdout: "𐐷\ud801𐐷42𐐷"
444+
// non-BMP support is platform-dependent on Node.js v4
445+
node_version: ">=6"
446+
}
447+
448+
ascii_only_templates: {
449+
beautify = {
450+
ascii_only: true,
451+
}
452+
options = {
453+
templates: true,
454+
}
455+
input: {
456+
console.log(`\ud801\udc37\ud801𐐷${42}\u{10437}`);
457+
}
458+
expect_exact: "console.log(`\\ud801\\udc37\\ud801\\ud801\\udc37${42}\\ud801\\udc37`);"
459+
expect_stdout: "𐐷\ud801𐐷42𐐷"
460+
// non-BMP support is platform-dependent on Node.js v4
461+
node_version: ">=6"
462+
}
463+
464+
unicode: {
465+
beautify = {
466+
ascii_only: false,
467+
}
468+
options = {
469+
templates: false,
470+
}
471+
input: {
472+
console.log(`\ud801\udc37\ud801𐐷${42}\u{10437}`);
473+
}
474+
expect_exact: "console.log(`\\ud801\\udc37\\ud801𐐷${42}\\u{10437}`);"
475+
expect_stdout: "𐐷\ud801𐐷42𐐷"
476+
// non-BMP support is platform-dependent on Node.js v4
477+
node_version: ">=6"
478+
}
479+
480+
unicode_templates: {
481+
beautify = {
482+
ascii_only: false,
483+
}
484+
options = {
485+
templates: true,
486+
}
487+
input: {
488+
console.log(`\ud801\udc37\ud801𐐷${42}\u{10437}`);
489+
}
490+
expect_exact: "console.log(`𐐷\\ud801𐐷${42}𐐷`);"
491+
expect_stdout: "𐐷\ud801𐐷42𐐷"
492+
// non-BMP support is platform-dependent on Node.js v4
493+
node_version: ">=6"
494+
}
495+
432496
issue_4604: {
433497
options = {
434498
collapse_vars: true,

0 commit comments

Comments
 (0)