> On Mar 26, 2016, at 2:00 PM, Brent Royal-Gordon via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> If that's all you want, maybe we can have an attribute which says "prefer 
> this version over that one":
> 
>       @preferred(since: 3.0, over: socket(_: Int32, _: Int32, _: Int32) -> 
> Int32)
>       func socket(domain:SocketDomain, type:SocketType, 
> protocol:SocketProtocol) -> socket_t? {
>               …
>       }
> 
> This would effectively apply an `@available(deprecated: 3.0, renamed: 
> socket(domain: SocketDomain, type: SocketType, protocol: SocketProtocol) -> 
> socket_t?)` to the other API.

This capability sounds useful in other situations where some outside API is 
undesirable in your code. For example in the Swift standard library itself we 
have our own "halt with an error" functions such as fatalError(). We almost 
always want to use those instead of something like abort() or exit(). It would 
be useful to mark fatalError() as the preferred replacement for abort() and 
exit(). Then the compiler would help enforce our policy.

(In C code we could enforce such non-usage with ugly things like `#define 
abort() dont_call_abort()`. That ugly solution is not available in Swift.)


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler


_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to