diff --git a/lib/Sema/TypeCheckDeclPrimary.cpp b/lib/Sema/TypeCheckDeclPrimary.cpp index 6837b674ec583..3905ba039b53d 100644 --- a/lib/Sema/TypeCheckDeclPrimary.cpp +++ b/lib/Sema/TypeCheckDeclPrimary.cpp @@ -1689,8 +1689,10 @@ static void diagnoseRetroactiveConformances( extTypeModule->isSameModuleLookingThroughOverlays(module); auto incorrectTypeName = typeIsSameModule ? extendedNominalDecl->getName() : proto->getName(); - diags.diagnose(loc, diag::retroactive_attr_does_not_apply, - incorrectTypeName) + diags + .diagnose(loc, diag::retroactive_attr_does_not_apply, + incorrectTypeName) + .warnUntilSwiftVersion(6) .fixItRemove(SourceRange(loc, loc.getAdvancedLoc(1))); return TypeWalker::Action::Stop; } diff --git a/test/Sema/extension_retroactive_conformances.swift b/test/Sema/extension_retroactive_conformances.swift index 04f4fe7b415e7..8a05c57413ddf 100644 --- a/test/Sema/extension_retroactive_conformances.swift +++ b/test/Sema/extension_retroactive_conformances.swift @@ -65,9 +65,9 @@ extension Sample1: ClientProtocol {} struct Sample7: @retroactive SampleProtocol1 {} // expected-error {{'retroactive' attribute only applies in inheritance clauses in extensions}} -extension Sample7: @retroactive ClientProtocol {} // expected-error {{'retroactive' attribute does not apply; 'Sample7' is declared in this module}} +extension Sample7: @retroactive ClientProtocol {} // expected-warning {{'retroactive' attribute does not apply; 'Sample7' is declared in this module}} -extension Int: @retroactive ClientProtocol {} // expected-error {{'retroactive' attribute does not apply; 'ClientProtocol' is declared in this module}} +extension Int: @retroactive ClientProtocol {} // expected-warning {{'retroactive' attribute does not apply; 'ClientProtocol' is declared in this module}} func f(_ x: @retroactive Int) {} // expected-error {{'retroactive' attribute only applies in inheritance clauses in extensions}} diff --git a/test/Sema/extension_retroactive_conformances_swift6.swift b/test/Sema/extension_retroactive_conformances_swift6.swift new file mode 100644 index 0000000000000..cd02e73c507de --- /dev/null +++ b/test/Sema/extension_retroactive_conformances_swift6.swift @@ -0,0 +1,10 @@ +// RUN: %target-typecheck-verify-swift -swift-version 6 + +// REQUIRES: asserts + +struct LocalStruct {} +protocol LocalProtocol {} + +extension LocalStruct: @retroactive LocalProtocol {} // expected-error {{'retroactive' attribute does not apply; 'LocalStruct' is declared in this module}} + +extension Int: @retroactive LocalProtocol {} // expected-error {{'retroactive' attribute does not apply; 'LocalProtocol' is declared in this module}}