Files
swift-mirror/test/SILGen/unavailable_decl_custom_domain.swift
Allan Shortlidge 5e0eb09fc0 AST: Skip codegen for decls that are unavailable in custom domains.
Regardless of the value specified for `-unavailable-decl-optimization`, decls
that are unavailable in custom availability domains should be treated as always
unreachable at runtime.

Part of rdar://138441307.
2025-03-17 22:46:07 -07:00

84 lines
3.2 KiB
Swift

// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
// RUN: -enable-experimental-feature CustomAvailability \
// RUN: -define-enabled-availability-domain EnabledDomain \
// RUN: -define-disabled-availability-domain DisabledDomain \
// RUN: -define-dynamic-availability-domain DynamicDomain \
// RUN: | %FileCheck %s --check-prefixes=CHECK
// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
// RUN: -enable-experimental-feature CustomAvailability \
// RUN: -define-enabled-availability-domain EnabledDomain \
// RUN: -define-disabled-availability-domain DisabledDomain \
// RUN: -define-dynamic-availability-domain DynamicDomain \
// RUN: -unavailable-decl-optimization=stub \
// RUN: | %FileCheck %s --check-prefixes=CHECK
// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
// RUN: -enable-experimental-feature CustomAvailability \
// RUN: -define-enabled-availability-domain EnabledDomain \
// RUN: -define-disabled-availability-domain DisabledDomain \
// RUN: -define-dynamic-availability-domain DynamicDomain \
// RUN: -unavailable-decl-optimization=complete \
// RUN: | %FileCheck %s --check-prefixes=CHECK
// REQUIRES: swift_feature_CustomAvailability
// CHECK: s4Test24availableInEnabledDomainyyF
@available(EnabledDomain)
public func availableInEnabledDomain() { }
// CHECK-NOT: s4Test26unavailableInEnabledDomainyyF
@available(EnabledDomain, unavailable)
public func unavailableInEnabledDomain() { }
// CHECK-NOT: s4Test25availableInDisabledDomainyyF
@available(DisabledDomain)
public func availableInDisabledDomain() { }
// CHECK: s4Test27unavailableInDisabledDomainyyF
@available(DisabledDomain, unavailable)
public func unavailableInDisabledDomain() { }
// CHECK: s4Test24availableInDynamicDomainyyF
@available(DynamicDomain)
public func availableInDynamicDomain() { }
// CHECK: s4Test26unavailableInDynamicDomainyyF
@available(DynamicDomain, unavailable)
public func unavailableInDynamicDomain() { }
// CHECK: s4Test25deprecatedInEnabledDomainyyF
@available(EnabledDomain, deprecated)
public func deprecatedInEnabledDomain() { }
// FIXME: [availability] This decl should be skipped.
// CHECK: s4Test26deprecatedInDisabledDomainyyF
@available(DisabledDomain, deprecated)
public func deprecatedInDisabledDomain() { }
// CHECK: s4Test25deprecatedInDynamicDomainyyF
@available(DynamicDomain, deprecated)
public func deprecatedInDynamicDomain() { }
// CHECK: s4Test22renamedInEnabledDomainyyF
@available(EnabledDomain, renamed: "availableInEnabledDomain")
public func renamedInEnabledDomain() { }
// CHECK-NOT: s4Test23renamedInDisabledDomainyyF
@available(DisabledDomain, renamed: "availableInDisabledDomain")
public func renamedInDisabledDomain() { }
// CHECK: s4Test22renamedInDynamicDomainyyF
@available(DynamicDomain, renamed: "availableInDynamicDomain")
public func renamedInDynamicDomain() { }
// CHECK-NOT: s4Test35availableInEnabledAndDisabledDomainyyF
@available(EnabledDomain)
@available(DisabledDomain)
public func availableInEnabledAndDisabledDomain() { }
// CHECK-NOT: s4Test35availableInDisabledAndEnabledDomainyyF
@available(DisabledDomain)
@available(EnabledDomain)
public func availableInDisabledAndEnabledDomain() { }