Commit 2dac4588 authored by marja's avatar marja Committed by Commit bot

[parser] Skipping inner funcs: make basic variable declarations work.

BUG=v8:5516

Review-Url: https://codereview.chromium.org/2659053002
Cr-Commit-Position: refs/heads/master@{#42739}
parent 9ea3fe0b
...@@ -1903,6 +1903,9 @@ VariableProxy* Scope::FetchFreeVariables(DeclarationScope* max_outer_scope, ...@@ -1903,6 +1903,9 @@ VariableProxy* Scope::FetchFreeVariables(DeclarationScope* max_outer_scope,
if (!var->is_dynamic() && lookup != this) var->ForceContextAllocation(); if (!var->is_dynamic() && lookup != this) var->ForceContextAllocation();
} else { } else {
var->set_is_used(); var->set_is_used();
if (proxy->is_assigned()) {
var->set_maybe_assigned();
}
} }
} }
} }
......
...@@ -9042,9 +9042,30 @@ TEST(PreParserScopeAnalysis) { ...@@ -9042,9 +9042,30 @@ TEST(PreParserScopeAnalysis) {
const char* params; const char* params;
const char* source; const char* source;
} inners[] = { } inners[] = {
{"", "var1"}, {"", "var1;"},
{"", "var1 = 5;"},
{"", "if (true) {}"}, {"", "if (true) {}"},
{"", "function f1() {}"}, {"", "function f1() {}"},
{"", "var var1;"},
{"", "var var1; var1 = 5;"},
{"", "if (true) { var var1; }"},
{"", "if (true) { var var1; var1 = 5; }"},
{"", "var var1; function f() { var1; }"},
{"", "var var1; var1 = 5; function f() { var1; }"},
{"", "var var1; function f() { var1 = 5; }"},
{"", "let var1;"},
{"", "let var1; var1 = 5;"},
{"", "if (true) { let var1; }"},
{"", "if (true) { let var1; var1 = 5; }"},
{"", "let var1; function f() { var1; }"},
{"", "let var1; var1 = 5; function f() { var1; }"},
{"", "let var1; function f() { var1 = 5; }"},
{"", "const var1 = 5;"},
{"", "if (true) { const var1 = 5; }"},
{"", "const var1 = 5; function f() { var1; }"},
}; };
for (unsigned i = 0; i < arraysize(inners); ++i) { for (unsigned i = 0; i < arraysize(inners); ++i) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment