I am assuming Never is the subtype of all types, because any function
regardless of it's return type, including Void, can return Never.

On Fri, 13 Jan 2017 at 6:32 pm, Pierre Monod-Broca <
pierremonodbr...@gmail.com> wrote:

> @Howard
> I was thinking the same about the constraint.
>
> Does that mean that Never should be a subtype of Error (maybe it is
> already) ? Else you couldn't say throws(Never) or FSTore<Never>
>
> @Howard
> I'm not sure about <>, it should stay reserved for generics, IMHO.
>
> Pierre
>
> Le 13 janv. 2017 à 01:11, Howard Lovatt via swift-users <
> swift-users@swift.org> a écrit :
>
> @Anton, Yes that would work and we would get typed throws, which I like.
> As an aside, I think E would have to be constrained to be an Error, `<E:
> Error>`, and maybe `throws<E>` reads better because you are used to types
> in angle brackets.
>
>   -- Howard.
>
>
>
> On 13 January 2017 at 08:32, Anton Zhilin <antonyzhi...@gmail.com> wrote:
>
> The best way to deal with such situations should be typed throws. Then
> rethrows should be removed and replaced with generics in throws clause. E
> == Never ⇔ function does not throw.
>
>
> struct FStore<E> {
>
>     let f: () throws(E) -> Void
>
>     init(_ f: @escaping () throws(E) -> Void) { self.f = f }
>
>     func call() throws(E) { try f() }
>
> }
>
>
>
> let store = FStore<Never>({ print("Hello") })
>
> store.call()
>
> [Phase2]
>
>
> ​
>
>
>
>
>
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
> --
-- Howard.
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to