unicode_parse_variables: { options = {} input: { var a = {}; a.你好 = 456; var ↂωↂ = 123; var l০ = 3; // 2nd char is a unicode digit } expect: { var a = {}; a.你好 = 456; var ↂωↂ = 123; var l০ = 3; } } unicode_escaped_identifier: { input: { var \u0061 = "\ud800\udc00"; console.log(a); } expect_exact: 'var a="\ud800\udc00";console.log(a);' expect_stdout: "\ud800\udc00" } unicode_identifier_ascii_only: { beautify = { ascii_only: true, } input: { var \u0061 = "testing \udbc4\udd11"; var bar = "h\u0065llo"; console.log(a, \u0062\u0061r); } expect_exact: 'var a="testing \\udbc4\\udd11";var bar="hello";console.log(a,bar);' expect_stdout: "testing \udbc4\udd11 hello" } unicode_string_literals: { beautify = { ascii_only: true, } input: { var a = "6 length unicode character: \udbc4\udd11"; console.log(\u0061); } expect_exact: 'var a="6 length unicode character: \\udbc4\\udd11";console.log(a);' expect_stdout: "6 length unicode character: \udbc4\udd11" } check_escape_style: { beautify = { ascii_only: true, } input: { var a = "\x01"; var \ua0081 = "\x10"; // \u0081 only in ID_Continue var \u0100 = "\u0100"; var \u1000 = "\u1000"; var \u1000 = "\ud800\udc00"; var \u3f80 = "\udbc0\udc00"; console.log(\u0061, \ua0081, \u0100, \u1000, \u3f80); } expect_exact: 'var a="\\x01";var \\ua0081="\\x10";var \\u0100="\\u0100";var \\u1000="\\u1000";var \\u1000="\\ud800\\udc00";var \\u3f80="\\udbc0\\udc00";console.log(a,\\ua0081,\\u0100,\\u1000,\\u3f80);' expect_stdout: "\u0001 \u0010 \u0100 \ud800\udc00 \udbc0\udc00" } escape_non_escaped_identifier: { beautify = { ascii_only: true, } input: { var µþ = "µþ"; console.log(\u00b5þ); } expect_exact: 'var \\u00b5\\u00fe="\\xb5\\xfe";console.log(\\u00b5\\u00fe);' expect_stdout: "µþ" } non_escape_2_non_escape: { beautify = { ascii_only: false, } input: { var µþ = "µþ"; console.log(\u00b5þ); } expect_exact: 'var µþ="µþ";console.log(µþ);' expect_stdout: "µþ" } issue_2242_1: { beautify = { ascii_only: false, } input: { console.log("\ud83d", "\ude00", "\ud83d\ude00", "\ud83d@\ude00"); } expect_exact: 'console.log("\\ud83d","\\ude00","\ud83d\ude00","\\ud83d@\\ude00");' expect_stdout: "\ud83d \ude00 \ud83d\ude00 \ud83d@\ude00" } issue_2242_2: { beautify = { ascii_only: true, } input: { console.log("\ud83d", "\ude00", "\ud83d\ude00", "\ud83d@\ude00"); } expect_exact: 'console.log("\\ud83d","\\ude00","\\ud83d\\ude00","\\ud83d@\\ude00");' expect_stdout: "\ud83d \ude00 \ud83d\ude00 \ud83d@\ude00" } issue_2242_3: { options = { evaluate: false, } input: { console.log("\ud83d" + "\ude00", "\ud83d" + "@" + "\ude00"); } expect_exact: 'console.log("\\ud83d"+"\\ude00","\\ud83d"+"@"+"\\ude00");' expect_stdout: "\ud83d\ude00 \ud83d@\ude00" } issue_2242_4: { options = { evaluate: true, } input: { console.log("\ud83d" + "\ude00", "\ud83d" + "@" + "\ude00"); } expect_exact: 'console.log("\ud83d\ude00","\\ud83d@\\ude00");' expect_stdout: "\ud83d\ude00 \ud83d@\ude00" } issue_2569: { input: { new RegExp("[\udc42-\udcaa\udd74-\udd96\ude45-\ude4f\udea3-\udecc]"); } expect_exact: 'new RegExp("[\\udc42-\\udcaa\\udd74-\\udd96\\ude45-\\ude4f\\udea3-\\udecc]");' }