Make semicolon optional in do-while in >=ES6

This commit is contained in:
Sebastian McKenzie 2014-12-10 18:59:24 +11:00
parent 9d3580b23a
commit 841ab6802f
2 changed files with 51 additions and 1 deletions

View File

@ -1603,7 +1603,11 @@
labels.pop();
expect(_while);
node.test = parseParenExpression();
semicolon();
if (options.ecmaVersion >= 6) {
eat(_semi);
} else {
semicolon();
}
return finishNode(node, "DoWhileStatement");
}

View File

@ -13405,6 +13405,52 @@ test("/[a-z]/u", {
ecmaVersion: 6
});
test("do {} while (false) foo();", {
type: "Program",
start: 0,
end: 26,
body: [
{
type: "DoWhileStatement",
start: 0,
end: 19,
body: {
type: "BlockStatement",
start: 3,
end: 5,
body: []
},
test: {
type: "Literal",
start: 13,
end: 18,
value: false,
raw: "false"
}
},
{
type: "ExpressionStatement",
start: 20,
end: 26,
expression: {
type: "CallExpression",
start: 20,
end: 25,
callee: {
type: "Identifier",
start: 20,
end: 23,
name: "foo"
},
arguments: []
}
}
]
}, {
ecmaVersion: 6
});
// Harmony Invalid syntax
testFail("0o", "Expected number in radix 8 (1:2)", {ecmaVersion: 6});