| 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/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 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 void CheckOctalLiteral(int beg_pos, int end_pos, bool* ok) { | 327 void CheckOctalLiteral(int beg_pos, int end_pos, bool* ok) { |
| 328 Scanner::Location octal = scanner()->octal_position(); | 328 Scanner::Location octal = scanner()->octal_position(); |
| 329 if (octal.IsValid() && beg_pos <= octal.beg_pos && | 329 if (octal.IsValid() && beg_pos <= octal.beg_pos && |
| 330 octal.end_pos <= end_pos) { | 330 octal.end_pos <= end_pos) { |
| 331 ReportMessageAt(octal, "strict_octal_literal"); | 331 ReportMessageAt(octal, "strict_octal_literal"); |
| 332 scanner()->clear_octal_position(); | 332 scanner()->clear_octal_position(); |
| 333 *ok = false; | 333 *ok = false; |
| 334 } | 334 } |
| 335 } | 335 } |
| 336 | 336 |
| 337 // Validates strict mode for function parameter lists. This has to be |
| 338 // done after parsing the function, since the function can declare |
| 339 // itself strict. |
| 340 void CheckStrictFunctionNameAndParameters( |
| 341 IdentifierT function_name, |
| 342 bool function_name_is_strict_reserved, |
| 343 const Scanner::Location& function_name_loc, |
| 344 const Scanner::Location& eval_args_error_loc, |
| 345 const Scanner::Location& dupe_error_loc, |
| 346 const Scanner::Location& reserved_loc, |
| 347 bool* ok) { |
| 348 if (this->IsEvalOrArguments(function_name)) { |
| 349 Traits::ReportMessageAt(function_name_loc, "strict_eval_arguments"); |
| 350 *ok = false; |
| 351 return; |
| 352 } |
| 353 if (function_name_is_strict_reserved) { |
| 354 Traits::ReportMessageAt(function_name_loc, "unexpected_strict_reserved"); |
| 355 *ok = false; |
| 356 return; |
| 357 } |
| 358 if (eval_args_error_loc.IsValid()) { |
| 359 Traits::ReportMessageAt(eval_args_error_loc, "strict_eval_arguments"); |
| 360 *ok = false; |
| 361 return; |
| 362 } |
| 363 if (dupe_error_loc.IsValid()) { |
| 364 Traits::ReportMessageAt(dupe_error_loc, "strict_param_dupe"); |
| 365 *ok = false; |
| 366 return; |
| 367 } |
| 368 if (reserved_loc.IsValid()) { |
| 369 Traits::ReportMessageAt(reserved_loc, "unexpected_strict_reserved"); |
| 370 *ok = false; |
| 371 return; |
| 372 } |
| 373 } |
| 374 |
| 337 // Determine precedence of given token. | 375 // Determine precedence of given token. |
| 338 static int Precedence(Token::Value token, bool accept_IN) { | 376 static int Precedence(Token::Value token, bool accept_IN) { |
| 339 if (token == Token::IN && !accept_IN) | 377 if (token == Token::IN && !accept_IN) |
| 340 return 0; // 0 precedence will terminate binary expression parsing | 378 return 0; // 0 precedence will terminate binary expression parsing |
| 341 return Token::Precedence(token); | 379 return Token::Precedence(token); |
| 342 } | 380 } |
| 343 | 381 |
| 344 typename Traits::Type::Factory* factory() { | 382 typename Traits::Type::Factory* factory() { |
| 345 return function_state_->factory(); | 383 return function_state_->factory(); |
| 346 } | 384 } |
| (...skipping 1818 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2165 parser()->ReportMessage("accessor_get_set"); | 2203 parser()->ReportMessage("accessor_get_set"); |
| 2166 } | 2204 } |
| 2167 *ok = false; | 2205 *ok = false; |
| 2168 } | 2206 } |
| 2169 } | 2207 } |
| 2170 | 2208 |
| 2171 | 2209 |
| 2172 } } // v8::internal | 2210 } } // v8::internal |
| 2173 | 2211 |
| 2174 #endif // V8_PREPARSER_H | 2212 #endif // V8_PREPARSER_H |
| OLD | NEW |