Avatar
@rethrows が付与されたプロトコルを @rethrows プロトコルと呼ぶことにする。また、 P@rethrows プロトコルのとき 、 func foo<T: P>(_ x: T) rethrowsthrows になる場合、 T が rethrowing であると呼ぶことにする。 このとき、 T が non-rethrowing である条件は、下記の二つが同時に満たされる場合に限る。
  • P のメソッドの内、 throws が付与されたものをすべて non-throws なメソッドとして実装する
  • Passociatedtype の内、 @rethrows プロトコルを制約として持つものをすべて non-rethrowing な型で実装する