@@ -395,7 +395,8 @@ std::error_code SerializedModuleLoaderBase::openModuleFile(
395395SerializedModuleLoaderBase::BinaryModuleImports
396396SerializedModuleLoaderBase::getImportsOfModule (
397397 const ModuleFileSharedCore &loadedModuleFile,
398- ModuleLoadingBehavior transitiveBehavior, StringRef packageName) {
398+ ModuleLoadingBehavior transitiveBehavior, StringRef packageName,
399+ bool isTestableImport) {
399400 llvm::StringSet<> importedModuleNames;
400401 std::string importedHeader = " " ;
401402 for (const auto &dependency : loadedModuleFile.getDependencies ()) {
@@ -410,8 +411,7 @@ SerializedModuleLoaderBase::getImportsOfModule(
410411 loadedModuleFile.getTransitiveLoadingBehavior (
411412 dependency,
412413 /* debuggerMode*/ false ,
413- /* isPartialModule*/ false , packageName,
414- loadedModuleFile.isTestable ());
414+ /* isPartialModule*/ false , packageName, isTestableImport);
415415 if (dependencyTransitiveBehavior > transitiveBehavior)
416416 continue ;
417417
@@ -431,8 +431,7 @@ SerializedModuleLoaderBase::getImportsOfModule(
431431
432432llvm::ErrorOr<ModuleDependencyInfo>
433433SerializedModuleLoaderBase::scanModuleFile (Twine modulePath, bool isFramework,
434- bool isTestableImport,
435- bool hasInterface) {
434+ bool isTestableImport) {
436435 const std::string moduleDocPath;
437436 const std::string sourceInfoPath;
438437
@@ -455,16 +454,6 @@ SerializedModuleLoaderBase::scanModuleFile(Twine modulePath, bool isFramework,
455454 modulePath.str ());
456455 return std::make_error_code (std::errc::no_such_file_or_directory);
457456 }
458-
459- // If the module file has interface file and not testable imported, don't
460- // import the testable module because it contains more interfaces than
461- // needed and can pull in more dependencies.
462- if (loadedModuleFile->isTestable () && !isTestableImport && hasInterface) {
463- if (Ctx.LangOpts .EnableModuleLoadingRemarks )
464- Ctx.Diags .diagnose (SourceLoc (), diag::skip_module_testable,
465- modulePath.str ());
466- return std::make_error_code (std::errc::no_such_file_or_directory);
467- }
468457 }
469458
470459 // Some transitive dependencies of binary modules are not required to be
@@ -475,12 +464,12 @@ SerializedModuleLoaderBase::scanModuleFile(Twine modulePath, bool isFramework,
475464 // optional.
476465 auto binaryModuleImports =
477466 getImportsOfModule (*loadedModuleFile, ModuleLoadingBehavior::Required,
478- Ctx.LangOpts .PackageName );
467+ Ctx.LangOpts .PackageName , isTestableImport );
479468
480469 // Lookup optional imports of this module also
481470 auto binaryModuleOptionalImports =
482471 getImportsOfModule (*loadedModuleFile, ModuleLoadingBehavior::Optional,
483- Ctx.LangOpts .PackageName );
472+ Ctx.LangOpts .PackageName , isTestableImport );
484473
485474 auto importedModuleSet = binaryModuleImports.moduleImports ;
486475 std::vector<std::string> importedModuleNames;
0 commit comments