Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(952)

Unified Diff: src/parsing/preparser.cc

Issue 2179423002: [parser] Refactor parser and preparser traits (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/parsing/preparser.h ('K') | « src/parsing/preparser.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/parsing/preparser.cc
diff --git a/src/parsing/preparser.cc b/src/parsing/preparser.cc
index ae141f7076f9866d93666439de90262707325f6c..d90d943d9fb70ac6b1b7377590ca68388ee3a50e 100644
--- a/src/parsing/preparser.cc
+++ b/src/parsing/preparser.cc
@@ -45,56 +45,47 @@ void PreParserTraits::ReportMessageAt(Scanner::Location location,
MessageTemplate::Template message,
const char* arg,
ParseErrorType error_type) {
- ReportMessageAt(location.beg_pos, location.end_pos, message, arg, error_type);
+ pre_parser_->log_->LogMessage(location.beg_pos, location.end_pos, message,
+ arg, error_type);
}
-
-void PreParserTraits::ReportMessageAt(int start_pos, int end_pos,
+void PreParserTraits::ReportMessageAt(Scanner::Location location,
MessageTemplate::Template message,
- const char* arg,
+ const AstRawString* arg,
ParseErrorType error_type) {
- pre_parser_->log_->LogMessage(start_pos, end_pos, message, arg, error_type);
+ UNREACHABLE();
}
PreParserIdentifier PreParserTraits::GetSymbol(Scanner* scanner) {
- if (scanner->current_token() == Token::ENUM) {
- return PreParserIdentifier::Enum();
- } else if (scanner->current_token() == Token::AWAIT) {
- return PreParserIdentifier::Await();
- } else if (scanner->current_token() ==
- Token::FUTURE_STRICT_RESERVED_WORD) {
- return PreParserIdentifier::FutureStrictReserved();
- } else if (scanner->current_token() == Token::LET) {
- return PreParserIdentifier::Let();
- } else if (scanner->current_token() == Token::STATIC) {
- return PreParserIdentifier::Static();
- } else if (scanner->current_token() == Token::YIELD) {
- return PreParserIdentifier::Yield();
- } else if (scanner->current_token() == Token::ASYNC) {
- return PreParserIdentifier::Async();
- }
- if (scanner->UnescapedLiteralMatches("eval", 4)) {
- return PreParserIdentifier::Eval();
- }
- if (scanner->UnescapedLiteralMatches("arguments", 9)) {
- return PreParserIdentifier::Arguments();
- }
- if (scanner->UnescapedLiteralMatches("undefined", 9)) {
- return PreParserIdentifier::Undefined();
- }
- if (scanner->LiteralMatches("prototype", 9)) {
- return PreParserIdentifier::Prototype();
- }
- if (scanner->LiteralMatches("constructor", 11)) {
- return PreParserIdentifier::Constructor();
+ switch (scanner->current_token()) {
marja 2016/08/18 08:36:16 This change is pretty surprising in the context of
nickie 2016/08/18 09:14:04 You're right, this change is rather unrelated, but
+ case Token::ENUM:
+ return PreParserIdentifier::Enum();
+ case Token::AWAIT:
+ return PreParserIdentifier::Await();
+ case Token::FUTURE_STRICT_RESERVED_WORD:
+ return PreParserIdentifier::FutureStrictReserved();
+ case Token::LET:
+ return PreParserIdentifier::Let();
+ case Token::STATIC:
+ return PreParserIdentifier::Static();
+ case Token::YIELD:
+ return PreParserIdentifier::Yield();
+ case Token::ASYNC:
+ return PreParserIdentifier::Async();
+ default:
+ if (scanner->UnescapedLiteralMatches("eval", 4))
+ return PreParserIdentifier::Eval();
+ if (scanner->UnescapedLiteralMatches("arguments", 9))
+ return PreParserIdentifier::Arguments();
+ if (scanner->UnescapedLiteralMatches("undefined", 9))
+ return PreParserIdentifier::Undefined();
+ if (scanner->LiteralMatches("prototype", 9))
+ return PreParserIdentifier::Prototype();
+ if (scanner->LiteralMatches("constructor", 11))
+ return PreParserIdentifier::Constructor();
+ return PreParserIdentifier::Default();
}
- return PreParserIdentifier::Default();
-}
-
-
-PreParserIdentifier PreParserTraits::GetNumberAsSymbol(Scanner* scanner) {
- return PreParserIdentifier::Default();
}
@@ -262,9 +253,9 @@ void PreParser::ParseStatementList(int end_token, bool* ok,
// TC39 deemed "use strict" directives to be an error when occurring
// in the body of a function with non-simple parameter list, on
// 29/7/2015. https://goo.gl/ueA7Ln
- PreParserTraits::ReportMessageAt(
- token_loc, MessageTemplate::kIllegalLanguageModeDirective,
- "use strict");
+ ReportMessageAt(token_loc,
+ MessageTemplate::kIllegalLanguageModeDirective,
+ "use strict");
*ok = false;
return;
}
@@ -589,7 +580,7 @@ PreParser::Statement PreParser::ParseVariableDeclarations(
}
} else if ((require_initializer || is_pattern) &&
(var_context != kForStatement || !PeekInOrOf())) {
- PreParserTraits::ReportMessageAt(
+ ReportMessageAt(
Scanner::Location(decl_pos, scanner()->location().end_pos),
MessageTemplate::kDeclarationMissingInitializer,
is_pattern ? "destructuring" : "const");
@@ -616,8 +607,8 @@ PreParser::Statement PreParser::ParseFunctionDeclaration(bool* ok) {
if (Check(Token::MUL)) {
flags |= ParseFunctionFlags::kIsGenerator;
if (allow_harmony_restrictive_declarations()) {
- PreParserTraits::ReportMessageAt(
- scanner()->location(), MessageTemplate::kGeneratorInLegacyContext);
+ ReportMessageAt(scanner()->location(),
+ MessageTemplate::kGeneratorInLegacyContext);
*ok = false;
return Statement::Default();
}
@@ -884,9 +875,9 @@ PreParser::Statement PreParser::ParseForStatement(bool* ok) {
if (CheckInOrOf(&mode, ok)) {
if (!*ok) return Statement::Default();
if (decl_count != 1) {
- PreParserTraits::ReportMessageAt(
- bindings_loc, MessageTemplate::kForInOfLoopMultiBindings,
- ForEachStatement::VisitModeString(mode));
+ ReportMessageAt(bindings_loc,
+ MessageTemplate::kForInOfLoopMultiBindings,
+ ForEachStatement::VisitModeString(mode));
*ok = false;
return Statement::Default();
}
@@ -898,9 +889,9 @@ PreParser::Statement PreParser::ParseForStatement(bool* ok) {
if (use_counts_ != nullptr && allow_harmony_for_in()) {
++use_counts_[v8::Isolate::kForInInitializer];
}
- PreParserTraits::ReportMessageAt(
- first_initializer_loc, MessageTemplate::kForInOfLoopInitializer,
- ForEachStatement::VisitModeString(mode));
+ ReportMessageAt(first_initializer_loc,
+ MessageTemplate::kForInOfLoopInitializer,
+ ForEachStatement::VisitModeString(mode));
*ok = false;
return Statement::Default();
}
« src/parsing/preparser.h ('K') | « src/parsing/preparser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698