| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_PREPARSER_H | 5 #ifndef V8_PREPARSER_H |
| 6 #define V8_PREPARSER_H | 6 #define V8_PREPARSER_H |
| 7 | 7 |
| 8 #include "src/bailout-reason.h" | 8 #include "src/bailout-reason.h" |
| 9 #include "src/expression-classifier.h" | 9 #include "src/expression-classifier.h" |
| 10 #include "src/func-name-inferrer.h" | 10 #include "src/func-name-inferrer.h" |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 | 414 |
| 415 void ExpectContextualKeyword(Vector<const char> keyword, bool* ok) { | 415 void ExpectContextualKeyword(Vector<const char> keyword, bool* ok) { |
| 416 Expect(Token::IDENTIFIER, ok); | 416 Expect(Token::IDENTIFIER, ok); |
| 417 if (!*ok) return; | 417 if (!*ok) return; |
| 418 if (!scanner()->is_literal_contextual_keyword(keyword)) { | 418 if (!scanner()->is_literal_contextual_keyword(keyword)) { |
| 419 ReportUnexpectedToken(scanner()->current_token()); | 419 ReportUnexpectedToken(scanner()->current_token()); |
| 420 *ok = false; | 420 *ok = false; |
| 421 } | 421 } |
| 422 } | 422 } |
| 423 | 423 |
| 424 bool CheckInOrOf( | 424 bool CheckInOrOf(ForEachStatement::VisitMode* visit_mode, bool* ok) { |
| 425 bool accept_OF, ForEachStatement::VisitMode* visit_mode, bool* ok) { | |
| 426 if (Check(Token::IN)) { | 425 if (Check(Token::IN)) { |
| 427 if (is_strong(language_mode())) { | 426 if (is_strong(language_mode())) { |
| 428 ReportMessageAt(scanner()->location(), MessageTemplate::kStrongForIn); | 427 ReportMessageAt(scanner()->location(), MessageTemplate::kStrongForIn); |
| 429 *ok = false; | 428 *ok = false; |
| 430 } else { | 429 } else { |
| 431 *visit_mode = ForEachStatement::ENUMERATE; | 430 *visit_mode = ForEachStatement::ENUMERATE; |
| 432 } | 431 } |
| 433 return true; | 432 return true; |
| 434 } else if (accept_OF && CheckContextualKeyword(CStrVector("of"))) { | 433 } else if (CheckContextualKeyword(CStrVector("of"))) { |
| 435 *visit_mode = ForEachStatement::ITERATE; | 434 *visit_mode = ForEachStatement::ITERATE; |
| 436 return true; | 435 return true; |
| 437 } | 436 } |
| 438 return false; | 437 return false; |
| 439 } | 438 } |
| 440 | 439 |
| 441 // Checks whether an octal literal was last seen between beg_pos and end_pos. | 440 // Checks whether an octal literal was last seen between beg_pos and end_pos. |
| 442 // If so, reports an error. Only called for strict mode and template strings. | 441 // If so, reports an error. Only called for strict mode and template strings. |
| 443 void CheckOctalLiteral(int beg_pos, int end_pos, | 442 void CheckOctalLiteral(int beg_pos, int end_pos, |
| 444 MessageTemplate::Template message, bool* ok) { | 443 MessageTemplate::Template message, bool* ok) { |
| (...skipping 3777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4222 return; | 4221 return; |
| 4223 } | 4222 } |
| 4224 has_seen_constructor_ = true; | 4223 has_seen_constructor_ = true; |
| 4225 return; | 4224 return; |
| 4226 } | 4225 } |
| 4227 } | 4226 } |
| 4228 } // namespace internal | 4227 } // namespace internal |
| 4229 } // namespace v8 | 4228 } // namespace v8 |
| 4230 | 4229 |
| 4231 #endif // V8_PREPARSER_H | 4230 #endif // V8_PREPARSER_H |
| OLD | NEW |