Index: test/cctest/test-parsing.cc |
diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc |
index ba8bfbfa4f20b60d942e957126ae2e8cc3295614..287b61b02c27b9fbbc206fff4b74f5d6b2dce74a 100644 |
--- a/test/cctest/test-parsing.cc |
+++ b/test/cctest/test-parsing.cc |
@@ -3850,7 +3850,6 @@ TEST(MaybeAssignedTopLevel) { |
i::Isolate* isolate = CcTest::i_isolate(); |
i::HandleScope scope(isolate); |
LocalContext env; |
- i::Factory* factory = isolate->factory(); |
const char* prefixes[] = { |
"let foo; ", |
@@ -3863,58 +3862,59 @@ TEST(MaybeAssignedTopLevel) { |
"var [foo] = [1]; ", |
"var {foo} = {foo: 2}; ", |
"var {foo=3} = {}; ", |
+ "{ var foo; }; ", |
+ "{ var foo = 0; }; ", |
+ "{ var [foo] = [1]; }; ", |
+ "{ var {foo} = {foo: 2}; }; ", |
+ "{ var {foo=3} = {}; }; ", |
"function foo() {}; ", |
"function* foo() {}; ", |
"async function foo() {}; ", |
"class foo {}; ", |
"class foo extends null {}; ", |
}; |
- const char* sources[] = { |
+ |
+ const char* module_and_script_tests[] = { |
"function bar() {foo = 42}; ext(bar); ext(foo)", |
"ext(function() {foo++}); ext(foo)", |
"bar = () => --foo; ext(bar); ext(foo)", |
"function* bar() {eval(ext)}; ext(bar); ext(foo)", |
}; |
- for (unsigned i = 0; i < arraysize(prefixes); ++i) { |
- const char* prefix = prefixes[i]; |
- for (unsigned j = 0; j < arraysize(sources); ++j) { |
- const char* source = sources[j]; |
- i::ScopedVector<char> program(Utf8LengthHelper(prefix) + |
- Utf8LengthHelper(source) + 1); |
- i::SNPrintF(program, "%s%s", prefix, source); |
- |
- i::Handle<i::String> string = |
- factory->InternalizeUtf8String(program.start()); |
- string->PrintOn(stdout); |
- printf("\n"); |
- i::Handle<i::Script> script = factory->NewScript(string); |
- |
- for (unsigned allow_lazy = 0; allow_lazy < 2; ++allow_lazy) { |
- for (unsigned module = 0; module < 2; ++module) { |
- std::unique_ptr<i::ParseInfo> info; |
- info = std::unique_ptr<i::ParseInfo>(new i::ParseInfo(script)); |
- info->set_module(module); |
- info->set_allow_lazy_parsing(allow_lazy); |
+ const char* script_only_tests[] = { |
+ "", |
+ "{ function foo() {}; }; ", |
+ "{ function* foo() {}; }; ", |
+ "{ async function foo() {}; }; ", |
+ }; |
- CHECK(i::parsing::ParseProgram(info.get())); |
- CHECK(i::Compiler::Analyze(info.get())); |
- |
- CHECK_NOT_NULL(info->literal()); |
- i::Scope* scope = info->literal()->scope(); |
- CHECK(!scope->AsDeclarationScope()->was_lazily_parsed()); |
- CHECK_NULL(scope->sibling()); |
- CHECK(module ? scope->is_module_scope() : scope->is_script_scope()); |
- |
- const i::AstRawString* var_name = |
- info->ast_value_factory()->GetOneByteString("foo"); |
- i::Variable* var = scope->Lookup(var_name); |
- CHECK(var->is_used()); |
- CHECK(var->maybe_assigned() == i::kMaybeAssigned); |
+ for (unsigned i = 0; i < arraysize(prefixes); ++i) { |
+ for (unsigned j = 0; j < arraysize(module_and_script_tests); ++j) { |
+ std::string source(prefixes[i]); |
+ source += module_and_script_tests[j]; |
+ std::vector<unsigned> top; |
+ Input input({true, source, top}); |
+ for (unsigned module = 0; module <= 1; ++module) { |
+ for (unsigned allow_lazy_parsing = 0; allow_lazy_parsing <= 1; |
+ ++allow_lazy_parsing) { |
+ TestMaybeAssigned(input, "foo", module, allow_lazy_parsing); |
} |
} |
} |
} |
+ |
+ for (unsigned i = 0; i < arraysize(prefixes); ++i) { |
+ for (unsigned j = 0; j < arraysize(script_only_tests); ++j) { |
+ std::string source(prefixes[i]); |
+ source += script_only_tests[j]; |
+ std::vector<unsigned> top; |
+ Input input({true, source, top}); |
+ for (unsigned allow_lazy_parsing = 0; allow_lazy_parsing <= 1; |
+ ++allow_lazy_parsing) { |
+ TestMaybeAssigned(input, "foo", false, allow_lazy_parsing); |
+ } |
+ } |
+ } |
} |
namespace { |