improve object function generation in ufuzz (#4434)
This commit is contained in:
@@ -1267,10 +1267,10 @@ function createObjectFunction(recurmax, stmtDepth, canThrow) {
|
|||||||
var nameLenBefore = VAR_NAMES.length;
|
var nameLenBefore = VAR_NAMES.length;
|
||||||
var save_async = async;
|
var save_async = async;
|
||||||
var s;
|
var s;
|
||||||
|
var name = createObjectKey(recurmax, stmtDepth, canThrow);
|
||||||
createBlockVariables(recurmax, stmtDepth, canThrow, function(defns) {
|
createBlockVariables(recurmax, stmtDepth, canThrow, function(defns) {
|
||||||
switch (rng(SUPPORT.computed_key ? 3 : 2)) {
|
switch (rng(SUPPORT.computed_key ? 3 : 2)) {
|
||||||
case 0:
|
case 0:
|
||||||
var name = createObjectKey(recurmax, stmtDepth, canThrow);
|
|
||||||
async = false;
|
async = false;
|
||||||
s = [
|
s = [
|
||||||
"get " + name + "(){",
|
"get " + name + "(){",
|
||||||
@@ -1282,23 +1282,21 @@ function createObjectFunction(recurmax, stmtDepth, canThrow) {
|
|||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
var prop1 = createObjectKey(recurmax, stmtDepth, canThrow);
|
var prop;
|
||||||
var prop2;
|
|
||||||
do {
|
do {
|
||||||
prop2 = getDotKey();
|
prop = getDotKey();
|
||||||
} while (prop1 == prop2);
|
} while (name == prop);
|
||||||
async = false;
|
async = false;
|
||||||
s = [
|
s = [
|
||||||
"set " + prop1 + "(" + createVarName(MANDATORY) + "){",
|
"set " + name + "(" + createVarName(MANDATORY) + "){",
|
||||||
strictMode(),
|
strictMode(),
|
||||||
defns(),
|
defns(),
|
||||||
_createStatements(2, recurmax, canThrow, CANNOT_BREAK, CANNOT_CONTINUE, CAN_RETURN, stmtDepth),
|
_createStatements(2, recurmax, canThrow, CANNOT_BREAK, CANNOT_CONTINUE, CAN_RETURN, stmtDepth),
|
||||||
"this." + prop2 + createAssignment() + _createBinaryExpr(recurmax, COMMA_OK, stmtDepth, canThrow) + ";",
|
"this." + prop + createAssignment() + _createBinaryExpr(recurmax, COMMA_OK, stmtDepth, canThrow) + ";",
|
||||||
"},",
|
"},",
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
var name = createObjectKey(recurmax, stmtDepth, canThrow);
|
|
||||||
async = SUPPORT.async && rng(50) == 0;
|
async = SUPPORT.async && rng(50) == 0;
|
||||||
s = [
|
s = [
|
||||||
(async ? "async " : "") + name + "(" + createParams(save_async, NO_DUPLICATE) + "){",
|
(async ? "async " : "") + name + "(" + createParams(save_async, NO_DUPLICATE) + "){",
|
||||||
|
|||||||
Reference in New Issue
Block a user