| Index: src/variables.cc
|
| diff --git a/src/variables.cc b/src/variables.cc
|
| index c0b8bd784353aa0ad349689b30ce7578de80e116..ffa82edcb7dd2af15935cf8099d7a434006ba111 100644
|
| --- a/src/variables.cc
|
| +++ b/src/variables.cc
|
| @@ -50,6 +50,15 @@ Variable::Variable(Scope* scope, const AstRawString* name, VariableMode mode,
|
| is_used_(false),
|
| initialization_flag_(initialization_flag),
|
| maybe_assigned_(maybe_assigned_flag) {
|
| + if (scope && scope->is_function_body_scope()) {
|
| + // The function body is the proper declaration scope, however, the
|
| + // declaration is added to the outer scope in order to ensure allocation
|
| + // works correctly. Mark the scope as the outer scope here so that
|
| + // checking the declaration context works.
|
| + scope_ = scope->outer_scope();
|
| + DCHECK(scope_->is_function_scope());
|
| + }
|
| +
|
| // Var declared variables never need initialization.
|
| DCHECK(!(mode == VAR && initialization_flag == kNeedsInitialization));
|
| }
|
|
|