Bug 1297706 - Syntax parse with statements. r=jandem

This commit is contained in:
Shu-yu Guo 2016-09-01 13:55:58 +02:00
parent 85437bebb4
commit c91529919f
2 changed files with 4 additions and 19 deletions

View File

@ -5786,18 +5786,10 @@ Parser<ParseHandler>::yieldExpression(InHandling inHandling)
MOZ_CRASH("yieldExpr");
}
template <>
ParseNode*
Parser<FullParseHandler>::withStatement(YieldHandling yieldHandling)
template <typename ParseHandler>
typename ParseHandler::Node
Parser<ParseHandler>::withStatement(YieldHandling yieldHandling)
{
// test262/ch12/12.10/12.10-0-1.js fails if we try to parse with-statements
// in syntax-parse mode. See bug 892583.
if (handler.syntaxParser) {
handler.disableSyntaxParser();
abortedSyntaxParse = true;
return null();
}
MOZ_ASSERT(tokenStream.isCurrentTokenType(TOK_WITH));
uint32_t begin = pos().begin;
@ -5831,14 +5823,6 @@ Parser<FullParseHandler>::withStatement(YieldHandling yieldHandling)
return handler.newWithStatement(begin, objectExpr, innerBlock);
}
template <>
SyntaxParseHandler::Node
Parser<SyntaxParseHandler>::withStatement(YieldHandling yieldHandling)
{
JS_ALWAYS_FALSE(abortIfSyntaxParser());
return null();
}
template <typename ParseHandler>
typename ParseHandler::Node
Parser<ParseHandler>::labeledItem(YieldHandling yieldHandling)

View File

@ -297,6 +297,7 @@ class SyntaxParseHandler
Node newContinueStatement(PropertyName* label, const TokenPos& pos) { return NodeGeneric; }
Node newBreakStatement(PropertyName* label, const TokenPos& pos) { return NodeBreak; }
Node newReturnStatement(Node expr, const TokenPos& pos) { return NodeReturn; }
Node newWithStatement(uint32_t begin, Node expr, Node body) { return NodeGeneric; }
Node newLabeledStatement(PropertyName* label, Node stmt, uint32_t begin) {
return NodeGeneric;