| 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 "src/api.h" | 7 #include "src/api.h" |
| 8 #include "src/ast/ast.h" | 8 #include "src/ast/ast.h" |
| 9 #include "src/ast/ast-expression-rewriter.h" | 9 #include "src/ast/ast-expression-rewriter.h" |
| 10 #include "src/ast/ast-expression-visitor.h" | 10 #include "src/ast/ast-expression-visitor.h" |
| (...skipping 925 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 scope_->SetLanguageMode(info->language_mode()); | 936 scope_->SetLanguageMode(info->language_mode()); |
| 937 ParseStatementList(body, Token::EOS, &ok); | 937 ParseStatementList(body, Token::EOS, &ok); |
| 938 } | 938 } |
| 939 | 939 |
| 940 // The parser will peek but not consume EOS. Our scope logically goes all | 940 // The parser will peek but not consume EOS. Our scope logically goes all |
| 941 // the way to the EOS, though. | 941 // the way to the EOS, though. |
| 942 scope->set_end_position(scanner()->peek_location().beg_pos); | 942 scope->set_end_position(scanner()->peek_location().beg_pos); |
| 943 | 943 |
| 944 if (ok && is_strict(language_mode())) { | 944 if (ok && is_strict(language_mode())) { |
| 945 CheckStrictOctalLiteral(beg_pos, scanner()->location().end_pos, &ok); | 945 CheckStrictOctalLiteral(beg_pos, scanner()->location().end_pos, &ok); |
| 946 CheckDecimalLiteralWithLeadingZero(use_counts_, beg_pos, |
| 947 scanner()->location().end_pos); |
| 946 } | 948 } |
| 947 if (ok && is_sloppy(language_mode())) { | 949 if (ok && is_sloppy(language_mode())) { |
| 948 // TODO(littledan): Function bindings on the global object that modify | 950 // TODO(littledan): Function bindings on the global object that modify |
| 949 // pre-existing bindings should be made writable, enumerable and | 951 // pre-existing bindings should be made writable, enumerable and |
| 950 // nonconfigurable if possible, whereas this code will leave attributes | 952 // nonconfigurable if possible, whereas this code will leave attributes |
| 951 // unchanged if the property already exists. | 953 // unchanged if the property already exists. |
| 952 InsertSloppyBlockFunctionVarBindings(scope, &ok); | 954 InsertSloppyBlockFunctionVarBindings(scope, &ok); |
| 953 } | 955 } |
| 954 if (ok) { | 956 if (ok) { |
| 955 CheckConflictingVarDeclarations(scope_, &ok); | 957 CheckConflictingVarDeclarations(scope_, &ok); |
| (...skipping 3213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4169 CheckFunctionName(language_mode, function_name, function_name_validity, | 4171 CheckFunctionName(language_mode, function_name, function_name_validity, |
| 4170 function_name_location, CHECK_OK); | 4172 function_name_location, CHECK_OK); |
| 4171 const bool allow_duplicate_parameters = | 4173 const bool allow_duplicate_parameters = |
| 4172 is_sloppy(language_mode) && formals.is_simple && !IsConciseMethod(kind); | 4174 is_sloppy(language_mode) && formals.is_simple && !IsConciseMethod(kind); |
| 4173 ValidateFormalParameters(&formals_classifier, language_mode, | 4175 ValidateFormalParameters(&formals_classifier, language_mode, |
| 4174 allow_duplicate_parameters, CHECK_OK); | 4176 allow_duplicate_parameters, CHECK_OK); |
| 4175 | 4177 |
| 4176 if (is_strict(language_mode)) { | 4178 if (is_strict(language_mode)) { |
| 4177 CheckStrictOctalLiteral(scope->start_position(), scope->end_position(), | 4179 CheckStrictOctalLiteral(scope->start_position(), scope->end_position(), |
| 4178 CHECK_OK); | 4180 CHECK_OK); |
| 4181 CheckDecimalLiteralWithLeadingZero(use_counts_, scope->start_position(), |
| 4182 scope->end_position()); |
| 4179 } | 4183 } |
| 4180 if (is_sloppy(language_mode)) { | 4184 if (is_sloppy(language_mode)) { |
| 4181 InsertSloppyBlockFunctionVarBindings(scope, CHECK_OK); | 4185 InsertSloppyBlockFunctionVarBindings(scope, CHECK_OK); |
| 4182 } | 4186 } |
| 4183 CheckConflictingVarDeclarations(scope, CHECK_OK); | 4187 CheckConflictingVarDeclarations(scope, CHECK_OK); |
| 4184 | 4188 |
| 4185 if (body) { | 4189 if (body) { |
| 4186 // If body can be inspected, rewrite queued destructuring assignments | 4190 // If body can be inspected, rewrite queued destructuring assignments |
| 4187 ParserTraits::RewriteDestructuringAssignments(); | 4191 ParserTraits::RewriteDestructuringAssignments(); |
| 4188 } | 4192 } |
| (...skipping 2628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6817 try_block, target); | 6821 try_block, target); |
| 6818 final_loop = target; | 6822 final_loop = target; |
| 6819 } | 6823 } |
| 6820 | 6824 |
| 6821 return final_loop; | 6825 return final_loop; |
| 6822 } | 6826 } |
| 6823 | 6827 |
| 6824 | 6828 |
| 6825 } // namespace internal | 6829 } // namespace internal |
| 6826 } // namespace v8 | 6830 } // namespace v8 |
| OLD | NEW |