@@ -395,6 +395,7 @@ emitDataForSwiftSerializedModule(ModuleDecl *module,
395395 bool indexSystemModules,
396396 bool skipStdlib,
397397 bool includeLocals,
398+ bool explicitModulebuild,
398399 StringRef targetTriple,
399400 const clang::CompilerInstance &clangCI,
400401 DiagnosticEngine &diags,
@@ -598,6 +599,7 @@ static void addModuleDependencies(ArrayRef<ImportedModule> imports,
598599 bool indexSystemModules,
599600 bool skipStdlib,
600601 bool includeLocals,
602+ bool explicitModuleBuild,
601603 StringRef targetTriple,
602604 const clang::CompilerInstance &clangCI,
603605 DiagnosticEngine &diags,
@@ -674,7 +676,9 @@ static void addModuleDependencies(ArrayRef<ImportedModule> imports,
674676 emitDataForSwiftSerializedModule (mod, indexStorePath,
675677 indexClangModules,
676678 indexSystemModules, skipStdlib,
677- includeLocals, targetTriple,
679+ includeLocals,
680+ explicitModuleBuild,
681+ targetTriple,
678682 clangCI, diags,
679683 unitWriter,
680684 pathRemapper,
@@ -719,6 +723,7 @@ emitDataForSwiftSerializedModule(ModuleDecl *module,
719723 bool indexSystemModules,
720724 bool skipStdlib,
721725 bool includeLocals,
726+ bool explicitModuleBuild,
722727 StringRef targetTriple,
723728 const clang::CompilerInstance &clangCI,
724729 DiagnosticEngine &diags,
@@ -747,7 +752,9 @@ emitDataForSwiftSerializedModule(ModuleDecl *module,
747752 // Reload resilient modules from swiftinterface to avoid indexing
748753 // internal details.
749754 bool skipIndexingModule = false ;
750- if (module ->getResilienceStrategy () == ResilienceStrategy::Resilient &&
755+ // Note, we are unable to reload from interface on an explicit module build
756+ if (!explicitModuleBuild &&
757+ module ->getResilienceStrategy () == ResilienceStrategy::Resilient &&
751758 !module ->isBuiltFromInterface () &&
752759 !module ->isStdlibModule ()) {
753760 module ->getASTContext ().setIgnoreAdjacentModules (true );
@@ -867,6 +874,7 @@ emitDataForSwiftSerializedModule(ModuleDecl *module,
867874 StringScratchSpace moduleNameScratch;
868875 addModuleDependencies (imports, indexStorePath, indexClangModules,
869876 indexSystemModules, skipStdlib, includeLocals,
877+ explicitModuleBuild,
870878 targetTriple, clangCI, diags, unitWriter,
871879 moduleNameScratch, pathRemapper, initialFile);
872880
@@ -883,7 +891,7 @@ recordSourceFileUnit(SourceFile *primarySourceFile, StringRef indexUnitToken,
883891 StringRef indexStorePath, bool indexClangModules,
884892 bool indexSystemModules, bool skipStdlib,
885893 bool includeLocals, bool isDebugCompilation,
886- StringRef targetTriple,
894+ bool isExplicitModuleBuild, StringRef targetTriple,
887895 ArrayRef<const clang::FileEntry *> fileDependencies,
888896 const clang::CompilerInstance &clangCI,
889897 const PathRemapper &pathRemapper,
@@ -909,8 +917,9 @@ recordSourceFileUnit(SourceFile *primarySourceFile, StringRef indexUnitToken,
909917 StringScratchSpace moduleNameScratch;
910918 addModuleDependencies (imports, indexStorePath, indexClangModules,
911919 indexSystemModules, skipStdlib, includeLocals,
912- targetTriple, clangCI, diags, unitWriter,
913- moduleNameScratch, pathRemapper, primarySourceFile);
920+ isExplicitModuleBuild, targetTriple, clangCI, diags,
921+ unitWriter, moduleNameScratch, pathRemapper,
922+ primarySourceFile);
914923
915924 // File dependencies.
916925 for (auto *F : fileDependencies)
@@ -965,6 +974,7 @@ bool index::indexAndRecord(SourceFile *primarySourceFile,
965974 bool skipStdlib,
966975 bool includeLocals,
967976 bool isDebugCompilation,
977+ bool isExplicitModuleBuild,
968978 StringRef targetTriple,
969979 const DependencyTracker &dependencyTracker,
970980 const PathRemapper &pathRemapper) {
@@ -994,8 +1004,8 @@ bool index::indexAndRecord(SourceFile *primarySourceFile,
9941004 return recordSourceFileUnit (primarySourceFile, indexUnitToken,
9951005 indexStorePath, indexClangModules,
9961006 indexSystemModules, skipStdlib, includeLocals,
997- isDebugCompilation, targetTriple ,
998- fileDependencies.getArrayRef (),
1007+ isDebugCompilation, isExplicitModuleBuild ,
1008+ targetTriple, fileDependencies.getArrayRef (),
9991009 clangCI, pathRemapper, diags);
10001010}
10011011
@@ -1008,6 +1018,7 @@ bool index::indexAndRecord(ModuleDecl *module,
10081018 bool skipStdlib,
10091019 bool includeLocals,
10101020 bool isDebugCompilation,
1021+ bool isExplicitModuleBuild,
10111022 StringRef targetTriple,
10121023 const DependencyTracker &dependencyTracker,
10131024 const PathRemapper &pathRemapper) {
@@ -1045,8 +1056,8 @@ bool index::indexAndRecord(ModuleDecl *module,
10451056 if (recordSourceFileUnit (SF, indexUnitTokens[unitIndex],
10461057 indexStorePath, indexClangModules,
10471058 indexSystemModules, skipStdlib, includeLocals,
1048- isDebugCompilation, targetTriple ,
1049- fileDependencies.getArrayRef (),
1059+ isDebugCompilation, isExplicitModuleBuild ,
1060+ targetTriple, fileDependencies.getArrayRef (),
10501061 clangCI, pathRemapper, diags))
10511062 return true ;
10521063 unitIndex += 1 ;
0 commit comments