When you file the bug, can you post the Jira number? The grammar in TSPL will also need to be changed to accept three version components.
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/swift/grammar/swift-version Thanks! — Alex > On Oct 23, 2016, at 9:25 PM, Chris Lattner via swift-evolution > <[email protected]> wrote: > >> >> On Oct 22, 2016, at 2:44 PM, Richard Wei via swift-evolution >> <[email protected] <mailto:[email protected]>> wrote: >> >> Hi, >> >> Foundation in 3.0-RELEASE didn't fully resolve the renaming in SE-0086, so >> we have `RegularExpression` on Linux and `NSRegularExpression` on macOS. The >> naming is now unified in Swift 3.0.1, but there doesn’t seem to be a >> possible way to resolve the code breaking change. Consider the example below: > > +1. Assuming there are no major objections, I don’t think this needs a full > evolution cycle. This seems like a bug fix to me. > > -Chris > > >> >> Currently the following code is only compatible with 3.0-RELEASE, because >> RegularExpression on Linux becomes NSRegularExpression in 3.0.1, while we >> cannot use `#if` to differentiate between 3.0 and 3.0.1. >> >> #if !os(macOS) >> let regex = try RegularExpression(pattern: pattern, options: [ >> .dotMatchesLineSeparators ]) >> #else >> let regex = try NSRegularExpression(pattern: pattern, options: [ >> .dotMatchesLineSeparators ]) >> #endif >> >> Proposed solution: >> >> If `#if swift(>=)` can take the third version component, we can make the >> code compatible with 3.0.1 by the following: >> >> #if os(macOS) || swift(>=3.0.1) >> let regex = try NSRegularExpression(pattern: pattern, options: [ >> .dotMatchesLineSeparators ]) >> #else >> let regex = try RegularExpression(pattern: pattern, options: [ >> .dotMatchesLineSeparators ]) >> #endif >> >> Additionally, we can consider supporting the == operator, so that checking >> only the version with inconsistent naming is sufficient: >> >> #if !os(macOS) && swift(==3.0.0) >> let regex = try RegularExpression(pattern: pattern, options: [ >> .dotMatchesLineSeparators ]) >> #else >> let regex = try NSRegularExpression(pattern: pattern, options: [ >> .dotMatchesLineSeparators ]) >> #endif >> >> Impact on existing code: >> >> `#if swift(>=X.X.X)` and `#if swift(==X.X.X)` are purely additive. >> >> -Richard >> >> _______________________________________________ >> swift-evolution mailing list >> [email protected] <mailto:[email protected]> >> https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > [email protected] <mailto:[email protected]> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
