@@ -1215,17 +1215,16 @@ lookupOperatorDeclForName(const FileUnit &File, SourceLoc Loc,
12151215 ImportedOperatorsMap<OP_DECL> importedOperators;
12161216 for (auto &imported : SourceFile::Impl::getImportsForSourceFile (SF)) {
12171217 // Protect against source files that contrive to import their own modules.
1218- if (imported.module .second == ownModule)
1218+ if (imported.module .importedModule == ownModule)
12191219 continue ;
12201220
12211221 bool isExported =
12221222 imported.importOptions .contains (SourceFile::ImportFlags::Exported);
12231223 if (!includePrivate && !isExported)
12241224 continue ;
12251225
1226- Optional<OP_DECL *> maybeOp =
1227- lookupOperatorDeclForName<OP_DECL>(imported.module .second , Loc, Name,
1228- isCascading);
1226+ Optional<OP_DECL *> maybeOp = lookupOperatorDeclForName<OP_DECL>(
1227+ imported.module .importedModule , Loc, Name, isCascading);
12291228 if (!maybeOp)
12301229 return None;
12311230
@@ -1401,7 +1400,7 @@ SourceFile::getImportedModules(SmallVectorImpl<ModuleDecl::ImportedModule> &modu
14011400 else
14021401 requiredFilter |= ModuleDecl::ImportFilterKind::Private;
14031402
1404- if (!separatelyImportedOverlays.lookup (desc.module .second ).empty ())
1403+ if (!separatelyImportedOverlays.lookup (desc.module .importedModule ).empty ())
14051404 requiredFilter |= ModuleDecl::ImportFilterKind::ShadowedBySeparateOverlay;
14061405
14071406 if (filter.contains (requiredFilter))
@@ -1496,26 +1495,26 @@ ModuleDecl::removeDuplicateImports(SmallVectorImpl<ImportedModule> &imports) {
14961495 std::sort (imports.begin (), imports.end (),
14971496 [](const ImportedModule &lhs, const ImportedModule &rhs) -> bool {
14981497 // Arbitrarily sort by name to get a deterministic order.
1499- if (lhs.second != rhs.second ) {
1498+ if (lhs.importedModule != rhs.importedModule ) {
15001499 return std::lexicographical_compare (
1501- lhs.second ->getReverseFullModuleName (), {},
1502- rhs.second ->getReverseFullModuleName (), {});
1500+ lhs.importedModule ->getReverseFullModuleName (), {},
1501+ rhs.importedModule ->getReverseFullModuleName (), {});
15031502 }
15041503 using AccessPathElem = Located<Identifier>;
1505- return std::lexicographical_compare (lhs.first .begin (), lhs.first .end (),
1506- rhs.first .begin (), rhs.first .end (),
1507- [](const AccessPathElem &lElem,
1508- const AccessPathElem &rElem) {
1509- return lElem.Item .str () < rElem.Item .str ();
1510- });
1511- });
1512- auto last = std::unique (imports.begin (), imports.end (),
1513- [](const ImportedModule &lhs,
1514- const ImportedModule &rhs) -> bool {
1515- if (lhs.second != rhs.second )
1516- return false ;
1517- return ModuleDecl::isSameAccessPath (lhs.first , rhs.first );
1504+ return std::lexicographical_compare (
1505+ lhs.accessPath .begin (), lhs.accessPath .end (), rhs.accessPath .begin (),
1506+ rhs.accessPath .end (),
1507+ [](const AccessPathElem &lElem, const AccessPathElem &rElem) {
1508+ return lElem.Item .str () < rElem.Item .str ();
1509+ });
15181510 });
1511+ auto last = std::unique (
1512+ imports.begin (), imports.end (),
1513+ [](const ImportedModule &lhs, const ImportedModule &rhs) -> bool {
1514+ if (lhs.importedModule != rhs.importedModule )
1515+ return false ;
1516+ return ModuleDecl::isSameAccessPath (lhs.accessPath , rhs.accessPath );
1517+ });
15191518 imports.erase (last, imports.end ());
15201519}
15211520
@@ -1676,11 +1675,12 @@ SourceFile::collectLinkLibraries(ModuleDecl::LinkLibraryCallback callback) const
16761675 topLevel->getImportedModules (stack, topLevelFilter);
16771676
16781677 // Make sure the top-level module is first; we want pre-order-ish traversal.
1679- stack.emplace_back (ModuleDecl::AccessPathTy (),
1680- const_cast <ModuleDecl *>(topLevel));
1678+ auto topLevelModule =
1679+ ModuleDecl::ImportedModule{ModuleDecl::AccessPathTy (), topLevel};
1680+ stack.emplace_back (topLevelModule);
16811681
16821682 while (!stack.empty ()) {
1683- auto next = stack.pop_back_val ().second ;
1683+ auto next = stack.pop_back_val ().importedModule ;
16841684
16851685 if (!visited.insert (next).second )
16861686 continue ;
@@ -1888,7 +1888,7 @@ ModuleDecl::getDeclaringModuleAndBystander() {
18881888
18891889 getImportedModules (imported, ModuleDecl::ImportFilterKind::Public);
18901890 while (!imported.empty ()) {
1891- ModuleDecl *importedModule = std::get< 1 >( imported.back ()) ;
1891+ ModuleDecl *importedModule = imported.back (). importedModule ;
18921892 imported.pop_back ();
18931893 if (!seen.insert (importedModule).second )
18941894 continue ;
@@ -2107,15 +2107,15 @@ bool SourceFile::hasTestableOrPrivateImport(
21072107 Imports->begin (), Imports->end (),
21082108 [module , queryKind](ImportedModuleDesc desc) -> bool {
21092109 if (queryKind == ImportQueryKind::TestableAndPrivate)
2110- return desc.module .second == module &&
2110+ return desc.module .importedModule == module &&
21112111 (desc.importOptions .contains (ImportFlags::PrivateImport) ||
21122112 desc.importOptions .contains (ImportFlags::Testable));
21132113 else if (queryKind == ImportQueryKind::TestableOnly)
2114- return desc.module .second == module &&
2114+ return desc.module .importedModule == module &&
21152115 desc.importOptions .contains (ImportFlags::Testable);
21162116 else {
21172117 assert (queryKind == ImportQueryKind::PrivateOnly);
2118- return desc.module .second == module &&
2118+ return desc.module .importedModule == module &&
21192119 desc.importOptions .contains (ImportFlags::PrivateImport);
21202120 }
21212121 });
@@ -2148,7 +2148,7 @@ bool SourceFile::hasTestableOrPrivateImport(
21482148
21492149 return std::any_of (Imports->begin (), Imports->end (),
21502150 [module , filename](ImportedModuleDesc desc) -> bool {
2151- return desc.module .second == module &&
2151+ return desc.module .importedModule == module &&
21522152 desc.importOptions .contains (
21532153 ImportFlags::PrivateImport) &&
21542154 desc.filename == filename;
@@ -2171,7 +2171,7 @@ bool SourceFile::isImportedImplementationOnly(const ModuleDecl *module) const {
21712171
21722172 // If the module is imported this way, it's not imported
21732173 // implementation-only.
2174- if (imports.isImportedBy (module , desc.module .second ))
2174+ if (imports.isImportedBy (module , desc.module .importedModule ))
21752175 return false ;
21762176 }
21772177
@@ -2183,7 +2183,7 @@ void SourceFile::lookupImportedSPIGroups(const ModuleDecl *importedModule,
21832183 SmallVectorImpl<Identifier> &spiGroups) const {
21842184 for (auto &import : *Imports) {
21852185 if (import .importOptions .contains (ImportFlags::SPIAccessControl) &&
2186- importedModule == std::get<ModuleDecl*>( import .module ) ) {
2186+ importedModule == import .module . importedModule ) {
21872187 auto importedSpis = import .spiGroups ;
21882188 spiGroups.append (importedSpis.begin (), importedSpis.end ());
21892189 }
0 commit comments