Ok here is my last ditch proposal, I will preface this with, "Yes I know these are not actually boolean expressions".
Ok here is the proposal:
#unavailable(iOS 12 && *)
One should read this logically as "If iOS 12 or later is unavailable && if any other platform is unavailable"
A: "If iOS 12 or later is unavailable"
B: "If any other platform is unavailable"
Let's go through a few examples:
Example 1: I am running iOS 10
A: iOS 12 or later is unavailable, true
B: I am on iOS, so any other platforms are unavailable, true
A && B = true. Hooray that is the correct result.
Example 2: I am running iOS 13
A: iOS 12 or later is unavailable, false
B: I am on iOS, so any other platforms are unavailable, true
A && B = false. Hooray that is the correct result.
Example 3: I am running macOS 11
A: iOS 12 or later is unavailable, true
B: I am on macOS, so any other platforms are unavailable, false (because macOS is one of those other platforms)
A && B = false. Hooray that is the correct result.
So, to recap, I am proposing that we replace ", *" with "&& *". This would mean that the fix-it would put in "&& *". This also means that (even though this is not actually a boolean expression), programmers can still read/interpret it as such, and as long as they evaluate the conditions correctly, they will arrive at the correct result.
We get to keep the preferred spelling of "unavailable", we get to keep pretending this is a boolean expression, everyone is happy right?