Skip to content

Commit b5db452

Browse files
authored
Merge pull request #71498 from tshortli/downgrade-retroactive-does-not-apply-to-warning
Sema: Make "@retroactive attribute does not apply" a warning
2 parents 0ab7f56 + a0b4d6d commit b5db452

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

lib/Sema/TypeCheckDeclPrimary.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,8 +1689,10 @@ static void diagnoseRetroactiveConformances(
16891689
extTypeModule->isSameModuleLookingThroughOverlays(module);
16901690
auto incorrectTypeName = typeIsSameModule ?
16911691
extendedNominalDecl->getName() : proto->getName();
1692-
diags.diagnose(loc, diag::retroactive_attr_does_not_apply,
1693-
incorrectTypeName)
1692+
diags
1693+
.diagnose(loc, diag::retroactive_attr_does_not_apply,
1694+
incorrectTypeName)
1695+
.warnUntilSwiftVersion(6)
16941696
.fixItRemove(SourceRange(loc, loc.getAdvancedLoc(1)));
16951697
return TypeWalker::Action::Stop;
16961698
}

test/Sema/extension_retroactive_conformances.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ extension Sample1: ClientProtocol {}
6565

6666
struct Sample7: @retroactive SampleProtocol1 {} // expected-error {{'retroactive' attribute only applies in inheritance clauses in extensions}}
6767

68-
extension Sample7: @retroactive ClientProtocol {} // expected-error {{'retroactive' attribute does not apply; 'Sample7' is declared in this module}}
68+
extension Sample7: @retroactive ClientProtocol {} // expected-warning {{'retroactive' attribute does not apply; 'Sample7' is declared in this module}}
6969

70-
extension Int: @retroactive ClientProtocol {} // expected-error {{'retroactive' attribute does not apply; 'ClientProtocol' is declared in this module}}
70+
extension Int: @retroactive ClientProtocol {} // expected-warning {{'retroactive' attribute does not apply; 'ClientProtocol' is declared in this module}}
7171

7272
func f(_ x: @retroactive Int) {} // expected-error {{'retroactive' attribute only applies in inheritance clauses in extensions}}
7373

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// RUN: %target-typecheck-verify-swift -swift-version 6
2+
3+
// REQUIRES: asserts
4+
5+
struct LocalStruct {}
6+
protocol LocalProtocol {}
7+
8+
extension LocalStruct: @retroactive LocalProtocol {} // expected-error {{'retroactive' attribute does not apply; 'LocalStruct' is declared in this module}}
9+
10+
extension Int: @retroactive LocalProtocol {} // expected-error {{'retroactive' attribute does not apply; 'LocalProtocol' is declared in this module}}

0 commit comments

Comments
 (0)