diff --git a/lib/Sema/TypeCheckAvailability.cpp b/lib/Sema/TypeCheckAvailability.cpp index 8f0786a3e7ef1..df7dcb9b09509 100644 --- a/lib/Sema/TypeCheckAvailability.cpp +++ b/lib/Sema/TypeCheckAvailability.cpp @@ -180,7 +180,8 @@ static void forEachOuterDecl(DeclContext *DC, Fn fn) { static void computeExportContextBits(ASTContext &Ctx, Decl *D, bool *spi, bool *implicit, bool *deprecated, Optional *unavailablePlatformKind) { - if (D->isSPI()) + if (D->isSPI() || + D->isAvailableAsSPI()) *spi = true; // Defer bodies are desugared to an implicit closure expression. We need to diff --git a/test/Sema/spi-available-context.swift b/test/Sema/spi-available-context.swift new file mode 100644 index 0000000000000..85750d35b0085 --- /dev/null +++ b/test/Sema/spi-available-context.swift @@ -0,0 +1,11 @@ +// REQUIRES: VENDOR=apple +// REQUIRES: OS=macosx +// RUN: %target-typecheck-verify-swift -target %target-cpu-apple-macosx11.9 -library-level api + +@_spi_available(macOS 10.4, *) +public protocol Foo { } + +@_spi_available(macOS 10.4, *) +public class Bar { + public var foo: Foo? +}