| 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/v8.h" |     8 #include "src/v8.h" | 
|     9  |     9  | 
|    10 #include "src/bailout-reason.h" |    10 #include "src/bailout-reason.h" | 
| (...skipping 2479 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2490 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseArrayLiteral( |  2490 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseArrayLiteral( | 
|  2491     ExpressionClassifier* classifier, bool* ok) { |  2491     ExpressionClassifier* classifier, bool* ok) { | 
|  2492   // ArrayLiteral :: |  2492   // ArrayLiteral :: | 
|  2493   //   '[' Expression? (',' Expression?)* ']' |  2493   //   '[' Expression? (',' Expression?)* ']' | 
|  2494  |  2494  | 
|  2495   int pos = peek_position(); |  2495   int pos = peek_position(); | 
|  2496   typename Traits::Type::ExpressionList values = |  2496   typename Traits::Type::ExpressionList values = | 
|  2497       this->NewExpressionList(4, zone_); |  2497       this->NewExpressionList(4, zone_); | 
|  2498   Expect(Token::LBRACK, CHECK_OK); |  2498   Expect(Token::LBRACK, CHECK_OK); | 
|  2499   while (peek() != Token::RBRACK) { |  2499   while (peek() != Token::RBRACK) { | 
 |  2500     bool seen_spread = false; | 
|  2500     ExpressionT elem = this->EmptyExpression(); |  2501     ExpressionT elem = this->EmptyExpression(); | 
|  2501     if (peek() == Token::COMMA) { |  2502     if (peek() == Token::COMMA) { | 
|  2502       if (is_strong(language_mode())) { |  2503       if (is_strong(language_mode())) { | 
|  2503         ReportMessageAt(scanner()->peek_location(), |  2504         ReportMessageAt(scanner()->peek_location(), | 
|  2504                         MessageTemplate::kStrongEllision); |  2505                         MessageTemplate::kStrongEllision); | 
|  2505         *ok = false; |  2506         *ok = false; | 
|  2506         return this->EmptyExpression(); |  2507         return this->EmptyExpression(); | 
|  2507       } |  2508       } | 
|  2508       elem = this->GetLiteralTheHole(peek_position(), factory()); |  2509       elem = this->GetLiteralTheHole(peek_position(), factory()); | 
 |  2510     } else if (peek() == Token::ELLIPSIS) { | 
 |  2511       ExpressionUnexpectedToken(classifier); | 
 |  2512       int start_pos = peek_position(); | 
 |  2513       Consume(Token::ELLIPSIS); | 
 |  2514       ExpressionT argument = | 
 |  2515           this->ParseAssignmentExpression(true, classifier, CHECK_OK); | 
 |  2516  | 
 |  2517       elem = factory()->NewSpread(argument, start_pos); | 
 |  2518       seen_spread = true; | 
|  2509     } else { |  2519     } else { | 
|  2510       elem = this->ParseAssignmentExpression(true, classifier, CHECK_OK); |  2520       elem = this->ParseAssignmentExpression(true, classifier, CHECK_OK); | 
|  2511     } |  2521     } | 
|  2512     values->Add(elem, zone_); |  2522     values->Add(elem, zone_); | 
|  2513     if (peek() != Token::RBRACK) { |  2523     if (peek() != Token::RBRACK) { | 
 |  2524       if (seen_spread) { | 
 |  2525         BindingPatternUnexpectedToken(classifier); | 
 |  2526       } | 
|  2514       Expect(Token::COMMA, CHECK_OK); |  2527       Expect(Token::COMMA, CHECK_OK); | 
|  2515     } |  2528     } | 
|  2516   } |  2529   } | 
|  2517   Expect(Token::RBRACK, CHECK_OK); |  2530   Expect(Token::RBRACK, CHECK_OK); | 
|  2518  |  2531  | 
|  2519   // Update the scope information before the pre-parsing bailout. |  2532   // Update the scope information before the pre-parsing bailout. | 
|  2520   int literal_index = function_state_->NextMaterializedLiteralIndex(); |  2533   int literal_index = function_state_->NextMaterializedLiteralIndex(); | 
|  2521  |  2534  | 
|  2522   return factory()->NewArrayLiteral(values, literal_index, |  2535   return factory()->NewArrayLiteral(values, literal_index, | 
|  2523                                     is_strong(language_mode()), pos); |  2536                                     is_strong(language_mode()), pos); | 
| (...skipping 1483 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4007       *ok = false; |  4020       *ok = false; | 
|  4008       return; |  4021       return; | 
|  4009     } |  4022     } | 
|  4010     has_seen_constructor_ = true; |  4023     has_seen_constructor_ = true; | 
|  4011     return; |  4024     return; | 
|  4012   } |  4025   } | 
|  4013 } |  4026 } | 
|  4014 } }  // v8::internal |  4027 } }  // v8::internal | 
|  4015  |  4028  | 
|  4016 #endif  // V8_PREPARSER_H |  4029 #endif  // V8_PREPARSER_H | 
| OLD | NEW |