Require a semicolon after do/while
This commit is contained in:
1
acorn.js
1
acorn.js
@@ -1017,6 +1017,7 @@
|
|||||||
labels.pop();
|
labels.pop();
|
||||||
expect(_while);
|
expect(_while);
|
||||||
node.test = parseParenExpression();
|
node.test = parseParenExpression();
|
||||||
|
semicolon();
|
||||||
return finishNode(node, "DoWhileStatement");
|
return finishNode(node, "DoWhileStatement");
|
||||||
|
|
||||||
// Disambiguating between a `for` and a `for`/`in` loop is
|
// Disambiguating between a `for` and a `for`/`in` loop is
|
||||||
|
|||||||
@@ -699,6 +699,7 @@ continue to.</p> </td> <td class="code"> <
|
|||||||
<span class="nx">labels</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span>
|
<span class="nx">labels</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span>
|
||||||
<span class="nx">expect</span><span class="p">(</span><span class="nx">_while</span><span class="p">);</span>
|
<span class="nx">expect</span><span class="p">(</span><span class="nx">_while</span><span class="p">);</span>
|
||||||
<span class="nx">node</span><span class="p">.</span><span class="nx">test</span> <span class="o">=</span> <span class="nx">parseParenExpression</span><span class="p">();</span>
|
<span class="nx">node</span><span class="p">.</span><span class="nx">test</span> <span class="o">=</span> <span class="nx">parseParenExpression</span><span class="p">();</span>
|
||||||
|
<span class="nx">semicolon</span><span class="p">();</span>
|
||||||
<span class="k">return</span> <span class="nx">finishNode</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="s2">"DoWhileStatement"</span><span class="p">);</span></pre></div> </td> </tr> <tr id="section-93"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-93">¶</a> </div> <p>Disambiguating between a <code>for</code> and a <code>for</code>/<code>in</code> loop is
|
<span class="k">return</span> <span class="nx">finishNode</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="s2">"DoWhileStatement"</span><span class="p">);</span></pre></div> </td> </tr> <tr id="section-93"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-93">¶</a> </div> <p>Disambiguating between a <code>for</code> and a <code>for</code>/<code>in</code> loop is
|
||||||
non-trivial. Basically, we have to parse the init <code>var</code>
|
non-trivial. Basically, we have to parse the init <code>var</code>
|
||||||
statement or expression, disallowing the <code>in</code> operator (see
|
statement or expression, disallowing the <code>in</code> operator (see
|
||||||
|
|||||||
@@ -17695,19 +17695,6 @@ test("do keep(); while (true);", {
|
|||||||
line: 1,
|
line: 1,
|
||||||
column: 0
|
column: 0
|
||||||
},
|
},
|
||||||
end: {
|
|
||||||
line: 1,
|
|
||||||
column: 23
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "EmptyStatement",
|
|
||||||
loc: {
|
|
||||||
start: {
|
|
||||||
line: 1,
|
|
||||||
column: 23
|
|
||||||
},
|
|
||||||
end: {
|
end: {
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 24
|
column: 24
|
||||||
@@ -17897,7 +17884,7 @@ test("do { x++; y--; } while (x < 10)", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test("{ do { } while (false) false }", {
|
test("{ do { } while (false);false }", {
|
||||||
type: "Program",
|
type: "Program",
|
||||||
body: [
|
body: [
|
||||||
{
|
{
|
||||||
@@ -17940,7 +17927,7 @@ test("{ do { } while (false) false }", {
|
|||||||
},
|
},
|
||||||
end: {
|
end: {
|
||||||
line: 1,
|
line: 1,
|
||||||
column: 22
|
column: 23
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user