[swift-evolution] Type-annotated throws

Félix Cloutier felixcca at yahoo.ca
Fri Aug 26 10:39:05 CDT 2016

Hi all,

Currently, a function that throws is assumed to throw anything. There was a proposal draft last December to restrict that. The general idea was that you'd write, for instance:

> enum Foo: ErrorProtocol {
>     case bar
>     case baz
> }
> func frob() throws Foo {
>     throw Foo.bar // throw .bar?
> }

If you `catch Foo` (or every case of Foo), now that the compiler can verify that your catch is exhaustive, you no longer have to have a catch-all block at the end of the sequence.

This impacts the metadata format and has implications on resilience, which leads me to believe that the discussion could qualify for the phase 1 of Swift 4. If this is the case, I'd be interested in pulling out the old discussions and seeing where we left that at.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160826/1bf502a3/attachment.html>

More information about the swift-evolution mailing list