suppress false positives in ufuzz (#5647)

This commit is contained in:
Alex Lam S.L
2022-09-05 18:33:22 +01:00
committed by GitHub
parent 535212c69e
commit 318206d41d
2 changed files with 22 additions and 1 deletions

View File

@@ -449,6 +449,27 @@ describe("test/reduce.js", function() {
].join("\n")); ].join("\n"));
}); });
it("Should transform `export default function` correctly", function() { it("Should transform `export default function` correctly", function() {
if (semver.satisfies(process.version, "<8")) return;
var code = [
"export default function f(a) {",
" for (var k in a)",
" console.log(k);",
" (async function() {})();",
"}",
"f(this);",
].join("\n");
var result = reduce_test(code, {
mangle: false,
});
if (result.error) throw result.error;
assert.strictEqual(result.code, [
"// Can't reproduce test failure",
"// minify options: {",
'// "mangle": false',
"// }",
].join("\n"));
});
it("Should transform `export default (function)` correctly", function() {
var code = [ var code = [
"for (var k in this)", "for (var k in this)",
" console.log(k);", " console.log(k);",

View File

@@ -57,7 +57,7 @@ exports.patch_module_statements = function(code) {
strict_mode = match; strict_mode = match;
return ""; return "";
}).replace(/\bexport(?:\s*\{[^{}]*}\s*?(?:$|\n|;)|\s+default\b(?:\s*(\(|\{|class\s*\{|class\s+(?=extends\b)|(?:async\s+)?function\s*(?:\*\s*)?\())?|\b)/g, function(match, header) { }).replace(/\bexport(?:\s*\{[^{}]*}\s*?(?:$|\n|;)|\s+default\b(?:\s*(\(|\{|class\s*\{|class\s+(?=extends\b)|(?:async\s+)?function\s*(?:\*\s*)?\())?|\b)/g, function(match, header) {
if (/^export\s+default/.test(match)) has_default = "var _uglify_export_default_;"; if (/^export\s+default/.test(match)) has_default = "function _uglify_export_default_() {}";
if (!header) return ""; if (!header) return "";
if (header.length == 1) return "0, " + header; if (header.length == 1) return "0, " + header;
var name = "_uglify_export_default_"; var name = "_uglify_export_default_";