Index: src/preparser.cc |
diff --git a/src/preparser.cc b/src/preparser.cc |
index 8422c060a6b8f5b0e55f294bffafba94dfd77b27..b1f2348701c8d2b1bd42a0d7a9a6aa221f1c62e0 100644 |
--- a/src/preparser.cc |
+++ b/src/preparser.cc |
@@ -72,7 +72,7 @@ PreParser::PreParseResult PreParser::PreParseLazyFunction( |
ReportUnexpectedToken(scanner()->current_token()); |
} else { |
ASSERT_EQ(Token::RBRACE, scanner()->peek()); |
- if (!is_classic_mode()) { |
+ if (!scope_->is_classic_mode()) { |
int end_pos = scanner()->location().end_pos; |
CheckOctalLiteral(start_position, end_pos, &ok); |
if (ok) { |
@@ -97,40 +97,6 @@ PreParser::PreParseResult PreParser::PreParseLazyFunction( |
// That means that contextual checks (like a label being declared where |
// it is used) are generally omitted. |
-void PreParser::ReportUnexpectedToken(Token::Value token) { |
- // We don't report stack overflows here, to avoid increasing the |
- // stack depth even further. Instead we report it after parsing is |
- // over, in ParseProgram. |
- if (token == Token::ILLEGAL && stack_overflow()) { |
- return; |
- } |
- Scanner::Location source_location = scanner()->location(); |
- |
- // Four of the tokens are treated specially |
- switch (token) { |
- case Token::EOS: |
- return ReportMessageAt(source_location, "unexpected_eos", NULL); |
- case Token::NUMBER: |
- return ReportMessageAt(source_location, "unexpected_token_number", NULL); |
- case Token::STRING: |
- return ReportMessageAt(source_location, "unexpected_token_string", NULL); |
- case Token::IDENTIFIER: |
- return ReportMessageAt(source_location, |
- "unexpected_token_identifier", NULL); |
- case Token::FUTURE_RESERVED_WORD: |
- return ReportMessageAt(source_location, "unexpected_reserved", NULL); |
- case Token::YIELD: |
- case Token::FUTURE_STRICT_RESERVED_WORD: |
- return ReportMessageAt(source_location, |
- is_classic_mode() ? "unexpected_token_identifier" |
- : "unexpected_strict_reserved", |
- NULL); |
- default: |
- const char* name = Token::String(token); |
- ReportMessageAt(source_location, "unexpected_token", name); |
- } |
-} |
- |
#define CHECK_OK ok); \ |
if (!*ok) return kUnknownSourceElements; \ |
@@ -271,7 +237,7 @@ PreParser::Statement PreParser::ParseStatement(bool* ok) { |
Scanner::Location start_location = scanner()->peek_location(); |
Statement statement = ParseFunctionDeclaration(CHECK_OK); |
Scanner::Location end_location = scanner()->location(); |
- if (!is_classic_mode()) { |
+ if (!scope_->is_classic_mode()) { |
ReportMessageAt(start_location.beg_pos, end_location.end_pos, |
"strict_function", NULL); |
*ok = false; |
@@ -480,7 +446,7 @@ PreParser::Statement PreParser::ParseExpressionOrLabelledStatement(bool* ok) { |
// Expression is a single identifier, and not, e.g., a parenthesized |
// identifier. |
ASSERT(!expr.AsIdentifier().IsFutureReserved()); |
- ASSERT(is_classic_mode() || |
+ ASSERT(scope_->is_classic_mode() || |
(!expr.AsIdentifier().IsFutureStrictReserved() && |
!expr.AsIdentifier().IsYield())); |
Consume(Token::COLON); |
@@ -578,7 +544,7 @@ PreParser::Statement PreParser::ParseWithStatement(bool* ok) { |
// WithStatement :: |
// 'with' '(' Expression ')' Statement |
Expect(Token::WITH, CHECK_OK); |
- if (!is_classic_mode()) { |
+ if (!scope_->is_classic_mode()) { |
Scanner::Location location = scanner()->location(); |
ReportMessageAt(location, "strict_mode_with", NULL); |
*ok = false; |
@@ -834,7 +800,7 @@ PreParser::Expression PreParser::ParseAssignmentExpression(bool accept_IN, |
return expression; |
} |
- if (!is_classic_mode() && |
+ if (!scope_->is_classic_mode() && |
expression.IsIdentifier() && |
expression.AsIdentifier().IsEvalOrArguments()) { |
Scanner::Location after = scanner()->location(); |
@@ -928,7 +894,7 @@ PreParser::Expression PreParser::ParseUnaryExpression(bool* ok) { |
op = Next(); |
Scanner::Location before = scanner()->peek_location(); |
Expression expression = ParseUnaryExpression(CHECK_OK); |
- if (!is_classic_mode() && |
+ if (!scope_->is_classic_mode() && |
expression.IsIdentifier() && |
expression.AsIdentifier().IsEvalOrArguments()) { |
Scanner::Location after = scanner()->location(); |
@@ -951,7 +917,7 @@ PreParser::Expression PreParser::ParsePostfixExpression(bool* ok) { |
Expression expression = ParseLeftHandSideExpression(CHECK_OK); |
if (!scanner()->HasAnyLineTerminatorBeforeNext() && |
Token::IsCountOp(peek())) { |
- if (!is_classic_mode() && |
+ if (!scope_->is_classic_mode() && |
expression.IsIdentifier() && |
expression.AsIdentifier().IsEvalOrArguments()) { |
Scanner::Location after = scanner()->location(); |
@@ -1392,7 +1358,7 @@ PreParser::Expression PreParser::ParseFunctionLiteral(bool is_generator, |
} |
Expect(Token::RBRACE, CHECK_OK); |
- if (!is_classic_mode()) { |
+ if (!scope_->is_classic_mode()) { |
int end_position = scanner()->location().end_pos; |
CheckOctalLiteral(start_position, end_position, CHECK_OK); |
CheckDelayedStrictModeViolation(start_position, end_position, CHECK_OK); |
@@ -1500,11 +1466,11 @@ PreParser::Identifier PreParser::ParseIdentifier( |
if (next == Token::IDENTIFIER) { |
PreParser::Identifier name = GetIdentifierSymbol(); |
if (allow_eval_or_arguments == kDontAllowEvalOrArguments && |
- !is_classic_mode() && name.IsEvalOrArguments()) { |
+ !scope_->is_classic_mode() && name.IsEvalOrArguments()) { |
StrictModeIdentifierViolation(scanner()->location(), name, ok); |
} |
return name; |
- } else if (is_classic_mode() && |
+ } else if (scope_->is_classic_mode() && |
(next == Token::FUTURE_STRICT_RESERVED_WORD || |
(next == Token::YIELD && !scope_->is_generator()))) { |
return GetIdentifierSymbol(); |
@@ -1519,7 +1485,7 @@ PreParser::Identifier PreParser::ParseIdentifier( |
void PreParser::SetStrictModeViolation(Scanner::Location location, |
const char* type, |
bool* ok) { |
- if (!is_classic_mode()) { |
+ if (!scope_->is_classic_mode()) { |
ReportMessageAt(location, type, NULL); |
*ok = false; |
return; |
@@ -1558,7 +1524,7 @@ void PreParser::StrictModeIdentifierViolation(Scanner::Location location, |
} else if (identifier.IsFutureStrictReserved() || identifier.IsYield()) { |
type = "unexpected_strict_reserved"; |
} |
- if (!is_classic_mode()) { |
+ if (!scope_->is_classic_mode()) { |
ReportMessageAt(location, type, NULL); |
*ok = false; |
return; |