Chromium Code Reviews| Index: src/preparser.h |
| diff --git a/src/preparser.h b/src/preparser.h |
| index 6733658579c0f1adc4a8b3ad418367eb80187c65..ed1d709c6770e807d967fc31b10c89d279592167 100644 |
| --- a/src/preparser.h |
| +++ b/src/preparser.h |
| @@ -327,7 +327,7 @@ class ParserBase : public Traits { |
| Scanner::Location octal = scanner()->octal_position(); |
| if (octal.IsValid() && beg_pos <= octal.beg_pos && |
| octal.end_pos <= end_pos) { |
| - ReportMessageAt(octal, "strict_octal_literal"); |
| + this->ReportMessageAt(octal, "strict_octal_literal"); |
| scanner()->clear_octal_position(); |
| *ok = false; |
| } |
| @@ -348,16 +348,10 @@ class ParserBase : public Traits { |
| bool is_generator() const { return function_state_->is_generator(); } |
| // Report syntax errors. |
| - void ReportMessage(const char* message, Vector<const char*> args, |
| + void ReportMessage(const char* message, const char* arg = NULL, |
| bool is_reference_error = false) { |
| Scanner::Location source_location = scanner()->location(); |
| - Traits::ReportMessageAt(source_location, message, args, is_reference_error); |
| - } |
| - |
| - void ReportMessageAt(Scanner::Location location, const char* message, |
| - bool is_reference_error = false) { |
| - Traits::ReportMessageAt(location, message, Vector<const char*>::empty(), |
| - is_reference_error); |
| + Traits::ReportMessageAt(source_location, message, arg, is_reference_error); |
| } |
| void ReportUnexpectedToken(Token::Value token); |
| @@ -369,9 +363,7 @@ class ParserBase : public Traits { |
| // allow_eval_or_arguments is kAllowEvalOrArguments, we allow "eval" or |
| // "arguments" as identifier even in strict mode (this is needed in cases like |
| // "var foo = eval;"). |
| - IdentifierT ParseIdentifier( |
| - AllowEvalOrArgumentsAsIdentifier, |
| - bool* ok); |
| + IdentifierT ParseIdentifier(AllowEvalOrArgumentsAsIdentifier, bool* ok); |
| // Parses an identifier or a strict mode future reserved word, and indicate |
| // whether it is strict mode future reserved. |
| IdentifierT ParseIdentifierOrStrictReservedWord( |
| @@ -968,16 +960,12 @@ class PreParserTraits { |
| // Reporting errors. |
| void ReportMessageAt(Scanner::Location location, |
| const char* message, |
| - Vector<const char*> args, |
| - bool is_reference_error = false); |
| - void ReportMessageAt(Scanner::Location location, |
| - const char* type, |
| - const char* name_opt, |
| + const char* arg = NULL, |
| bool is_reference_error = false); |
| void ReportMessageAt(int start_pos, |
| int end_pos, |
| - const char* type, |
| - const char* name_opt, |
| + const char* message, |
| + const char* arg = NULL, |
| bool is_reference_error = false); |
| // "null" return type creators. |
| @@ -1002,8 +990,8 @@ class PreParserTraits { |
| // Producing data during the recursive descent. |
| PreParserIdentifier GetSymbol(Scanner* scanner); |
| - static PreParserIdentifier NextLiteralString(Scanner* scanner, |
| - PretenureFlag tenured) { |
| + |
| + PreParserIdentifier GetNextSymbol(Scanner* scanner) { |
| return PreParserIdentifier::Default(); |
| } |
| @@ -1223,24 +1211,25 @@ void ParserBase<Traits>::ReportUnexpectedToken(Token::Value token) { |
| // Four of the tokens are treated specially |
| switch (token) { |
| case Token::EOS: |
| - return ReportMessageAt(source_location, "unexpected_eos"); |
| + return this->ReportMessageAt(source_location, "unexpected_eos"); |
| case Token::NUMBER: |
| - return ReportMessageAt(source_location, "unexpected_token_number"); |
| + return this->ReportMessageAt(source_location, "unexpected_token_number"); |
| case Token::STRING: |
| - return ReportMessageAt(source_location, "unexpected_token_string"); |
| + return this->ReportMessageAt(source_location, "unexpected_token_string"); |
| case Token::IDENTIFIER: |
| - return ReportMessageAt(source_location, "unexpected_token_identifier"); |
| + return this->ReportMessageAt(source_location, |
| + "unexpected_token_identifier"); |
| case Token::FUTURE_RESERVED_WORD: |
| - return ReportMessageAt(source_location, "unexpected_reserved"); |
| + return this->ReportMessageAt(source_location, "unexpected_reserved"); |
| case Token::YIELD: |
| case Token::FUTURE_STRICT_RESERVED_WORD: |
| - return ReportMessageAt(source_location, strict_mode() == SLOPPY |
| + return this->ReportMessageAt(source_location, strict_mode() == SLOPPY |
| ? "unexpected_token_identifier" : "unexpected_strict_reserved"); |
| default: |
| const char* name = Token::String(token); |
| ASSERT(name != NULL); |
| Traits::ReportMessageAt( |
| - source_location, "unexpected_token", Vector<const char*>(&name, 1)); |
| + source_location, "unexpected_token", name); |
| } |
| } |
| @@ -1253,7 +1242,8 @@ typename ParserBase<Traits>::IdentifierT ParserBase<Traits>::ParseIdentifier( |
| if (next == Token::IDENTIFIER) { |
| IdentifierT name = this->GetSymbol(scanner()); |
| if (allow_eval_or_arguments == kDontAllowEvalOrArguments && |
| - strict_mode() == STRICT && this->IsEvalOrArguments(name)) { |
| + strict_mode() == STRICT && |
| + this->IsEvalOrArguments(name)) { |
| ReportMessageAt(scanner()->location(), "strict_eval_arguments"); |
| *ok = false; |
| } |
| @@ -1305,8 +1295,7 @@ ParserBase<Traits>::ParseIdentifierName(bool* ok) { |
| template <class Traits> |
| typename ParserBase<Traits>::IdentifierT |
| -ParserBase<Traits>::ParseIdentifierNameOrGetOrSet(bool* is_get, |
| - bool* is_set, |
| +ParserBase<Traits>::ParseIdentifierNameOrGetOrSet(bool* is_get, bool* is_set, |
| bool* ok) { |
| IdentifierT result = ParseIdentifierName(ok); |
| if (!*ok) return Traits::EmptyIdentifier(); |
| @@ -1321,21 +1310,21 @@ typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseRegExpLiteral( |
| int pos = peek_position(); |
| if (!scanner()->ScanRegExpPattern(seen_equal)) { |
| Next(); |
| - ReportMessage("unterminated_regexp", Vector<const char*>::empty()); |
| + this->ReportMessage("unterminated_regexp"); |
| *ok = false; |
| return Traits::EmptyExpression(); |
| } |
| int literal_index = function_state_->NextMaterializedLiteralIndex(); |
| - IdentifierT js_pattern = this->NextLiteralString(scanner(), TENURED); |
| + IdentifierT js_pattern = this->GetNextSymbol(scanner()); |
| if (!scanner()->ScanRegExpFlags()) { |
| Next(); |
| - ReportMessageAt(scanner()->location(), "invalid_regexp_flags"); |
| + this->ReportMessage("invalid_regexp_flags"); |
| *ok = false; |
| return Traits::EmptyExpression(); |
| } |
| - IdentifierT js_flags = this->NextLiteralString(scanner(), TENURED); |
| + IdentifierT js_flags = this->GetNextSymbol(scanner()); |
| Next(); |
| return factory()->NewRegExpLiteral(js_pattern, js_flags, literal_index, pos); |
| } |
| @@ -1864,7 +1853,7 @@ ParserBase<Traits>::ParseUnaryExpression(bool* ok) { |
| // "delete identifier" is a syntax error in strict mode. |
| if (op == Token::DELETE && strict_mode() == STRICT && |
| this->IsIdentifier(expression)) { |
| - ReportMessage("strict_delete", Vector<const char*>::empty()); |
| + this->ReportMessage("strict_delete"); |
| *ok = false; |
| return this->EmptyExpression(); |
| } |
| @@ -2118,7 +2107,8 @@ ParserBase<Traits>::CheckAndRewriteReferenceExpression( |
| Scanner::Location location, const char* message, bool* ok) { |
| if (strict_mode() == STRICT && this->IsIdentifier(expression) && |
| this->IsEvalOrArguments(this->AsIdentifier(expression))) { |
| - this->ReportMessageAt(location, "strict_eval_arguments", false); |
| + this->ReportMessageAt(location, "strict_eval_arguments", (const char*)NULL, |
|
rossberg
2014/05/08 12:52:08
Nit: style guide forbids C casts
marja
2014/06/03 08:48:20
This change is no longer needed
|
| + false); |
| *ok = false; |
| return this->EmptyExpression(); |
| } else if (expression->IsValidReferenceExpression()) { |
| @@ -2130,7 +2120,7 @@ ParserBase<Traits>::CheckAndRewriteReferenceExpression( |
| ExpressionT error = this->NewThrowReferenceError(message, pos); |
| return factory()->NewProperty(expression, error, pos); |
| } else { |
| - this->ReportMessageAt(location, message, true); |
| + this->ReportMessageAt(location, message, (const char*)NULL, true); |
|
rossberg
2014/05/08 12:52:08
Same here
marja
2014/06/03 08:48:20
This change is no longer needed
|
| *ok = false; |
| return this->EmptyExpression(); |
| } |