Warn about the use of internal bridging headers without library evolution

It's very, very easy to make a mistake that will cause broken
serialized modules. Until that's no longer true, at least tell folks
that they are heading into uncharted waters, as we do with
`@_implementationOnly` imports.
This commit is contained in:
Doug Gregor
2025-09-19 16:19:17 -07:00
parent 903937a78f
commit b9f00ef923
3 changed files with 24 additions and 0 deletions

View File

@@ -2129,6 +2129,13 @@ static bool ParseClangImporterArgs(ClangImporterOptions &Opts, ArgList &Args,
Opts.BridgingHeaderIsInternal = importAsInternal;
}
// Until we have some checking in place, internal bridging headers are a
// bit unsafe without library evolution.
if (Opts.BridgingHeaderIsInternal && !FrontendOpts.EnableLibraryEvolution) {
Diags.diagnose(SourceLoc(),
diag::internal_bridging_header_without_library_evolution);
}
Opts.DisableSwiftBridgeAttr |= Args.hasArg(OPT_disable_swift_bridge_attr);
Opts.DisableOverlayModules |= Args.hasArg(OPT_emit_imported_modules);