@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
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to