I'd like to explore the alternative of using until:
as the argument label a bit more (thanks @benrimmington for the suggestion). I think that @backDeployed(until: iOS 13)
reads well at a glance and it works reasonably well when expanding the attribute into a sentence:
The function is back deployed until (the minimum deployment target is at least) iOS 13
IMO the range exclusivity of until:
is clear and I also think it actually reads a bit more naturally than before:
as an argument label. Consider this expansion into a sentence with before:
as the label:
The function is back deployed (for all minimum deployment targets) before iOS 13
The sentence is understandable and I think grammatically correct, but to me it's a bit more awkward than the previous sentence using until:
. There's something more concise about the way that "until" represents that all earlier deployment targets that have the behavior.
Precedent-wise, I could not find examples of until:
used as an argument label in the standard library. It feels somewhat similar to while:
, though, which is common as an argument label for methods that take predicate closures and return sequences or accumulations. The only precedent for before:
as a label is index(before:)
which returns the specific index that comes before another index in a BidirectionalCollection
, which doesn't feel structurally analogous to what we're representing with the @backDeployed
attribute.