Avatar
普段見かけないのは同意だけど、親子付けプロトコル自体が珍しいし、さらにcond confにした時しか踏まないから、見かけないんだろう
12:21 AM
12:22 AM
S: ErrorS: Sendable も付いてきてるな・・・
12:23 AM
12:23 AM
Sendableってマーカープロトコルで、型システム的な扱いが特殊なんですよね
12:23 AM
それと関係して許されているのかなあ
12:24 AM
一般のプロトコルは型TのプロトコルPへのコンフォーマンスが実行時にグローバルに一つ登録されるけど
12:24 AM
Sendableに関しては実行時情報が存在しなくて、完全に静的な検査でしかない
12:25 AM
なので、普通のプロトコルと違って、 S が Sendable になる条件が複数あっても大丈夫・・・?
12:26 AM
12:26 AM
X: Sendable を2つ書いたら怒られた。
12:27 AM
12:27 AM
間接的に導入される Sendable conformance であっても、ちゃんと合計一つしか許されないようになっている。 (edited)
12:28 AM
うーん、Sendableに関しては、
12:29 AM
extension S: Error where X: Error {} って書くと自動的に extension S: Sendable where X: Error {} も生成されている(条件部分はコピー) ような挙動に見えますね。。 (edited)
12:30 AM
手で extension S: Sendable where X: Sendable {} を書けば、自然な定義にはなるから、困ることは無さそうだけど、ルールが違うのが気になるな
12:30 AM
既存の : Error がソース互換性を壊すから、仕方なく特別処理してるのか・・・? (edited)
12:32 AM
12:32 AM
↑自作のマーカープロトコルでも同じ挙動をする。Sendableだけじゃなさそう。