Files
swift-mirror/test/ModuleInterface/availability_custom_domains.swift
T
Allan Shortlidge bee3eb843b ModuleInterface: Handle custom availability domains for synthesized conformances.
When gathering availability attributes to print in a .swiftinterface for
synthesized conformances to inherited protocols, don't assume availabilty
attributes always have a platform kind.

Resolves rdar://170361240.
2026-02-28 17:56:41 -08:00

61 lines
2.0 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: %target-swift-emit-module-interface(%t/Test.swiftinterface) %s \
// RUN: -target %target-swift-5.1-abi-triple \
// RUN: -I %S/../Inputs/custom-modules/availability-domains \
// RUN: -enable-experimental-feature CustomAvailability \
// RUN: -module-name Test
// RUN: %target-swift-typecheck-module-from-interface(%t/Test.swiftinterface) \
// RUN: -I %S/../Inputs/custom-modules/availability-domains \
// RUN: -module-name Test
// RUN: %FileCheck %s < %t/Test.swiftinterface
// REQUIRES: swift_feature_CustomAvailability
import Oceans // re-exports Rivers
// CHECK-NOT: $CustomAvailability
// CHECK: @available(Colorado)
// CHECK-NEXT: public func availableInColorado()
@available(Colorado)
public func availableInColorado() { }
// CHECK: @available(Arctic, unavailable)
// CHECK-NEXT: @available(Pacific)
// CHECK-NEXT: public func unavailableInArcticButAvailableInPacific()
@available(Arctic, unavailable)
@available(Pacific)
public func unavailableInArcticButAvailableInPacific() { }
// CHECK: @available(Colorado)
// CHECK-NEXT: @available(Pacific)
// CHECK-NEXT: @_Concurrency::MainActor public class AvailableInColoradoAndPacificMainActorClass
@available(Colorado)
@available(Pacific)
@MainActor
public class AvailableInColoradoAndPacificMainActorClass { }
// CHECK: @available(Colorado)
// CHECK-NEXT: @available(Pacific)
// CHECK-NEXT: public enum AvailableInColoradoAndPacificEquatableEnum
@available(Colorado)
@available(Pacific)
public enum AvailableInColoradoAndPacificEquatableEnum {
case a
}
// CHECK: @available(Colorado)
// CHECK-NEXT: @available(Pacific)
// CHECK-NEXT: extension Test::AvailableInColoradoAndPacificMainActorClass : Swift::Sendable {}
// CHECK: @available(Colorado)
// CHECK-NEXT: @available(Pacific)
// CHECK-NEXT: extension Test::AvailableInColoradoAndPacificEquatableEnum : Swift::Equatable {}
// CHECK: @available(Colorado)
// CHECK-NEXT: @available(Pacific)
// CHECK-NEXT: extension Test::AvailableInColoradoAndPacificEquatableEnum : Swift::Hashable {}