SE-0290: Unavailability Condition

Returned for revision

Based on this review thread's excellent discussion, the core team has decided to return this review for revision. The core team believes this is a merited addition to the language but that specific details of the proposal (as pointed out in the review thread) need to be addressed.

The core team feels that the spelling of #unavailable, as opposed to !#available, was the preferred path. As pointed out in the review discussion, #available is not a general expression. Further, the core team observed that people are likely to say "unavailable" instead of "not available” in conversation — further preferring the #unavailable spelling. The review thread also brought up a great insight to have a compiler fix-it for users reaching for !#available as the syntax — that would be a great refinement (now or in the future) to the implementation.

The proposal needs revision to address the semantics of the #unavailable annotation for the platforms that are not specified. The wildcard * for #available has precise semantics, where * indicates the minimum deployment target for the unspecified platforms. The proposal needs to define the semantics for #unavailable for the platforms not specified and clearly explain how those semantics compose with the use of #available and other #unavailable annotations that may decorate a declaration.

Once the proposal is revised with those changes, the core team will run a second review of this proposal.

Thank you to everyone who participated in this review! The signal from the review was invaluable in gleaming these essential details to consider for this language enhancement.

13 Likes