@@ -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
@@ -1418,7 +1417,7 @@ SourceFile::getImportedModules(SmallVectorImpl<ModuleDecl::ImportedModule> &modu
14181417 else
14191418 requiredFilter |= ModuleDecl::ImportFilterKind::Private;
14201419
1421- if (!separatelyImportedOverlays.lookup (desc.module .second ).empty ())
1420+ if (!separatelyImportedOverlays.lookup (desc.module .importedModule ).empty ())
14221421 requiredFilter |= ModuleDecl::ImportFilterKind::ShadowedBySeparateOverlay;
14231422
14241423 if (filter.contains (requiredFilter))
@@ -1513,26 +1512,26 @@ ModuleDecl::removeDuplicateImports(SmallVectorImpl<ImportedModule> &imports) {
15131512 std::sort (imports.begin (), imports.end (),
15141513 [](const ImportedModule &lhs, const ImportedModule &rhs) -> bool {
15151514 // Arbitrarily sort by name to get a deterministic order.
1516- if (lhs.second != rhs.second ) {
1515+ if (lhs.importedModule != rhs.importedModule ) {
15171516 return std::lexicographical_compare (
1518- lhs.second ->getReverseFullModuleName (), {},
1519- rhs.second ->getReverseFullModuleName (), {});
1517+ lhs.importedModule ->getReverseFullModuleName (), {},
1518+ rhs.importedModule ->getReverseFullModuleName (), {});
15201519 }
15211520 using AccessPathElem = Located<Identifier>;
1522- return std::lexicographical_compare (lhs.first .begin (), lhs.first .end (),
1523- rhs.first .begin (), rhs.first .end (),
1524- [](const AccessPathElem &lElem,
1525- const AccessPathElem &rElem) {
1526- return lElem.Item .str () < rElem.Item .str ();
1527- });
1528- });
1529- auto last = std::unique (imports.begin (), imports.end (),
1530- [](const ImportedModule &lhs,
1531- const ImportedModule &rhs) -> bool {
1532- if (lhs.second != rhs.second )
1533- return false ;
1534- return ModuleDecl::isSameAccessPath (lhs.first , rhs.first );
1521+ return std::lexicographical_compare (
1522+ lhs.accessPath .begin (), lhs.accessPath .end (), rhs.accessPath .begin (),
1523+ rhs.accessPath .end (),
1524+ [](const AccessPathElem &lElem, const AccessPathElem &rElem) {
1525+ return lElem.Item .str () < rElem.Item .str ();
1526+ });
15351527 });
1528+ auto last = std::unique (
1529+ imports.begin (), imports.end (),
1530+ [](const ImportedModule &lhs, const ImportedModule &rhs) -> bool {
1531+ if (lhs.importedModule != rhs.importedModule )
1532+ return false ;
1533+ return ModuleDecl::isSameAccessPath (lhs.accessPath , rhs.accessPath );
1534+ });
15361535 imports.erase (last, imports.end ());
15371536}
15381537
@@ -1693,11 +1692,12 @@ SourceFile::collectLinkLibraries(ModuleDecl::LinkLibraryCallback callback) const
16931692 topLevel->getImportedModules (stack, topLevelFilter);
16941693
16951694 // Make sure the top-level module is first; we want pre-order-ish traversal.
1696- stack.emplace_back (ModuleDecl::AccessPathTy (),
1697- const_cast <ModuleDecl *>(topLevel));
1695+ auto topLevelModule =
1696+ ModuleDecl::ImportedModule{ModuleDecl::AccessPathTy (), topLevel};
1697+ stack.emplace_back (topLevelModule);
16981698
16991699 while (!stack.empty ()) {
1700- auto next = stack.pop_back_val ().second ;
1700+ auto next = stack.pop_back_val ().importedModule ;
17011701
17021702 if (!visited.insert (next).second )
17031703 continue ;
@@ -1905,7 +1905,7 @@ ModuleDecl::getDeclaringModuleAndBystander() {
19051905
19061906 getImportedModules (imported, ModuleDecl::ImportFilterKind::Public);
19071907 while (!imported.empty ()) {
1908- ModuleDecl *importedModule = std::get< 1 >( imported.back ()) ;
1908+ ModuleDecl *importedModule = imported.back (). importedModule ;
19091909 imported.pop_back ();
19101910 if (!seen.insert (importedModule).second )
19111911 continue ;
@@ -2124,15 +2124,15 @@ bool SourceFile::hasTestableOrPrivateImport(
21242124 Imports->begin (), Imports->end (),
21252125 [module , queryKind](ImportedModuleDesc desc) -> bool {
21262126 if (queryKind == ImportQueryKind::TestableAndPrivate)
2127- return desc.module .second == module &&
2127+ return desc.module .importedModule == module &&
21282128 (desc.importOptions .contains (ImportFlags::PrivateImport) ||
21292129 desc.importOptions .contains (ImportFlags::Testable));
21302130 else if (queryKind == ImportQueryKind::TestableOnly)
2131- return desc.module .second == module &&
2131+ return desc.module .importedModule == module &&
21322132 desc.importOptions .contains (ImportFlags::Testable);
21332133 else {
21342134 assert (queryKind == ImportQueryKind::PrivateOnly);
2135- return desc.module .second == module &&
2135+ return desc.module .importedModule == module &&
21362136 desc.importOptions .contains (ImportFlags::PrivateImport);
21372137 }
21382138 });
@@ -2165,7 +2165,7 @@ bool SourceFile::hasTestableOrPrivateImport(
21652165
21662166 return std::any_of (Imports->begin (), Imports->end (),
21672167 [module , filename](ImportedModuleDesc desc) -> bool {
2168- return desc.module .second == module &&
2168+ return desc.module .importedModule == module &&
21692169 desc.importOptions .contains (
21702170 ImportFlags::PrivateImport) &&
21712171 desc.filename == filename;
@@ -2188,7 +2188,7 @@ bool SourceFile::isImportedImplementationOnly(const ModuleDecl *module) const {
21882188
21892189 // If the module is imported this way, it's not imported
21902190 // implementation-only.
2191- if (imports.isImportedBy (module , desc.module .second ))
2191+ if (imports.isImportedBy (module , desc.module .importedModule ))
21922192 return false ;
21932193 }
21942194
@@ -2200,7 +2200,7 @@ void SourceFile::lookupImportedSPIGroups(const ModuleDecl *importedModule,
22002200 SmallVectorImpl<Identifier> &spiGroups) const {
22012201 for (auto &import : *Imports) {
22022202 if (import .importOptions .contains (ImportFlags::SPIAccessControl) &&
2203- importedModule == std::get<ModuleDecl*>( import .module ) ) {
2203+ importedModule == import .module . importedModule ) {
22042204 auto importedSpis = import .spiGroups ;
22052205 spiGroups.append (importedSpis.begin (), importedSpis.end ());
22062206 }
0 commit comments