| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index 84a94efbfc6a991bb99b5b6d0a1a038e70a0e1cf..985a90f8dc5f0154a1829680e99f37cb2e008085 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -1975,6 +1975,7 @@ Statement* Parser::ParseFunctionDeclaration(
|
| // In ES6, a function behaves as a lexical binding, except in
|
| // a script scope, or the initial scope of eval or another function.
|
| VariableMode mode =
|
| + is_strong(language_mode()) ? CONST :
|
| allow_harmony_scoping() && is_strict(language_mode()) &&
|
| !(scope_->is_script_scope() || scope_->is_eval_scope() ||
|
| scope_->is_function_scope())
|
| @@ -2018,13 +2019,15 @@ Statement* Parser::ParseClassDeclaration(ZoneList<const AstRawString*>* names,
|
| ClassLiteral* value = ParseClassLiteral(name, scanner()->location(),
|
| is_strict_reserved, pos, CHECK_OK);
|
|
|
| - VariableProxy* proxy = NewUnresolved(name, LET);
|
| + VariableMode mode = is_strong(language_mode()) ? CONST : LET;
|
| + VariableProxy* proxy = NewUnresolved(name, mode);
|
| Declaration* declaration =
|
| - factory()->NewVariableDeclaration(proxy, LET, scope_, pos);
|
| + factory()->NewVariableDeclaration(proxy, mode, scope_, pos);
|
| Declare(declaration, true, CHECK_OK);
|
| proxy->var()->set_initializer_position(pos);
|
|
|
| - Token::Value init_op = Token::INIT_LET;
|
| + Token::Value init_op =
|
| + is_strong(language_mode()) ? Token::INIT_CONST : Token::INIT_LET;
|
| Assignment* assignment = factory()->NewAssignment(init_op, proxy, value, pos);
|
| Statement* assignment_statement =
|
| factory()->NewExpressionStatement(assignment, RelocInfo::kNoPosition);
|
|
|