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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/api.h" | 7 #include "src/api.h" |
8 #include "src/ast.h" | 8 #include "src/ast.h" |
9 #include "src/base/platform/platform.h" | 9 #include "src/base/platform/platform.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 1995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2006 init_op = Token::INIT_CONST; | 2006 init_op = Token::INIT_CONST; |
2007 } else { | 2007 } else { |
2008 ReportMessage("strict_const"); | 2008 ReportMessage("strict_const"); |
2009 *ok = false; | 2009 *ok = false; |
2010 return NULL; | 2010 return NULL; |
2011 } | 2011 } |
2012 } | 2012 } |
2013 is_const = true; | 2013 is_const = true; |
2014 needs_init = true; | 2014 needs_init = true; |
2015 } else if (peek() == Token::LET && strict_mode() == STRICT) { | 2015 } else if (peek() == Token::LET && strict_mode() == STRICT) { |
| 2016 ASSERT(allow_harmony_scoping()); |
2016 Consume(Token::LET); | 2017 Consume(Token::LET); |
2017 if (var_context == kStatement) { | 2018 if (var_context == kStatement) { |
2018 // Let declarations are only allowed in source element positions. | 2019 // Let declarations are only allowed in source element positions. |
2019 ReportMessage("unprotected_let"); | 2020 ReportMessage("unprotected_let"); |
2020 *ok = false; | 2021 *ok = false; |
2021 return NULL; | 2022 return NULL; |
2022 } | 2023 } |
2023 mode = LET; | 2024 mode = LET; |
2024 needs_init = true; | 2025 needs_init = true; |
2025 init_op = Token::INIT_LET; | 2026 init_op = Token::INIT_LET; |
(...skipping 1019 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3045 scope_ = saved_scope; | 3046 scope_ = saved_scope; |
3046 for_scope->set_end_position(scanner()->location().end_pos); | 3047 for_scope->set_end_position(scanner()->location().end_pos); |
3047 for_scope = for_scope->FinalizeBlockScope(); | 3048 for_scope = for_scope->FinalizeBlockScope(); |
3048 ASSERT(for_scope == NULL); | 3049 ASSERT(for_scope == NULL); |
3049 // Parsed for-in loop w/ variable/const declaration. | 3050 // Parsed for-in loop w/ variable/const declaration. |
3050 return result; | 3051 return result; |
3051 } else { | 3052 } else { |
3052 init = variable_statement; | 3053 init = variable_statement; |
3053 } | 3054 } |
3054 } else if (peek() == Token::LET && strict_mode() == STRICT) { | 3055 } else if (peek() == Token::LET && strict_mode() == STRICT) { |
| 3056 ASSERT(allow_harmony_scoping()); |
3055 const AstRawString* name = NULL; | 3057 const AstRawString* name = NULL; |
3056 VariableDeclarationProperties decl_props = kHasNoInitializers; | 3058 VariableDeclarationProperties decl_props = kHasNoInitializers; |
3057 Block* variable_statement = | 3059 Block* variable_statement = |
3058 ParseVariableDeclarations(kForStatement, &decl_props, &let_bindings, | 3060 ParseVariableDeclarations(kForStatement, &decl_props, &let_bindings, |
3059 &name, CHECK_OK); | 3061 &name, CHECK_OK); |
3060 bool accept_IN = name != NULL && decl_props != kHasInitializers; | 3062 bool accept_IN = name != NULL && decl_props != kHasInitializers; |
3061 bool accept_OF = decl_props == kHasNoInitializers; | 3063 bool accept_OF = decl_props == kHasNoInitializers; |
3062 ForEachStatement::VisitMode mode; | 3064 ForEachStatement::VisitMode mode; |
3063 | 3065 |
3064 if (accept_IN && CheckInOrOf(accept_OF, &mode)) { | 3066 if (accept_IN && CheckInOrOf(accept_OF, &mode)) { |
(...skipping 1730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4795 info()->SetAstValueFactory(ast_value_factory_); | 4797 info()->SetAstValueFactory(ast_value_factory_); |
4796 } | 4798 } |
4797 ast_value_factory_ = NULL; | 4799 ast_value_factory_ = NULL; |
4798 | 4800 |
4799 InternalizeUseCounts(); | 4801 InternalizeUseCounts(); |
4800 | 4802 |
4801 return (result != NULL); | 4803 return (result != NULL); |
4802 } | 4804 } |
4803 | 4805 |
4804 } } // namespace v8::internal | 4806 } } // namespace v8::internal |
OLD | NEW |