Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: test/cctest/test-parsing.cc

Issue 2278973002: [modules] Rename ModuleDescriptor::ModuleEntry to ModuleDescriptor::Entry. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ast/modules.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 5827 matching lines...) Expand 10 before | Expand all | Expand 10 after
5838 "try {} catch (enum) {}", 5838 "try {} catch (enum) {}",
5839 "try {} catch (enum) {} finally {}", 5839 "try {} catch (enum) {} finally {}",
5840 NULL 5840 NULL
5841 }; 5841 };
5842 // clang-format on 5842 // clang-format on
5843 const char* context_data[][2] = {{"", ""}, {NULL, NULL}}; 5843 const char* context_data[][2] = {{"", ""}, {NULL, NULL}};
5844 5844
5845 RunModuleParserSyncTest(context_data, kErrorSources, kError); 5845 RunModuleParserSyncTest(context_data, kErrorSources, kError);
5846 } 5846 }
5847 5847
5848 static void CheckModuleEntry(const i::ModuleDescriptor::ModuleEntry* entry, 5848 static void CheckEntry(const i::ModuleDescriptor::Entry* entry,
5849 const char* export_name, const char* local_name, const char* import_name, 5849 const char* export_name, const char* local_name,
5850 const char* module_request) { 5850 const char* import_name, const char* module_request) {
5851 CHECK_NOT_NULL(entry); 5851 CHECK_NOT_NULL(entry);
5852 if (export_name == nullptr) { 5852 if (export_name == nullptr) {
5853 CHECK_NULL(entry->export_name); 5853 CHECK_NULL(entry->export_name);
5854 } else { 5854 } else {
5855 CHECK(entry->export_name->IsOneByteEqualTo(export_name)); 5855 CHECK(entry->export_name->IsOneByteEqualTo(export_name));
5856 } 5856 }
5857 if (local_name == nullptr) { 5857 if (local_name == nullptr) {
5858 CHECK_NULL(entry->local_name); 5858 CHECK_NULL(entry->local_name);
5859 } else { 5859 } else {
5860 CHECK(entry->local_name->IsOneByteEqualTo(local_name)); 5860 CHECK(entry->local_name->IsOneByteEqualTo(local_name));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
5907 i::Parser parser(&info); 5907 i::Parser parser(&info);
5908 info.set_module(); 5908 info.set_module();
5909 CHECK(parser.Parse(&info)); 5909 CHECK(parser.Parse(&info));
5910 CHECK(i::Compiler::Analyze(&info)); 5910 CHECK(i::Compiler::Analyze(&info));
5911 i::FunctionLiteral* func = info.literal(); 5911 i::FunctionLiteral* func = info.literal();
5912 i::ModuleScope* module_scope = func->scope()->AsModuleScope(); 5912 i::ModuleScope* module_scope = func->scope()->AsModuleScope();
5913 i::Scope* outer_scope = module_scope->outer_scope(); 5913 i::Scope* outer_scope = module_scope->outer_scope();
5914 CHECK(outer_scope->is_script_scope()); 5914 CHECK(outer_scope->is_script_scope());
5915 CHECK_NULL(outer_scope->outer_scope()); 5915 CHECK_NULL(outer_scope->outer_scope());
5916 CHECK(module_scope->is_module_scope()); 5916 CHECK(module_scope->is_module_scope());
5917 const i::ModuleDescriptor::ModuleEntry* entry; 5917 const i::ModuleDescriptor::Entry* entry;
5918 i::ZoneList<i::Declaration*>* declarations = module_scope->declarations(); 5918 i::ZoneList<i::Declaration*>* declarations = module_scope->declarations();
5919 CHECK_EQ(13, declarations->length()); 5919 CHECK_EQ(13, declarations->length());
5920 5920
5921 CHECK(declarations->at(0)->proxy()->raw_name()->IsOneByteEqualTo("x")); 5921 CHECK(declarations->at(0)->proxy()->raw_name()->IsOneByteEqualTo("x"));
5922 CHECK(declarations->at(0)->proxy()->var()->mode() == i::LET); 5922 CHECK(declarations->at(0)->proxy()->var()->mode() == i::LET);
5923 CHECK(declarations->at(0)->proxy()->var()->binding_needs_init()); 5923 CHECK(declarations->at(0)->proxy()->var()->binding_needs_init());
5924 CHECK(declarations->at(0)->proxy()->var()->location() == 5924 CHECK(declarations->at(0)->proxy()->var()->location() ==
5925 i::VariableLocation::MODULE); 5925 i::VariableLocation::MODULE);
5926 5926
5927 CHECK(declarations->at(1)->proxy()->raw_name()->IsOneByteEqualTo("z")); 5927 CHECK(declarations->at(1)->proxy()->raw_name()->IsOneByteEqualTo("z"));
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
5994 CHECK(declarations->at(12)->proxy()->raw_name()->IsOneByteEqualTo("foob")); 5994 CHECK(declarations->at(12)->proxy()->raw_name()->IsOneByteEqualTo("foob"));
5995 CHECK(declarations->at(12)->proxy()->var()->mode() == i::CONST); 5995 CHECK(declarations->at(12)->proxy()->var()->mode() == i::CONST);
5996 CHECK(!declarations->at(12)->proxy()->var()->binding_needs_init()); 5996 CHECK(!declarations->at(12)->proxy()->var()->binding_needs_init());
5997 CHECK(declarations->at(12)->proxy()->var()->location() == 5997 CHECK(declarations->at(12)->proxy()->var()->location() ==
5998 i::VariableLocation::MODULE); 5998 i::VariableLocation::MODULE);
5999 5999
6000 i::ModuleDescriptor* descriptor = module_scope->module(); 6000 i::ModuleDescriptor* descriptor = module_scope->module();
6001 CHECK_NOT_NULL(descriptor); 6001 CHECK_NOT_NULL(descriptor);
6002 6002
6003 CHECK_EQ(3, descriptor->special_exports().length()); 6003 CHECK_EQ(3, descriptor->special_exports().length());
6004 CheckModuleEntry(descriptor->special_exports().at(0), "b", nullptr, "a", 6004 CheckEntry(descriptor->special_exports().at(0), "b", nullptr, "a", "m.js");
6005 "m.js"); 6005 CheckEntry(descriptor->special_exports().at(1), nullptr, nullptr, nullptr,
6006 CheckModuleEntry(descriptor->special_exports().at(1), nullptr, nullptr, 6006 "p.js");
6007 nullptr, "p.js"); 6007 CheckEntry(descriptor->special_exports().at(2), "bb", nullptr, "aa",
6008 CheckModuleEntry(descriptor->special_exports().at(2), "bb", nullptr, "aa", 6008 "m.js"); // !!!
6009 "m.js"); // !!!
6010 6009
6011 CHECK_EQ(8, descriptor->regular_exports().size()); 6010 CHECK_EQ(8, descriptor->regular_exports().size());
6012 entry = descriptor->regular_exports() 6011 entry = descriptor->regular_exports()
6013 .find(declarations->at(3)->proxy()->raw_name()) 6012 .find(declarations->at(3)->proxy()->raw_name())
6014 ->second; 6013 ->second;
6015 CheckModuleEntry(entry, "foo", "foo", nullptr, nullptr); 6014 CheckEntry(entry, "foo", "foo", nullptr, nullptr);
6016 entry = descriptor->regular_exports() 6015 entry = descriptor->regular_exports()
6017 .find(declarations->at(4)->proxy()->raw_name()) 6016 .find(declarations->at(4)->proxy()->raw_name())
6018 ->second; 6017 ->second;
6019 CheckModuleEntry(entry, "goo", "goo", nullptr, nullptr); 6018 CheckEntry(entry, "goo", "goo", nullptr, nullptr);
6020 entry = descriptor->regular_exports() 6019 entry = descriptor->regular_exports()
6021 .find(declarations->at(5)->proxy()->raw_name()) 6020 .find(declarations->at(5)->proxy()->raw_name())
6022 ->second; 6021 ->second;
6023 CheckModuleEntry(entry, "hoo", "hoo", nullptr, nullptr); 6022 CheckEntry(entry, "hoo", "hoo", nullptr, nullptr);
6024 entry = descriptor->regular_exports() 6023 entry = descriptor->regular_exports()
6025 .find(declarations->at(6)->proxy()->raw_name()) 6024 .find(declarations->at(6)->proxy()->raw_name())
6026 ->second; 6025 ->second;
6027 CheckModuleEntry(entry, "joo", "joo", nullptr, nullptr); 6026 CheckEntry(entry, "joo", "joo", nullptr, nullptr);
6028 entry = descriptor->regular_exports() 6027 entry = descriptor->regular_exports()
6029 .find(declarations->at(7)->proxy()->raw_name()) 6028 .find(declarations->at(7)->proxy()->raw_name())
6030 ->second; 6029 ->second;
6031 CheckModuleEntry(entry, "default", "*default*", nullptr, nullptr); 6030 CheckEntry(entry, "default", "*default*", nullptr, nullptr);
6032 entry = descriptor->regular_exports() 6031 entry = descriptor->regular_exports()
6033 .find(declarations->at(12)->proxy()->raw_name()) 6032 .find(declarations->at(12)->proxy()->raw_name())
6034 ->second; 6033 ->second;
6035 CheckModuleEntry(entry, "foob", "foob", nullptr, nullptr); 6034 CheckEntry(entry, "foob", "foob", nullptr, nullptr);
6036 // TODO(neis): The next lines are terrible. Find a better way. 6035 // TODO(neis): The next lines are terrible. Find a better way.
6037 auto name_x = declarations->at(0)->proxy()->raw_name(); 6036 auto name_x = declarations->at(0)->proxy()->raw_name();
6038 CHECK_EQ(2, descriptor->regular_exports().count(name_x)); 6037 CHECK_EQ(2, descriptor->regular_exports().count(name_x));
6039 auto it = descriptor->regular_exports().equal_range(name_x).first; 6038 auto it = descriptor->regular_exports().equal_range(name_x).first;
6040 entry = it->second; 6039 entry = it->second;
6041 if (entry->export_name->IsOneByteEqualTo("y")) { 6040 if (entry->export_name->IsOneByteEqualTo("y")) {
6042 CheckModuleEntry(entry, "y", "x", nullptr, nullptr); 6041 CheckEntry(entry, "y", "x", nullptr, nullptr);
6043 entry = (++it)->second; 6042 entry = (++it)->second;
6044 CheckModuleEntry(entry, "x", "x", nullptr, nullptr); 6043 CheckEntry(entry, "x", "x", nullptr, nullptr);
6045 } else { 6044 } else {
6046 CheckModuleEntry(entry, "x", "x", nullptr, nullptr); 6045 CheckEntry(entry, "x", "x", nullptr, nullptr);
6047 entry = (++it)->second; 6046 entry = (++it)->second;
6048 CheckModuleEntry(entry, "y", "x", nullptr, nullptr); 6047 CheckEntry(entry, "y", "x", nullptr, nullptr);
6049 } 6048 }
6050 6049
6051 CHECK_EQ(3, descriptor->special_imports().length()); 6050 CHECK_EQ(3, descriptor->special_imports().length());
6052 CheckModuleEntry( 6051 CheckEntry(descriptor->special_imports().at(0), nullptr, nullptr, nullptr,
6053 descriptor->special_imports().at(0), nullptr, nullptr, nullptr, "q.js"); 6052 "q.js");
6054 CheckModuleEntry( 6053 CheckEntry(descriptor->special_imports().at(1), nullptr, "loo", nullptr,
6055 descriptor->special_imports().at(1), nullptr, "loo", nullptr, "bar.js"); 6054 "bar.js");
6056 CheckModuleEntry( 6055 CheckEntry(descriptor->special_imports().at(2), nullptr, "foob", nullptr,
6057 descriptor->special_imports().at(2), nullptr, "foob", nullptr, "bar.js"); 6056 "bar.js");
6058 6057
6059 CHECK_EQ(4, descriptor->regular_imports().size()); 6058 CHECK_EQ(4, descriptor->regular_imports().size());
6060 entry = descriptor->regular_imports().find( 6059 entry = descriptor->regular_imports().find(
6061 declarations->at(1)->proxy()->raw_name())->second; 6060 declarations->at(1)->proxy()->raw_name())->second;
6062 CheckModuleEntry(entry, nullptr, "z", "q", "m.js"); 6061 CheckEntry(entry, nullptr, "z", "q", "m.js");
6063 entry = descriptor->regular_imports().find( 6062 entry = descriptor->regular_imports().find(
6064 declarations->at(2)->proxy()->raw_name())->second; 6063 declarations->at(2)->proxy()->raw_name())->second;
6065 CheckModuleEntry(entry, nullptr, "n", "default", "n.js"); 6064 CheckEntry(entry, nullptr, "n", "default", "n.js");
6066 entry = descriptor->regular_imports().find( 6065 entry = descriptor->regular_imports().find(
6067 declarations->at(9)->proxy()->raw_name())->second; 6066 declarations->at(9)->proxy()->raw_name())->second;
6068 CheckModuleEntry(entry, nullptr, "mm", "m", "m.js"); 6067 CheckEntry(entry, nullptr, "mm", "m", "m.js");
6069 entry = descriptor->regular_imports().find( 6068 entry = descriptor->regular_imports().find(
6070 declarations->at(10)->proxy()->raw_name())->second; 6069 declarations->at(10)->proxy()->raw_name())->second;
6071 CheckModuleEntry(entry, nullptr, "aa", "aa", "m.js"); 6070 CheckEntry(entry, nullptr, "aa", "aa", "m.js");
6072 } 6071 }
6073 6072
6074 6073
6075 TEST(DuplicateProtoError) { 6074 TEST(DuplicateProtoError) {
6076 const char* context_data[][2] = { 6075 const char* context_data[][2] = {
6077 {"({", "});"}, 6076 {"({", "});"},
6078 {"'use strict'; ({", "});"}, 6077 {"'use strict'; ({", "});"},
6079 {NULL, NULL} 6078 {NULL, NULL}
6080 }; 6079 };
6081 const char* error_data[] = { 6080 const char* error_data[] = {
(...skipping 2093 matching lines...) Expand 10 before | Expand all | Expand 10 after
8175 "(a,);", 8174 "(a,);",
8176 "(a,b,c,);", 8175 "(a,b,c,);",
8177 NULL 8176 NULL
8178 }; 8177 };
8179 // clang-format on 8178 // clang-format on
8180 8179
8181 static const ParserFlag always_flags[] = {kAllowHarmonyTrailingCommas}; 8180 static const ParserFlag always_flags[] = {kAllowHarmonyTrailingCommas};
8182 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags, 8181 RunParserSyncTest(context_data, data, kError, NULL, 0, always_flags,
8183 arraysize(always_flags)); 8182 arraysize(always_flags));
8184 } 8183 }
OLDNEW
« no previous file with comments | « src/ast/modules.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698