| Index: src/ast/scopes.cc
|
| diff --git a/src/ast/scopes.cc b/src/ast/scopes.cc
|
| index ad9330538ab9260b8e586d65d24976e88ec4e749..c3cab48d6e3ad9e6ecb4b6deb17187436aa7b6b7 100644
|
| --- a/src/ast/scopes.cc
|
| +++ b/src/ast/scopes.cc
|
| @@ -1247,7 +1247,7 @@
|
|
|
| Handle<StringSet> DeclarationScope::CollectNonLocals(
|
| ParseInfo* info, Handle<StringSet> non_locals) {
|
| - VariableProxy* free_variables = FetchFreeVariables(this, true);
|
| + VariableProxy* free_variables = FetchFreeVariables(this, true, info);
|
| for (VariableProxy* proxy = free_variables; proxy != nullptr;
|
| proxy = proxy->next_unresolved()) {
|
| non_locals = StringSet::Add(non_locals, proxy->name());
|
| @@ -1734,7 +1734,7 @@
|
| }
|
|
|
| VariableProxy* Scope::FetchFreeVariables(DeclarationScope* max_outer_scope,
|
| - bool try_to_resolve,
|
| + bool try_to_resolve, ParseInfo* info,
|
| VariableProxy* stack) {
|
| for (VariableProxy *proxy = unresolved_, *next = nullptr; proxy != nullptr;
|
| proxy = next) {
|
| @@ -1747,6 +1747,8 @@
|
| if (var == nullptr) {
|
| proxy->set_next_unresolved(stack);
|
| stack = proxy;
|
| + } else if (info != nullptr) {
|
| + ResolveTo(info, proxy, var);
|
| } else {
|
| var->set_is_used();
|
| }
|
| @@ -1756,7 +1758,8 @@
|
| unresolved_ = nullptr;
|
|
|
| for (Scope* scope = inner_scope_; scope != nullptr; scope = scope->sibling_) {
|
| - stack = scope->FetchFreeVariables(max_outer_scope, try_to_resolve, stack);
|
| + stack =
|
| + scope->FetchFreeVariables(max_outer_scope, try_to_resolve, info, stack);
|
| }
|
|
|
| return stack;
|
|
|