Why does swift use:
#if !swift(<=4.2)
and not
#if !(swift<=4.2)
(Matching the rest of the language)?
Why does swift use:
#if !swift(<=4.2)
and not
#if !(swift<=4.2)
(Matching the rest of the language)?
"swift" isn't a value here; it's the name of the "function" that takes an expected version and compares to it. You can argue we should have spelled it swift(atLeast: 4.2)
or swiftVersion(atLeast: 4.2)
instead of having magic syntax swift(>=4.2)
, and I probably would agree with you in retrospect, but you're still supposed to think of it like a function.
Next question: why is it a function at all? Because so far we've been saving plain names for "flags provided on the command line with -D". It simplifies the compiler implementation to not have different "types" of identifiers that can appear in #if
expressions. (We may end up there eventually, but for now it seems to be working okay.)
EDIT: …and also this is a version, not a floating-point number, so we need to handle things like swift(>=4.2.1)
.