Files
swift-mirror/test/attr/attr_availability_custom_domains.swift
Allan Shortlidge f5bae411ca AST: Diagnose unrecognized platforms as errors with CustomAvailability enabled.
When the CustomAvailability experimental feature is enabled, make it an error
to specify an unrecognized availability domain name. Also, add these
diagnostics to a diagnostic group so that developers can control their behavior
when they are warnings.

Resolves rdar://152741624.
2025-06-06 22:44:12 -07:00

62 lines
2.9 KiB
Swift

// RUN: %target-typecheck-verify-swift \
// RUN: -enable-experimental-feature CustomAvailability \
// RUN: -define-enabled-availability-domain EnabledDomain \
// RUN: -define-enabled-availability-domain RedefinedDomain \
// RUN: -define-disabled-availability-domain DisabledDomain \
// RUN: -define-dynamic-availability-domain DynamicDomain \
// RUN: -define-disabled-availability-domain RedefinedDomain
// REQUIRES: swift_feature_CustomAvailability
// FIXME: [availability] Test custom domains in availability macros
func alwaysAvailable() { }
@available(EnabledDomain)
func availableInEnabledDomain() { }
@available(EnabledDomain, *) // expected-error {{expected 'available' option such as 'unavailable', 'introduced', 'deprecated', 'obsoleted', 'message', or 'renamed'}}
// expected-error@-1 {{expected declaration}}
func availableInEnabledDomainWithWildcard() { }
@available(EnabledDomain, introduced: 1.0) // expected-error {{unexpected version number for EnabledDomain}}
func introducedInEnabledDomain() { }
@available(EnabledDomain 1.0) // expected-error {{unexpected version number for EnabledDomain}}
func introducedInEnabledDomainShort() { }
@available(EnabledDomain 1.0, *) // expected-error {{unexpected version number for EnabledDomain}}
func introducedInEnabledDomainShortWithWildcard() { }
@available(macOS 10.10, EnabledDomain, *) // expected-error {{EnabledDomain availability must be specified alone}}
func introducedInMacOSAndAvailableInEnabledDomain() { }
@available(EnabledDomain, macOS 10.10, *) // expected-error {{expected 'available' option such as 'unavailable', 'introduced', 'deprecated', 'obsoleted', 'message', or 'renamed'}}
// expected-error@-1 {{expected declaration}}
func availableInEnabledDomainAndIntroducedInMacOS() { }
@available(EnabledDomain, DisabledDomain) // expected-error {{expected 'available' option such as 'unavailable', 'introduced', 'deprecated', 'obsoleted', 'message', or 'renamed'}}
func availableInMultipleCustomDomainsShort() { }
@available(EnabledDomain, DisabledDomain, *) // expected-error {{expected 'available' option such as 'unavailable', 'introduced', 'deprecated', 'obsoleted', 'message', or 'renamed'}}
// expected-error@-1 {{expected declaration}}
func availableInMultipleCustomDomainsShortWithWildcard() { }
@available(EnabledDomain, deprecated: 1.0) // expected-error {{unexpected version number for EnabledDomain}}
func deprecatedInEnabledDomain() { }
@available(EnabledDomain, obsoleted: 1.0) // expected-error {{unexpected version number for EnabledDomain}}
func obsoletedInEnabledDomain() { }
@available(DisabledDomain, unavailable)
func unavailableInDisabledDomain() { }
@available(RedefinedDomain, deprecated, message: "Use something else")
func deprecatedInRedefinedDomain() { }
@available(DynamicDomain)
func availableInDynamicDomain() { }
@available(UnknownDomain) // expected-error {{unrecognized platform name 'UnknownDomain'}}
func availableInUnknownDomain() { }