| 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 #include "src/parsing/parser.h" | 5 #include "src/parsing/parser.h" | 
| 6 | 6 | 
| 7 #include <memory> | 7 #include <memory> | 
| 8 | 8 | 
| 9 #include "src/api.h" | 9 #include "src/api.h" | 
| 10 #include "src/ast/ast-expression-rewriter.h" | 10 #include "src/ast/ast-expression-rewriter.h" | 
| (...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 771       this->scope()->SetLanguageMode(info->language_mode()); | 771       this->scope()->SetLanguageMode(info->language_mode()); | 
| 772       ParseStatementList(body, Token::EOS, &ok); | 772       ParseStatementList(body, Token::EOS, &ok); | 
| 773     } | 773     } | 
| 774 | 774 | 
| 775     // The parser will peek but not consume EOS.  Our scope logically goes all | 775     // The parser will peek but not consume EOS.  Our scope logically goes all | 
| 776     // the way to the EOS, though. | 776     // the way to the EOS, though. | 
| 777     scope->set_end_position(scanner()->peek_location().beg_pos); | 777     scope->set_end_position(scanner()->peek_location().beg_pos); | 
| 778 | 778 | 
| 779     if (ok && is_strict(language_mode())) { | 779     if (ok && is_strict(language_mode())) { | 
| 780       CheckStrictOctalLiteral(beg_pos, scanner()->location().end_pos, &ok); | 780       CheckStrictOctalLiteral(beg_pos, scanner()->location().end_pos, &ok); | 
| 781       CheckDecimalLiteralWithLeadingZero(beg_pos, |  | 
| 782                                          scanner()->location().end_pos); |  | 
| 783     } | 781     } | 
| 784     if (ok && is_sloppy(language_mode())) { | 782     if (ok && is_sloppy(language_mode())) { | 
| 785       // TODO(littledan): Function bindings on the global object that modify | 783       // TODO(littledan): Function bindings on the global object that modify | 
| 786       // pre-existing bindings should be made writable, enumerable and | 784       // pre-existing bindings should be made writable, enumerable and | 
| 787       // nonconfigurable if possible, whereas this code will leave attributes | 785       // nonconfigurable if possible, whereas this code will leave attributes | 
| 788       // unchanged if the property already exists. | 786       // unchanged if the property already exists. | 
| 789       InsertSloppyBlockFunctionVarBindings(scope); | 787       InsertSloppyBlockFunctionVarBindings(scope); | 
| 790     } | 788     } | 
| 791     if (ok) { | 789     if (ok) { | 
| 792       CheckConflictingVarDeclarations(scope, &ok); | 790       CheckConflictingVarDeclarations(scope, &ok); | 
| (...skipping 1943 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2736 | 2734 | 
| 2737     // Validate function name. We can do this only after parsing the function, | 2735     // Validate function name. We can do this only after parsing the function, | 
| 2738     // since the function can declare itself strict. | 2736     // since the function can declare itself strict. | 
| 2739     language_mode = scope->language_mode(); | 2737     language_mode = scope->language_mode(); | 
| 2740     CheckFunctionName(language_mode, function_name, function_name_validity, | 2738     CheckFunctionName(language_mode, function_name, function_name_validity, | 
| 2741                       function_name_location, CHECK_OK); | 2739                       function_name_location, CHECK_OK); | 
| 2742 | 2740 | 
| 2743     if (is_strict(language_mode)) { | 2741     if (is_strict(language_mode)) { | 
| 2744       CheckStrictOctalLiteral(scope->start_position(), scope->end_position(), | 2742       CheckStrictOctalLiteral(scope->start_position(), scope->end_position(), | 
| 2745                               CHECK_OK); | 2743                               CHECK_OK); | 
| 2746       CheckDecimalLiteralWithLeadingZero(scope->start_position(), |  | 
| 2747                                          scope->end_position()); |  | 
| 2748     } | 2744     } | 
| 2749     CheckConflictingVarDeclarations(scope, CHECK_OK); | 2745     CheckConflictingVarDeclarations(scope, CHECK_OK); | 
| 2750   }  // DiscardableZoneScope goes out of scope. | 2746   }  // DiscardableZoneScope goes out of scope. | 
| 2751 | 2747 | 
| 2752   FunctionLiteral::ParameterFlag duplicate_parameters = | 2748   FunctionLiteral::ParameterFlag duplicate_parameters = | 
| 2753       has_duplicate_parameters ? FunctionLiteral::kHasDuplicateParameters | 2749       has_duplicate_parameters ? FunctionLiteral::kHasDuplicateParameters | 
| 2754                                : FunctionLiteral::kNoDuplicateParameters; | 2750                                : FunctionLiteral::kNoDuplicateParameters; | 
| 2755 | 2751 | 
| 2756   // Note that the FunctionLiteral needs to be created in the main Zone again. | 2752   // Note that the FunctionLiteral needs to be created in the main Zone again. | 
| 2757   FunctionLiteral* function_literal = factory()->NewFunctionLiteral( | 2753   FunctionLiteral* function_literal = factory()->NewFunctionLiteral( | 
| (...skipping 2688 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5446 | 5442 | 
| 5447   return final_loop; | 5443   return final_loop; | 
| 5448 } | 5444 } | 
| 5449 | 5445 | 
| 5450 #undef CHECK_OK | 5446 #undef CHECK_OK | 
| 5451 #undef CHECK_OK_VOID | 5447 #undef CHECK_OK_VOID | 
| 5452 #undef CHECK_FAILED | 5448 #undef CHECK_FAILED | 
| 5453 | 5449 | 
| 5454 }  // namespace internal | 5450 }  // namespace internal | 
| 5455 }  // namespace v8 | 5451 }  // namespace v8 | 
| OLD | NEW | 
|---|