Skip to content

Commit 3066570

Browse files
authored
Merge pull request #80613 from tshortli/require-explicit-availability-conformances
Sema: Fix another `-require-explicit-availability` regression
2 parents b33be25 + 6fd1cfc commit 3066570

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

lib/Sema/TypeCheckAvailability.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3511,6 +3511,11 @@ void swift::checkExplicitAvailability(Decl *decl) {
35113511
!isa<ExtensionDecl>(decl->getDeclContext())) return;
35123512

35133513
if (auto extension = dyn_cast<ExtensionDecl>(decl)) {
3514+
// Skip extensions that extend non-public types.
3515+
auto extended = extension->getExtendedNominal();
3516+
if (!extended || !extended->getFormalAccessScope().isPublic())
3517+
return;
3518+
35143519
// Skip extensions when none of their members need availability.
35153520
auto members = extension->getMembers();
35163521
auto hasMembers = std::any_of(members.begin(), members.end(),

test/attr/require_explicit_availability_macos.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ private class PrivateClass { }
144144

145145
extension PrivateClass { }
146146

147+
extension PrivateClass : P { }
148+
147149
@available(macOS 10.1, *)
148150
public protocol PublicProtocol { }
149151

@@ -162,6 +164,8 @@ extension spiStruct {
162164
public func spiExtensionMethod() {}
163165
}
164166

167+
extension spiStruct : P { }
168+
165169
public var publicVar = S() // expected-warning {{public declarations should have an availability attribute with an introduction version}} {{1-1=@available(macOS 10.10, *)\n}}
166170

167171
@available(macOS 10.10, *)

0 commit comments

Comments
 (0)