Chromium Code Reviews| Index: src/scanner.cc |
| diff --git a/src/scanner.cc b/src/scanner.cc |
| index 2e8e24b06f0d7e54d3ba7246f43438c7eca53a08..b4c773172b511d3544a3c1542869b4b77c54e466 100644 |
| --- a/src/scanner.cc |
| +++ b/src/scanner.cc |
| @@ -901,76 +901,78 @@ uc32 Scanner::ScanIdentifierUnicodeEscape() { |
| // ---------------------------------------------------------------------------- |
| // Keyword Matcher |
| -#define KEYWORDS(KEYWORD_GROUP, KEYWORD) \ |
| - KEYWORD_GROUP('b') \ |
| - KEYWORD("break", Token::BREAK) \ |
| - KEYWORD_GROUP('c') \ |
| - KEYWORD("case", Token::CASE) \ |
| - KEYWORD("catch", Token::CATCH) \ |
| - KEYWORD("class", Token::FUTURE_RESERVED_WORD) \ |
| - KEYWORD("const", Token::CONST) \ |
| - KEYWORD("continue", Token::CONTINUE) \ |
| - KEYWORD_GROUP('d') \ |
| - KEYWORD("debugger", Token::DEBUGGER) \ |
| - KEYWORD("default", Token::DEFAULT) \ |
| - KEYWORD("delete", Token::DELETE) \ |
| - KEYWORD("do", Token::DO) \ |
| - KEYWORD_GROUP('e') \ |
| - KEYWORD("else", Token::ELSE) \ |
| - KEYWORD("enum", Token::FUTURE_RESERVED_WORD) \ |
| - KEYWORD("export", harmony_modules \ |
| - ? Token::EXPORT : Token::FUTURE_RESERVED_WORD) \ |
| - KEYWORD("extends", Token::FUTURE_RESERVED_WORD) \ |
| - KEYWORD_GROUP('f') \ |
| - KEYWORD("false", Token::FALSE_LITERAL) \ |
| - KEYWORD("finally", Token::FINALLY) \ |
| - KEYWORD("for", Token::FOR) \ |
| - KEYWORD("function", Token::FUNCTION) \ |
| - KEYWORD_GROUP('i') \ |
| - KEYWORD("if", Token::IF) \ |
| - KEYWORD("implements", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| - KEYWORD("import", harmony_modules \ |
| - ? Token::IMPORT : Token::FUTURE_RESERVED_WORD) \ |
| - KEYWORD("in", Token::IN) \ |
| - KEYWORD("instanceof", Token::INSTANCEOF) \ |
| - KEYWORD("interface", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| - KEYWORD_GROUP('l') \ |
| - KEYWORD("let", harmony_scoping \ |
| - ? Token::LET : Token::FUTURE_STRICT_RESERVED_WORD) \ |
| - KEYWORD_GROUP('n') \ |
| - KEYWORD("new", Token::NEW) \ |
| - KEYWORD("null", Token::NULL_LITERAL) \ |
| - KEYWORD_GROUP('p') \ |
| - KEYWORD("package", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| - KEYWORD("private", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| - KEYWORD("protected", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| - KEYWORD("public", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| - KEYWORD_GROUP('r') \ |
| - KEYWORD("return", Token::RETURN) \ |
| - KEYWORD_GROUP('s') \ |
| - KEYWORD("static", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| - KEYWORD("super", Token::FUTURE_RESERVED_WORD) \ |
| - KEYWORD("switch", Token::SWITCH) \ |
| - KEYWORD_GROUP('t') \ |
| - KEYWORD("this", Token::THIS) \ |
| - KEYWORD("throw", Token::THROW) \ |
| - KEYWORD("true", Token::TRUE_LITERAL) \ |
| - KEYWORD("try", Token::TRY) \ |
| - KEYWORD("typeof", Token::TYPEOF) \ |
| - KEYWORD_GROUP('v') \ |
| - KEYWORD("var", Token::VAR) \ |
| - KEYWORD("void", Token::VOID) \ |
| - KEYWORD_GROUP('w') \ |
| - KEYWORD("while", Token::WHILE) \ |
| - KEYWORD("with", Token::WITH) \ |
| - KEYWORD_GROUP('y') \ |
| +#define KEYWORDS(KEYWORD_GROUP, KEYWORD) \ |
| + KEYWORD_GROUP('b') \ |
| + KEYWORD("break", Token::BREAK) \ |
| + KEYWORD_GROUP('c') \ |
| + KEYWORD("case", Token::CASE) \ |
| + KEYWORD("catch", Token::CATCH) \ |
| + KEYWORD("class", Token::FUTURE_RESERVED_WORD) \ |
|
arv (Not doing code reviews)
2014/08/15 19:41:07
I see your comment is not really reflecting this.
Dmitry Lomov (no reviews)
2014/08/15 22:11:41
Updated comment to reflect reality of this patch.
|
| + KEYWORD("const", Token::CONST) \ |
| + KEYWORD("continue", Token::CONTINUE) \ |
| + KEYWORD_GROUP('d') \ |
| + KEYWORD("debugger", Token::DEBUGGER) \ |
| + KEYWORD("default", Token::DEFAULT) \ |
| + KEYWORD("delete", Token::DELETE) \ |
| + KEYWORD("do", Token::DO) \ |
| + KEYWORD_GROUP('e') \ |
| + KEYWORD("else", Token::ELSE) \ |
| + KEYWORD("enum", Token::FUTURE_RESERVED_WORD) \ |
| + KEYWORD("export", \ |
| + harmony_modules ? Token::EXPORT : Token::FUTURE_RESERVED_WORD) \ |
| + KEYWORD("extends", Token::FUTURE_RESERVED_WORD) \ |
| + KEYWORD_GROUP('f') \ |
| + KEYWORD("false", Token::FALSE_LITERAL) \ |
| + KEYWORD("finally", Token::FINALLY) \ |
| + KEYWORD("for", Token::FOR) \ |
| + KEYWORD("function", Token::FUNCTION) \ |
| + KEYWORD_GROUP('i') \ |
| + KEYWORD("if", Token::IF) \ |
| + KEYWORD("implements", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| + KEYWORD("import", \ |
| + harmony_modules ? Token::IMPORT : Token::FUTURE_RESERVED_WORD) \ |
| + KEYWORD("in", Token::IN) \ |
| + KEYWORD("instanceof", Token::INSTANCEOF) \ |
| + KEYWORD("interface", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| + KEYWORD_GROUP('l') \ |
| + KEYWORD("let", \ |
| + harmony_scoping ? Token::LET : Token::FUTURE_STRICT_RESERVED_WORD) \ |
| + KEYWORD_GROUP('n') \ |
| + KEYWORD("new", Token::NEW) \ |
| + KEYWORD("null", Token::NULL_LITERAL) \ |
| + KEYWORD_GROUP('p') \ |
| + KEYWORD("package", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| + KEYWORD("private", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| + KEYWORD("protected", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| + KEYWORD("public", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| + KEYWORD_GROUP('r') \ |
| + KEYWORD("return", Token::RETURN) \ |
| + KEYWORD_GROUP('s') \ |
| + KEYWORD("static", Token::FUTURE_STRICT_RESERVED_WORD) \ |
| + KEYWORD("super", \ |
| + harmony_classes ? Token::SUPER : Token::FUTURE_RESERVED_WORD) \ |
| + KEYWORD("switch", Token::SWITCH) \ |
| + KEYWORD_GROUP('t') \ |
| + KEYWORD("this", Token::THIS) \ |
| + KEYWORD("throw", Token::THROW) \ |
| + KEYWORD("true", Token::TRUE_LITERAL) \ |
| + KEYWORD("try", Token::TRY) \ |
| + KEYWORD("typeof", Token::TYPEOF) \ |
| + KEYWORD_GROUP('v') \ |
| + KEYWORD("var", Token::VAR) \ |
| + KEYWORD("void", Token::VOID) \ |
| + KEYWORD_GROUP('w') \ |
| + KEYWORD("while", Token::WHILE) \ |
| + KEYWORD("with", Token::WITH) \ |
| + KEYWORD_GROUP('y') \ |
| KEYWORD("yield", Token::YIELD) |
| static Token::Value KeywordOrIdentifierToken(const uint8_t* input, |
| int input_length, |
| bool harmony_scoping, |
| - bool harmony_modules) { |
| + bool harmony_modules, |
| + bool harmony_classes) { |
| DCHECK(input_length >= 1); |
| const int kMinLength = 2; |
| const int kMaxLength = 10; |
| @@ -1014,7 +1016,8 @@ bool Scanner::IdentifierIsFutureStrictReserved( |
| return string->is_one_byte() && |
| Token::FUTURE_STRICT_RESERVED_WORD == |
| KeywordOrIdentifierToken(string->raw_data(), string->length(), |
| - harmony_scoping_, harmony_modules_); |
| + harmony_scoping_, harmony_modules_, |
| + harmony_classes_); |
| } |
| @@ -1057,7 +1060,8 @@ Token::Value Scanner::ScanIdentifierOrKeyword() { |
| return KeywordOrIdentifierToken(chars.start(), |
| chars.length(), |
| harmony_scoping_, |
| - harmony_modules_); |
| + harmony_modules_, |
| + harmony_classes_); |
| } |
| return Token::IDENTIFIER; |