| 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 {
|
|
|