@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