SE-0290: Unavailability Condition

Before we close the review, I think the conclusion is that we need to amend the proposal to contain that:

  • #unavailable(*) should return false, because a "future version/platform" will always be unavailable. It also better matches how the hypothetical !#available(*) would behave. Corrected: #unavailable(*) should return false, because if you're able to compile for a platform, then "all current and future versions" will always contain a version that is available. It also matches how the hypothetical !#available(*) would behave.
  • Given the above, multiple unavailabilities in the same statement should throw a warning, as two unavailabilities for different platforms will always cancel each other.
  • !#available can be diagnosed with a fix-it that converts it to #unavailable.

It's possible also to drop the asterisk as suggested, but I personally think the semantics of * already match the expected behavior.

1 Like