Skip to content

Commit ad7afe4

Browse files
committed
[Sema] @_spi decls don't require an availability attribute
1 parent 3bb4f11 commit ad7afe4

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

lib/Sema/TypeCheckAvailability.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2866,7 +2866,9 @@ static bool declNeedsExplicitAvailability(const Decl *decl) {
28662866
return false;
28672867
}
28682868

2869-
if (decl->getAttrs().hasAttribute<AlwaysEmitIntoClientAttr>())
2869+
// Skip functions emitted into clients or SPI.
2870+
if (decl->getAttrs().hasAttribute<AlwaysEmitIntoClientAttr>() ||
2871+
decl->isSPI())
28702872
return false;
28712873

28722874
// Warn on decls without an introduction version.

test/attr/require_explicit_availability.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,15 @@ public protocol PublicProtocol { }
7979

8080
@available(macOS 10.1, *)
8181
extension S : PublicProtocol { }
82+
83+
@_spi(SPIsAreOK)
84+
public func spiFunc() { }
85+
86+
@_spi(SPIsAreOK)
87+
public struct spiStruct {
88+
public func spiMethod() {}
89+
}
90+
91+
extension spiStruct {
92+
public func spiExtensionMethod() {}
93+
}

0 commit comments

Comments
 (0)