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

Side by Side Diff: src/preparser.h

Issue 307393002: Misc cleanup (split from the "delay string / value internalization" CL). (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: fix (the amount of error reporting functions is too damn high!) 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 | « src/parser.cc ('k') | src/utils.h » ('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/func-name-inferrer.h" 8 #include "src/func-name-inferrer.h"
9 #include "src/hashmap.h" 9 #include "src/hashmap.h"
10 #include "src/scopes.h" 10 #include "src/scopes.h"
(...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1227 return ReportMessageAt(source_location, "unexpected_token_identifier"); 1227 return ReportMessageAt(source_location, "unexpected_token_identifier");
1228 case Token::FUTURE_RESERVED_WORD: 1228 case Token::FUTURE_RESERVED_WORD:
1229 return ReportMessageAt(source_location, "unexpected_reserved"); 1229 return ReportMessageAt(source_location, "unexpected_reserved");
1230 case Token::YIELD: 1230 case Token::YIELD:
1231 case Token::FUTURE_STRICT_RESERVED_WORD: 1231 case Token::FUTURE_STRICT_RESERVED_WORD:
1232 return ReportMessageAt(source_location, strict_mode() == SLOPPY 1232 return ReportMessageAt(source_location, strict_mode() == SLOPPY
1233 ? "unexpected_token_identifier" : "unexpected_strict_reserved"); 1233 ? "unexpected_token_identifier" : "unexpected_strict_reserved");
1234 default: 1234 default:
1235 const char* name = Token::String(token); 1235 const char* name = Token::String(token);
1236 ASSERT(name != NULL); 1236 ASSERT(name != NULL);
1237 Traits::ReportMessageAt( 1237 Traits::ReportMessageAt(source_location, "unexpected_token", name);
1238 source_location, "unexpected_token", name);
1239 } 1238 }
1240 } 1239 }
1241 1240
1242 1241
1243 template<class Traits> 1242 template<class Traits>
1244 typename ParserBase<Traits>::IdentifierT ParserBase<Traits>::ParseIdentifier( 1243 typename ParserBase<Traits>::IdentifierT ParserBase<Traits>::ParseIdentifier(
1245 AllowEvalOrArgumentsAsIdentifier allow_eval_or_arguments, 1244 AllowEvalOrArgumentsAsIdentifier allow_eval_or_arguments,
1246 bool* ok) { 1245 bool* ok) {
1247 Token::Value next = Next(); 1246 Token::Value next = Next();
1248 if (next == Token::IDENTIFIER) { 1247 if (next == Token::IDENTIFIER) {
1249 IdentifierT name = this->GetSymbol(scanner()); 1248 IdentifierT name = this->GetSymbol(scanner());
1250 if (allow_eval_or_arguments == kDontAllowEvalOrArguments && 1249 if (allow_eval_or_arguments == kDontAllowEvalOrArguments &&
1251 strict_mode() == STRICT && this->IsEvalOrArguments(name)) { 1250 strict_mode() == STRICT && this->IsEvalOrArguments(name)) {
1252 ReportMessageAt(scanner()->location(), "strict_eval_arguments"); 1251 ReportMessage("strict_eval_arguments");
1253 *ok = false; 1252 *ok = false;
1254 } 1253 }
1255 return name; 1254 return name;
1256 } else if (strict_mode() == SLOPPY && 1255 } else if (strict_mode() == SLOPPY &&
1257 (next == Token::FUTURE_STRICT_RESERVED_WORD || 1256 (next == Token::FUTURE_STRICT_RESERVED_WORD ||
1258 (next == Token::YIELD && !is_generator()))) { 1257 (next == Token::YIELD && !is_generator()))) {
1259 return this->GetSymbol(scanner()); 1258 return this->GetSymbol(scanner());
1260 } else { 1259 } else {
1261 this->ReportUnexpectedToken(next); 1260 this->ReportUnexpectedToken(next);
1262 *ok = false; 1261 *ok = false;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 ReportMessage("unterminated_regexp"); 1318 ReportMessage("unterminated_regexp");
1320 *ok = false; 1319 *ok = false;
1321 return Traits::EmptyExpression(); 1320 return Traits::EmptyExpression();
1322 } 1321 }
1323 1322
1324 int literal_index = function_state_->NextMaterializedLiteralIndex(); 1323 int literal_index = function_state_->NextMaterializedLiteralIndex();
1325 1324
1326 IdentifierT js_pattern = this->NextLiteralString(scanner(), TENURED); 1325 IdentifierT js_pattern = this->NextLiteralString(scanner(), TENURED);
1327 if (!scanner()->ScanRegExpFlags()) { 1326 if (!scanner()->ScanRegExpFlags()) {
1328 Next(); 1327 Next();
1329 ReportMessageAt(scanner()->location(), "invalid_regexp_flags"); 1328 ReportMessage("invalid_regexp_flags");
1330 *ok = false; 1329 *ok = false;
1331 return Traits::EmptyExpression(); 1330 return Traits::EmptyExpression();
1332 } 1331 }
1333 IdentifierT js_flags = this->NextLiteralString(scanner(), TENURED); 1332 IdentifierT js_flags = this->NextLiteralString(scanner(), TENURED);
1334 Next(); 1333 Next();
1335 return factory()->NewRegExpLiteral(js_pattern, js_flags, literal_index, pos); 1334 return factory()->NewRegExpLiteral(js_pattern, js_flags, literal_index, pos);
1336 } 1335 }
1337 1336
1338 1337
1339 #define CHECK_OK ok); \ 1338 #define CHECK_OK ok); \
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1662 1661
1663 typename Traits::Type::ExpressionList result = 1662 typename Traits::Type::ExpressionList result =
1664 this->NewExpressionList(4, zone_); 1663 this->NewExpressionList(4, zone_);
1665 Expect(Token::LPAREN, CHECK_OK_CUSTOM(NullExpressionList)); 1664 Expect(Token::LPAREN, CHECK_OK_CUSTOM(NullExpressionList));
1666 bool done = (peek() == Token::RPAREN); 1665 bool done = (peek() == Token::RPAREN);
1667 while (!done) { 1666 while (!done) {
1668 ExpressionT argument = this->ParseAssignmentExpression( 1667 ExpressionT argument = this->ParseAssignmentExpression(
1669 true, CHECK_OK_CUSTOM(NullExpressionList)); 1668 true, CHECK_OK_CUSTOM(NullExpressionList));
1670 result->Add(argument, zone_); 1669 result->Add(argument, zone_);
1671 if (result->length() > Code::kMaxArguments) { 1670 if (result->length() > Code::kMaxArguments) {
1672 ReportMessageAt(scanner()->location(), "too_many_arguments"); 1671 ReportMessage("too_many_arguments");
1673 *ok = false; 1672 *ok = false;
1674 return this->NullExpressionList(); 1673 return this->NullExpressionList();
1675 } 1674 }
1676 done = (peek() == Token::RPAREN); 1675 done = (peek() == Token::RPAREN);
1677 if (!done) { 1676 if (!done) {
1678 // Need {} because of the CHECK_OK_CUSTOM macro. 1677 // Need {} because of the CHECK_OK_CUSTOM macro.
1679 Expect(Token::COMMA, CHECK_OK_CUSTOM(NullExpressionList)); 1678 Expect(Token::COMMA, CHECK_OK_CUSTOM(NullExpressionList));
1680 } 1679 }
1681 } 1680 }
1682 Expect(Token::RPAREN, CHECK_OK_CUSTOM(NullExpressionList)); 1681 Expect(Token::RPAREN, CHECK_OK_CUSTOM(NullExpressionList));
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
2145 if (property == Token::NUMBER) { 2144 if (property == Token::NUMBER) {
2146 old = scanner()->FindNumber(&finder_, type); 2145 old = scanner()->FindNumber(&finder_, type);
2147 } else { 2146 } else {
2148 old = scanner()->FindSymbol(&finder_, type); 2147 old = scanner()->FindSymbol(&finder_, type);
2149 } 2148 }
2150 PropertyKind old_type = static_cast<PropertyKind>(old); 2149 PropertyKind old_type = static_cast<PropertyKind>(old);
2151 if (HasConflict(old_type, type)) { 2150 if (HasConflict(old_type, type)) {
2152 if (IsDataDataConflict(old_type, type)) { 2151 if (IsDataDataConflict(old_type, type)) {
2153 // Both are data properties. 2152 // Both are data properties.
2154 if (strict_mode_ == SLOPPY) return; 2153 if (strict_mode_ == SLOPPY) return;
2155 parser()->ReportMessageAt(scanner()->location(), 2154 parser()->ReportMessage("strict_duplicate_property");
2156 "strict_duplicate_property");
2157 } else if (IsDataAccessorConflict(old_type, type)) { 2155 } else if (IsDataAccessorConflict(old_type, type)) {
2158 // Both a data and an accessor property with the same name. 2156 // Both a data and an accessor property with the same name.
2159 parser()->ReportMessageAt(scanner()->location(), 2157 parser()->ReportMessage("accessor_data_property");
2160 "accessor_data_property");
2161 } else { 2158 } else {
2162 ASSERT(IsAccessorAccessorConflict(old_type, type)); 2159 ASSERT(IsAccessorAccessorConflict(old_type, type));
2163 // Both accessors of the same type. 2160 // Both accessors of the same type.
2164 parser()->ReportMessageAt(scanner()->location(), 2161 parser()->ReportMessage("accessor_get_set");
2165 "accessor_get_set");
2166 } 2162 }
2167 *ok = false; 2163 *ok = false;
2168 } 2164 }
2169 } 2165 }
2170 2166
2171 2167
2172 } } // v8::internal 2168 } } // v8::internal
2173 2169
2174 #endif // V8_PREPARSER_H 2170 #endif // V8_PREPARSER_H
OLDNEW
« no previous file with comments | « src/parser.cc ('k') | src/utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698