Before we close the review, I think the conclusion is that we need to amend the proposal to contain that:
-
Corrected:#unavailable(*)
should return false, because a "future version/platform" will always be unavailable. It also better matches how the hypothetical!#available(*)
would behave.#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.