@@ -53,7 +53,8 @@ concreteSyntaxDeclForAvailableAttribute(const Decl *AbstractSyntaxDecl);
5353static bool diagnoseExplicitUnavailability (
5454 SourceLoc loc, const RootProtocolConformance *rootConf,
5555 const ExtensionDecl *ext, const ExportContext &where,
56- bool warnIfConformanceUnavailablePreSwift6 = false );
56+ bool warnIfConformanceUnavailablePreSwift6 = false ,
57+ bool preconcurrency = false );
5758
5859// / Emit a diagnostic for references to declarations that have been
5960// / marked as unavailable, either through "unavailable" or "obsoleted:".
@@ -2986,7 +2987,8 @@ getExplicitUnavailabilityDiagnosticInfo(const Decl *decl,
29862987bool diagnoseExplicitUnavailability (
29872988 SourceLoc loc, const RootProtocolConformance *rootConf,
29882989 const ExtensionDecl *ext, const ExportContext &where,
2989- bool warnIfConformanceUnavailablePreSwift6) {
2990+ bool warnIfConformanceUnavailablePreSwift6,
2991+ bool preconcurrency) {
29902992 // Invertible protocols are never unavailable.
29912993 if (rootConf->getProtocol ()->getInvertibleProtocolKind ())
29922994 return false ;
@@ -3012,7 +3014,7 @@ bool diagnoseExplicitUnavailability(
30123014 diags
30133015 .diagnose (loc, diag::conformance_availability_unavailable, type, proto,
30143016 platform.empty (), platform, EncodedMessage.Message )
3015- .limitBehaviorUntilSwiftVersion (behavior, 6 )
3017+ .limitBehaviorWithPreconcurrency (behavior, preconcurrency )
30163018 .warnUntilSwiftVersionIf (warnIfConformanceUnavailablePreSwift6, 6 );
30173019
30183020 switch (diagnosticInfo->getStatus ()) {
@@ -4641,7 +4643,8 @@ swift::diagnoseConformanceAvailability(SourceLoc loc,
46414643 // FIXME: diagnoseExplicitUnavailability() should take unmet requirement
46424644 if (diagnoseExplicitUnavailability (
46434645 loc, rootConf, ext, where,
4644- warnIfConformanceUnavailablePreSwift6)) {
4646+ warnIfConformanceUnavailablePreSwift6,
4647+ preconcurrency)) {
46454648 maybeEmitAssociatedTypeNote ();
46464649 return true ;
46474650 }
0 commit comments