@@ -1814,8 +1814,9 @@ void InterfaceSubContextDelegateImpl::inheritOptionsForBuildingInterface(
1814
1814
}
1815
1815
1816
1816
bool InterfaceSubContextDelegateImpl::extractSwiftInterfaceVersionAndArgs (
1817
- CompilerInvocation &subInvocation, SwiftInterfaceInfo &interfaceInfo,
1818
- StringRef interfacePath, SourceLoc diagnosticLoc) {
1817
+ CompilerInvocation &subInvocation, DiagnosticEngine &subInstanceDiags,
1818
+ SwiftInterfaceInfo &interfaceInfo, StringRef interfacePath,
1819
+ SourceLoc diagnosticLoc) {
1819
1820
if (readSwiftInterfaceVersionAndArgs (SM, *Diags, ArgSaver, interfaceInfo,
1820
1821
interfacePath, diagnosticLoc,
1821
1822
subInvocation.getLangOptions ().Target ))
@@ -1833,7 +1834,7 @@ bool InterfaceSubContextDelegateImpl::extractSwiftInterfaceVersionAndArgs(
1833
1834
}
1834
1835
1835
1836
SmallString<32 > ExpectedModuleName = subInvocation.getModuleName ();
1836
- if (subInvocation.parseArgs (interfaceInfo.Arguments , *Diags )) {
1837
+ if (subInvocation.parseArgs (interfaceInfo.Arguments , subInstanceDiags )) {
1837
1838
return true ;
1838
1839
}
1839
1840
@@ -2238,11 +2239,25 @@ InterfaceSubContextDelegateImpl::runInSubCompilerInstance(StringRef moduleName,
2238
2239
subInvocation.getFrontendOptions ().InputsAndOutputs
2239
2240
.setMainAndSupplementaryOutputs (outputFiles, ModuleOutputPaths);
2240
2241
2242
+ CompilerInstance subInstance;
2243
+ ForwardingDiagnosticConsumer FDC (*Diags);
2244
+ NullDiagnosticConsumer noopConsumer;
2245
+ if (!silenceErrors) {
2246
+ subInstance.addDiagnosticConsumer (&FDC);
2247
+ } else {
2248
+ subInstance.addDiagnosticConsumer (&noopConsumer);
2249
+ }
2250
+
2251
+ // Eagerly suppress warnings if necessary, before parsing arguments.
2252
+ if (subInvocation.getDiagnosticOptions ().SuppressWarnings )
2253
+ subInstance.getDiags ().setSuppressWarnings (true );
2254
+
2241
2255
SwiftInterfaceInfo interfaceInfo;
2242
2256
// Extract compiler arguments from the interface file and use them to configure
2243
2257
// the compiler invocation.
2244
- if (extractSwiftInterfaceVersionAndArgs (subInvocation, interfaceInfo,
2245
- interfacePath, diagLoc)) {
2258
+ if (extractSwiftInterfaceVersionAndArgs (subInvocation, subInstance.getDiags (),
2259
+ interfaceInfo, interfacePath,
2260
+ diagLoc)) {
2246
2261
return std::make_error_code (std::errc::not_supported);
2247
2262
}
2248
2263
@@ -2254,21 +2269,12 @@ InterfaceSubContextDelegateImpl::runInSubCompilerInstance(StringRef moduleName,
2254
2269
subInvocation.getFrontendOptions ().StrictImplicitModuleContext =
2255
2270
StrictImplicitModuleContext;
2256
2271
2257
- CompilerInstance subInstance;
2258
2272
SubCompilerInstanceInfo info;
2259
2273
info.Instance = &subInstance;
2260
2274
info.CompilerVersion = interfaceInfo.CompilerVersion ;
2261
2275
2262
2276
subInstance.getSourceMgr ().setFileSystem (SM.getFileSystem ());
2263
2277
2264
- ForwardingDiagnosticConsumer FDC (*Diags);
2265
- NullDiagnosticConsumer noopConsumer;
2266
- if (!silenceErrors) {
2267
- subInstance.addDiagnosticConsumer (&FDC);
2268
- } else {
2269
- subInstance.addDiagnosticConsumer (&noopConsumer);
2270
- }
2271
-
2272
2278
std::string InstanceSetupError;
2273
2279
if (subInstance.setup (subInvocation, InstanceSetupError)) {
2274
2280
return std::make_error_code (std::errc::not_supported);
0 commit comments