parent
5c44c13465
commit
d36c70bbbf
1
acorn.js
1
acorn.js
@ -1233,6 +1233,7 @@
|
|||||||
var kind = tokType.isLoop ? "loop" : tokType === _switch ? "switch" : null;
|
var kind = tokType.isLoop ? "loop" : tokType === _switch ? "switch" : null;
|
||||||
labels.push({name: maybeName, kind: kind});
|
labels.push({name: maybeName, kind: kind});
|
||||||
node.body = parseStatement();
|
node.body = parseStatement();
|
||||||
|
labels.pop();
|
||||||
node.label = expr;
|
node.label = expr;
|
||||||
return finishNode(node, "LabeledStatement");
|
return finishNode(node, "LabeledStatement");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -902,6 +902,7 @@ Identifier node, we switch to interpreting it as a label.</p> </td>
|
|||||||
<span class="kd">var</span> <span class="nx">kind</span> <span class="o">=</span> <span class="nx">tokType</span><span class="p">.</span><span class="nx">isLoop</span> <span class="o">?</span> <span class="s2">"loop"</span> <span class="o">:</span> <span class="nx">tokType</span> <span class="o">===</span> <span class="nx">_switch</span> <span class="o">?</span> <span class="s2">"switch"</span> <span class="o">:</span> <span class="kc">null</span><span class="p">;</span>
|
<span class="kd">var</span> <span class="nx">kind</span> <span class="o">=</span> <span class="nx">tokType</span><span class="p">.</span><span class="nx">isLoop</span> <span class="o">?</span> <span class="s2">"loop"</span> <span class="o">:</span> <span class="nx">tokType</span> <span class="o">===</span> <span class="nx">_switch</span> <span class="o">?</span> <span class="s2">"switch"</span> <span class="o">:</span> <span class="kc">null</span><span class="p">;</span>
|
||||||
<span class="nx">labels</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span><span class="nx">name</span><span class="o">:</span> <span class="nx">maybeName</span><span class="p">,</span> <span class="nx">kind</span><span class="o">:</span> <span class="nx">kind</span><span class="p">});</span>
|
<span class="nx">labels</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span><span class="nx">name</span><span class="o">:</span> <span class="nx">maybeName</span><span class="p">,</span> <span class="nx">kind</span><span class="o">:</span> <span class="nx">kind</span><span class="p">});</span>
|
||||||
<span class="nx">node</span><span class="p">.</span><span class="nx">body</span> <span class="o">=</span> <span class="nx">parseStatement</span><span class="p">();</span>
|
<span class="nx">node</span><span class="p">.</span><span class="nx">body</span> <span class="o">=</span> <span class="nx">parseStatement</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">node</span><span class="p">.</span><span class="nx">label</span> <span class="o">=</span> <span class="nx">expr</span><span class="p">;</span>
|
<span class="nx">node</span><span class="p">.</span><span class="nx">label</span> <span class="o">=</span> <span class="nx">expr</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">"LabeledStatement"</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">"LabeledStatement"</span><span class="p">);</span>
|
||||||
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
||||||
|
|||||||
@ -26029,6 +26029,42 @@ test("'a\\u0026b'", {
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("foo: 10; foo: 20;", {
|
||||||
|
type: "Program",
|
||||||
|
body: [
|
||||||
|
{
|
||||||
|
type: "LabeledStatement",
|
||||||
|
body: {
|
||||||
|
type: "ExpressionStatement",
|
||||||
|
expression: {
|
||||||
|
type: "Literal",
|
||||||
|
value: 10,
|
||||||
|
raw: "10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
type: "Identifier",
|
||||||
|
name: "foo"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "LabeledStatement",
|
||||||
|
body: {
|
||||||
|
type: "ExpressionStatement",
|
||||||
|
expression: {
|
||||||
|
type: "Literal",
|
||||||
|
value: 20,
|
||||||
|
raw: "20"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
type: "Identifier",
|
||||||
|
name: "foo"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
// Failure tests
|
// Failure tests
|
||||||
|
|
||||||
testFail("{",
|
testFail("{",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user