Make semicolon optional in do-while in >=ES6

This commit is contained in:
Sebastian McKenzie 2014-12-10 18:59:24 +11:00 committed by Marijn Haverbeke
parent e252acbe67
commit 53d98f1175
2 changed files with 50 additions and 1 deletions

View File

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

View File

@ -13605,6 +13605,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});