tweaks to fuzzer

- labels to start at 10000
- fix for-in expression
- fix `getLabel()` returning `undefined`
This commit is contained in:
alexlamsl 2017-04-21 18:28:51 +08:00
parent b002aaed87
commit c0c976a47c

View File

@ -352,7 +352,7 @@ function createLabel(canBreak, canContinue) {
label = canBreak[canBreak.length - 1] + 1; label = canBreak[canBreak.length - 1] + 1;
} else { } else {
canBreak = canBreak ? [ "" ] : []; canBreak = canBreak ? [ "" ] : [];
label = 1; label = 10000;
} }
canBreak.push(label); canBreak.push(label);
if (Array.isArray(canContinue)) { if (Array.isArray(canContinue)) {
@ -370,6 +370,7 @@ function createLabel(canBreak, canContinue) {
} }
function getLabel(label) { function getLabel(label) {
if (!Array.isArray(label)) return "";
label = label[rng(label.length)]; label = label[rng(label.length)];
return label && " L" + label; return label && " L" + label;
} }
@ -408,7 +409,7 @@ function createStatement(recurmax, canThrow, canBreak, canContinue, cannotReturn
if (rng(5) > 1) { if (rng(5) > 1) {
optElementVar = 'var ' + createVarName(MANDATORY) + ' = expr' + loop + '[key' + loop + ']; '; optElementVar = 'var ' + createVarName(MANDATORY) + ' = expr' + loop + '[key' + loop + ']; ';
} }
return label.target + ' for (var key' + loop + ' in ' + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + ') {' + optElementVar + createStatement(recurmax, canThrow, label.break, label.continue, cannotReturn, stmtDepth) + '}'; return '{var expr' + loop + ' = ' + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + '; ' + label.target + ' for (var key' + loop + ' in expr' + loop + ') {' + optElementVar + createStatement(recurmax, canThrow, label.break, label.continue, cannotReturn, stmtDepth) + '}}';
case STMT_SEMI: case STMT_SEMI:
return ';'; return ';';
case STMT_EXPR: case STMT_EXPR: