Merge pull request #896 from avdg/do-while-semicolon
Semicolon after do...while statement is optional
This commit is contained in:
@@ -724,9 +724,9 @@ function parse($TEXT, options) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
function semicolon() {
|
function semicolon(optional) {
|
||||||
if (is("punc", ";")) next();
|
if (is("punc", ";")) next();
|
||||||
else if (!can_insert_semicolon()) unexpected();
|
else if (!optional && !can_insert_semicolon()) unexpected();
|
||||||
};
|
};
|
||||||
|
|
||||||
function parenthesised() {
|
function parenthesised() {
|
||||||
@@ -814,7 +814,7 @@ function parse($TEXT, options) {
|
|||||||
case "do":
|
case "do":
|
||||||
return new AST_Do({
|
return new AST_Do({
|
||||||
body : in_loop(statement),
|
body : in_loop(statement),
|
||||||
condition : (expect_token("keyword", "while"), tmp = parenthesised(), semicolon(), tmp)
|
condition : (expect_token("keyword", "while"), tmp = parenthesised(), semicolon(true), tmp)
|
||||||
});
|
});
|
||||||
|
|
||||||
case "while":
|
case "while":
|
||||||
|
|||||||
@@ -121,3 +121,27 @@ drop_if_else_break_4: {
|
|||||||
for (; bar() && (x(), y(), foo());) baz(), z(), k();
|
for (; bar() && (x(), y(), foo());) baz(), z(), k();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parse_do_while_with_semicolon: {
|
||||||
|
options = { loops: false };
|
||||||
|
input: {
|
||||||
|
do {
|
||||||
|
x();
|
||||||
|
} while (false);y()
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
do x(); while (false);y();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_do_while_without_semicolon: {
|
||||||
|
options = { loops: false };
|
||||||
|
input: {
|
||||||
|
do {
|
||||||
|
x();
|
||||||
|
} while (false)y()
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
do x(); while (false);y();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user