suppress false positives in ufuzz (#5473)

This commit is contained in:
Alex Lam S.L
2022-05-26 16:17:47 +01:00
committed by GitHub
parent 59b23b8c13
commit 0dbf2b1d3c

View File

@@ -2324,6 +2324,10 @@ function is_error_in(ex) {
return ex.name == "TypeError" && /'in'/.test(ex.message);
}
function is_error_tdz(ex) {
return ex.name == "ReferenceError";
}
function is_error_spread(ex) {
return ex.name == "TypeError" && /Found non-callable @@iterator| is not iterable| not a function/.test(ex.message);
}
@@ -2407,6 +2411,8 @@ function patch_try_catch(orig, toplevel) {
code = new_code;
} else if (is_error_in(result)) {
patch(result.ufuzz_catch, result.ufuzz_var + ' = new Error("invalid `in`");');
} else if (is_error_tdz(result)) {
patch(result.ufuzz_catch, result.ufuzz_var + ' = new Error("TDZ");');
} else if (is_error_spread(result)) {
patch(result.ufuzz_catch, result.ufuzz_var + ' = new Error("spread not iterable");');
} else if (is_error_recursion(result)) {
@@ -2545,10 +2551,10 @@ for (var round = 1; round <= num_iterations; round++) {
}
}
if (!ok && original_erred && uglify_erred && (
// ignore difference in error message caused by Temporal Dead Zone
original_result.name == "ReferenceError" && uglify_result.name == "ReferenceError"
// ignore difference in error message caused by `in`
|| is_error_in(original_result) && is_error_in(uglify_result)
is_error_in(original_result) && is_error_in(uglify_result)
// ignore difference in error message caused by Temporal Dead Zone
|| is_error_tdz(original_result) && is_error_tdz(uglify_result)
// ignore difference in error message caused by spread syntax
|| is_error_spread(original_result) && is_error_spread(uglify_result)
// ignore difference in error message caused by destructuring assignment