suppress false positives in ufuzz (#4419)
This commit is contained in:
10
README.md
10
README.md
@@ -1217,3 +1217,13 @@ To allow for better optimizations, the compiler makes various assumptions:
|
|||||||
// SyntaxError: Identifier 'a' has already been declared
|
// SyntaxError: Identifier 'a' has already been declared
|
||||||
```
|
```
|
||||||
UglifyJS may modify the input which in turn may suppress those errors.
|
UglifyJS may modify the input which in turn may suppress those errors.
|
||||||
|
- Later versions of JavaScript will throw `SyntaxError` with the following:
|
||||||
|
```js
|
||||||
|
try {
|
||||||
|
// ...
|
||||||
|
} catch ({ message: a }) {
|
||||||
|
var a;
|
||||||
|
}
|
||||||
|
// SyntaxError: Identifier 'a' has already been declared
|
||||||
|
```
|
||||||
|
UglifyJS may modify the input which in turn may suppress those errors.
|
||||||
|
|||||||
@@ -862,16 +862,15 @@ function createStatement(recurmax, canThrow, canBreak, canContinue, cannotReturn
|
|||||||
var block_len = block_vars.length;
|
var block_len = block_vars.length;
|
||||||
var nameLenBefore = VAR_NAMES.length;
|
var nameLenBefore = VAR_NAMES.length;
|
||||||
var unique_len = unique_vars.length;
|
var unique_len = unique_vars.length;
|
||||||
var offset = SUPPORT.catch_omit_var ? 0 : SUPPORT.destructuring ? 1 : 2;
|
if (SUPPORT.catch_omit_var && !rng(20)) {
|
||||||
switch (offset + rng(20 - offset)) {
|
|
||||||
case 0:
|
|
||||||
s += " catch { ";
|
s += " catch { ";
|
||||||
break;
|
} else if (canThrow && SUPPORT.destructuring && !rng(20)) {
|
||||||
case 1:
|
unique_vars.push("a", "b", "c", "undefined", "NaN", "Infinity");
|
||||||
var name = createVarName(MANDATORY);
|
var name = createVarName(MANDATORY);
|
||||||
block_vars.push(name);
|
block_vars.push(name);
|
||||||
var message = createVarName(MANDATORY);
|
var message = createVarName(MANDATORY);
|
||||||
block_vars.push(message);
|
block_vars.push(message);
|
||||||
|
unique_vars.length -= 6;
|
||||||
if (SUPPORT.computed_key && rng(10) == 0) {
|
if (SUPPORT.computed_key && rng(10) == 0) {
|
||||||
s += " catch ({ message: " + message + ", ";
|
s += " catch ({ message: " + message + ", ";
|
||||||
addAvoidVars([ name ]);
|
addAvoidVars([ name ]);
|
||||||
@@ -881,12 +880,10 @@ function createStatement(recurmax, canThrow, canBreak, canContinue, cannotReturn
|
|||||||
} else {
|
} else {
|
||||||
s += " catch ({ name: " + name + ", message: " + message + " }) { ";
|
s += " catch ({ name: " + name + ", message: " + message + " }) { ";
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
default:
|
|
||||||
var name = createVarName(MANDATORY);
|
var name = createVarName(MANDATORY);
|
||||||
if (!catch_redef) unique_vars.push(name);
|
if (!catch_redef) unique_vars.push(name);
|
||||||
s += " catch (" + name + ") { ";
|
s += " catch (" + name + ") { ";
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
var catches = VAR_NAMES.length - nameLenBefore;
|
var catches = VAR_NAMES.length - nameLenBefore;
|
||||||
s += defns() + "\n";
|
s += defns() + "\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user