@@ -339,25 +339,19 @@ class ModuleInterfaceLoaderImpl {
339
339
const SourceLoc diagnosticLoc;
340
340
DependencyTracker *const dependencyTracker;
341
341
const ModuleLoadingMode loadMode;
342
- const bool remarkOnRebuildFromInterface;
343
- const bool disableInterfaceLock;
344
- const bool disableImplicitSwiftModule;
342
+ ModuleInterfaceLoaderOptions Opts;
345
343
346
344
ModuleInterfaceLoaderImpl (
347
345
ASTContext &ctx, StringRef modulePath, StringRef interfacePath,
348
346
StringRef moduleName, StringRef cacheDir, StringRef prebuiltCacheDir,
349
- SourceLoc diagLoc, bool remarkOnRebuildFromInterface,
350
- bool disableInterfaceLock, bool disableImplicitSwiftModule,
347
+ SourceLoc diagLoc, ModuleInterfaceLoaderOptions Opts,
351
348
DependencyTracker *dependencyTracker = nullptr ,
352
349
ModuleLoadingMode loadMode = ModuleLoadingMode::PreferSerialized)
353
350
: ctx(ctx), fs(*ctx.SourceMgr.getFileSystem()), diags(ctx.Diags),
354
351
modulePath (modulePath), interfacePath(interfacePath),
355
352
moduleName(moduleName), prebuiltCacheDir(prebuiltCacheDir),
356
353
cacheDir(cacheDir), diagnosticLoc(diagLoc),
357
- dependencyTracker(dependencyTracker), loadMode(loadMode),
358
- remarkOnRebuildFromInterface(remarkOnRebuildFromInterface),
359
- disableInterfaceLock(disableInterfaceLock),
360
- disableImplicitSwiftModule(disableImplicitSwiftModule) {}
354
+ dependencyTracker(dependencyTracker), loadMode(loadMode), Opts(Opts) {}
361
355
362
356
// / Constructs the full path of the dependency \p dep by prepending the SDK
363
357
// / path if necessary.
@@ -830,21 +824,19 @@ class ModuleInterfaceLoaderImpl {
830
824
}
831
825
InterfaceSubContextDelegateImpl astDelegate (ctx.SourceMgr , ctx.Diags ,
832
826
ctx.SearchPathOpts , ctx.LangOpts ,
827
+ Opts,
833
828
ctx.getClangModuleLoader (),
834
829
/* buildModuleCacheDirIfAbsent*/ true ,
835
830
cacheDir,
836
831
prebuiltCacheDir,
837
832
/* serializeDependencyHashes*/ false ,
838
- trackSystemDependencies,
839
- remarkOnRebuildFromInterface,
840
- disableInterfaceLock,
841
- disableImplicitSwiftModule);
833
+ trackSystemDependencies);
842
834
// Set up a builder if we need to build the module. It'll also set up
843
835
// the subinvocation we'll need to use to compute the cache paths.
844
836
ModuleInterfaceBuilder builder (
845
837
ctx.SourceMgr , ctx.Diags , astDelegate, interfacePath, moduleName, cacheDir,
846
838
prebuiltCacheDir,
847
- disableInterfaceLock, diagnosticLoc,
839
+ Opts. disableInterfaceLock , diagnosticLoc,
848
840
dependencyTracker);
849
841
850
842
// Compute the output path if we're loading or emitting a cached module.
@@ -907,7 +899,7 @@ class ModuleInterfaceLoaderImpl {
907
899
908
900
if (builder.buildSwiftModule (cachedOutputPath, /* shouldSerializeDeps*/ true ,
909
901
&moduleBuffer,
910
- remarkOnRebuildFromInterface ? remarkRebuild:
902
+ Opts. remarkOnRebuildFromInterface ? remarkRebuild:
911
903
llvm::function_ref<void ()>()))
912
904
return std::make_error_code (std::errc::invalid_argument);
913
905
@@ -967,8 +959,7 @@ std::error_code ModuleInterfaceLoader::findModuleFilesInDirectory(
967
959
ModuleInterfaceLoaderImpl Impl (
968
960
Ctx, ModPath, InPath, ModuleName,
969
961
CacheDir, PrebuiltCacheDir, ModuleID.Loc ,
970
- RemarkOnRebuildFromInterface, DisableInterfaceFileLock,
971
- DisableImplicitSwiftModule,
962
+ Opts,
972
963
dependencyTracker,
973
964
llvm::is_contained (PreferInterfaceForModules,
974
965
ModuleName) ?
@@ -1008,18 +999,15 @@ bool ModuleInterfaceLoader::buildSwiftModuleFromSwiftInterface(
1008
999
StringRef CacheDir, StringRef PrebuiltCacheDir,
1009
1000
StringRef ModuleName, StringRef InPath, StringRef OutPath,
1010
1001
bool SerializeDependencyHashes, bool TrackSystemDependencies,
1011
- bool RemarkOnRebuildFromInterface, bool DisableInterfaceFileLock,
1012
- bool DisableImplicitSwiftModule) {
1002
+ ModuleInterfaceLoaderOptions LoaderOpts) {
1013
1003
InterfaceSubContextDelegateImpl astDelegate (SourceMgr, Diags,
1014
1004
SearchPathOpts, LangOpts,
1005
+ LoaderOpts,
1015
1006
/* clangImporter*/ nullptr ,
1016
1007
/* CreateCacheDirIfAbsent*/ true ,
1017
1008
CacheDir, PrebuiltCacheDir,
1018
1009
SerializeDependencyHashes,
1019
- TrackSystemDependencies,
1020
- RemarkOnRebuildFromInterface,
1021
- DisableInterfaceFileLock,
1022
- DisableImplicitSwiftModule);
1010
+ TrackSystemDependencies);
1023
1011
// At this point we don't have an ClangImporter instance because the instance
1024
1012
// is created later when we create a new ASTContext to build the interface.
1025
1013
// Thus, we have to add these extra clang flags manually here to ensure explict
@@ -1029,7 +1017,7 @@ bool ModuleInterfaceLoader::buildSwiftModuleFromSwiftInterface(
1029
1017
}
1030
1018
ModuleInterfaceBuilder builder (SourceMgr, Diags, astDelegate, InPath,
1031
1019
ModuleName, CacheDir, PrebuiltCacheDir,
1032
- DisableInterfaceFileLock );
1020
+ LoaderOpts. disableInterfaceLock );
1033
1021
// FIXME: We really only want to serialize 'important' dependencies here, if
1034
1022
// we want to ship the built swiftmodules to another machine.
1035
1023
return builder.buildSwiftModule (OutPath, /* shouldSerializeDeps*/ true ,
@@ -1183,15 +1171,13 @@ InterfaceSubContextDelegateImpl::InterfaceSubContextDelegateImpl(
1183
1171
DiagnosticEngine &Diags,
1184
1172
const SearchPathOptions &searchPathOpts,
1185
1173
const LangOptions &langOpts,
1174
+ ModuleInterfaceLoaderOptions LoaderOpts,
1186
1175
ClangModuleLoader *clangImporter,
1187
1176
bool buildModuleCacheDirIfAbsent,
1188
1177
StringRef moduleCachePath,
1189
1178
StringRef prebuiltCachePath,
1190
1179
bool serializeDependencyHashes,
1191
- bool trackSystemDependencies,
1192
- bool remarkOnRebuildFromInterface,
1193
- bool disableInterfaceFileLock,
1194
- bool disableImplicitSwiftModule): SM(SM), Diags(Diags), ArgSaver(Allocator) {
1180
+ bool trackSystemDependencies): SM(SM), Diags(Diags), ArgSaver(Allocator) {
1195
1181
inheritOptionsForBuildingInterface (searchPathOpts, langOpts);
1196
1182
// Configure front-end input.
1197
1183
auto &SubFEOpts = subInvocation.getFrontendOptions ();
@@ -1211,7 +1197,7 @@ InterfaceSubContextDelegateImpl::InterfaceSubContextDelegateImpl(
1211
1197
if (trackSystemDependencies) {
1212
1198
GenericArgs.push_back (" -track-system-dependencies" );
1213
1199
}
1214
- if (disableImplicitSwiftModule) {
1200
+ if (LoaderOpts. disableImplicitSwiftModule ) {
1215
1201
subInvocation.getFrontendOptions ().DisableImplicitModules = true ;
1216
1202
GenericArgs.push_back (" -disable-implicit-swift-modules" );
1217
1203
}
@@ -1244,8 +1230,8 @@ InterfaceSubContextDelegateImpl::InterfaceSubContextDelegateImpl(
1244
1230
// Tell the subinvocation to remark on rebuilds from an interface if asked
1245
1231
// to do so.
1246
1232
frontendOpts.RemarkOnRebuildFromModuleInterface =
1247
- remarkOnRebuildFromInterface;
1248
- if (remarkOnRebuildFromInterface) {
1233
+ LoaderOpts. remarkOnRebuildFromInterface ;
1234
+ if (LoaderOpts. remarkOnRebuildFromInterface ) {
1249
1235
GenericArgs.push_back (" -Rmodule-interface-rebuild" );
1250
1236
}
1251
1237
0 commit comments