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

Side by Side Diff: src/preparser.h

Issue 350353002: Test that trailing commas in object literals are allowed (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | test/cctest/test-parsing.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/func-name-inferrer.h" 10 #include "src/func-name-inferrer.h"
(...skipping 1525 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 1536
1537 1537
1538 template <class Traits> 1538 template <class Traits>
1539 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseObjectLiteral( 1539 typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseObjectLiteral(
1540 bool* ok) { 1540 bool* ok) {
1541 // ObjectLiteral :: 1541 // ObjectLiteral ::
1542 // '{' (( 1542 // '{' ((
1543 // ((IdentifierName | String | Number) ':' AssignmentExpression) | 1543 // ((IdentifierName | String | Number) ':' AssignmentExpression) |
1544 // (('get' | 'set') (IdentifierName | String | Number) FunctionLiteral) 1544 // (('get' | 'set') (IdentifierName | String | Number) FunctionLiteral)
1545 // ) ',')* '}' 1545 // ) ',')* '}'
1546 // (Except that trailing comma is not required and not allowed.) 1546 // (Except that the trailing comma is not required.)
1547 1547
1548 int pos = peek_position(); 1548 int pos = peek_position();
1549 typename Traits::Type::PropertyList properties = 1549 typename Traits::Type::PropertyList properties =
1550 this->NewPropertyList(4, zone_); 1550 this->NewPropertyList(4, zone_);
1551 int number_of_boilerplate_properties = 0; 1551 int number_of_boilerplate_properties = 0;
1552 bool has_function = false; 1552 bool has_function = false;
1553 1553
1554 ObjectLiteralChecker checker(this, strict_mode()); 1554 ObjectLiteralChecker checker(this, strict_mode());
1555 1555
1556 Expect(Token::LBRACE, CHECK_OK); 1556 Expect(Token::LBRACE, CHECK_OK);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 // property. (Parser only.) 1667 // property. (Parser only.)
1668 this->CheckFunctionLiteralInsideTopLevelObjectLiteral(scope_, value, 1668 this->CheckFunctionLiteralInsideTopLevelObjectLiteral(scope_, value,
1669 &has_function); 1669 &has_function);
1670 1670
1671 // Count CONSTANT or COMPUTED properties to maintain the enumeration order. 1671 // Count CONSTANT or COMPUTED properties to maintain the enumeration order.
1672 if (this->IsBoilerplateProperty(property)) { 1672 if (this->IsBoilerplateProperty(property)) {
1673 number_of_boilerplate_properties++; 1673 number_of_boilerplate_properties++;
1674 } 1674 }
1675 properties->Add(property, zone()); 1675 properties->Add(property, zone());
1676 1676
1677 // TODO(1240767): Consider allowing trailing comma. 1677 // TODO(1240767): Consider allowing trailing comma.
marja 2014/06/25 10:04:00 Pls remove this TODO.
1678 if (peek() != Token::RBRACE) { 1678 if (peek() != Token::RBRACE) {
1679 // Need {} because of the CHECK_OK macro. 1679 // Need {} because of the CHECK_OK macro.
1680 Expect(Token::COMMA, CHECK_OK); 1680 Expect(Token::COMMA, CHECK_OK);
1681 } 1681 }
1682 1682
1683 if (fni_ != NULL) { 1683 if (fni_ != NULL) {
1684 fni_->Infer(); 1684 fni_->Infer();
1685 fni_->Leave(); 1685 fni_->Leave();
1686 } 1686 }
1687 } 1687 }
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
2207 parser()->ReportMessage("accessor_get_set"); 2207 parser()->ReportMessage("accessor_get_set");
2208 } 2208 }
2209 *ok = false; 2209 *ok = false;
2210 } 2210 }
2211 } 2211 }
2212 2212
2213 2213
2214 } } // v8::internal 2214 } } // v8::internal
2215 2215
2216 #endif // V8_PREPARSER_H 2216 #endif // V8_PREPARSER_H
OLDNEW
« no previous file with comments | « no previous file | test/cctest/test-parsing.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698