Require a semicolon after do/while

This commit is contained in:
Marijn Haverbeke
2012-10-17 23:09:15 +02:00
parent e3514627a4
commit daefc220da
3 changed files with 4 additions and 15 deletions

View File

@@ -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

View File

@@ -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">&quot;DoWhileStatement&quot;</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">&#182;</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">&quot;DoWhileStatement&quot;</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">&#182;</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

View File

@@ -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
} }
} }
}, },