Avatar
omochimetaru 9/24/2021 6:03 PM
ふむふむ。
6:03 PM
そもそも overridenonoverride も付けない場合で、サブプロトコルで同じ名前をrequirementsに書くことができて、その場合テーブルエントリが別にできるわけですね。
6:04 PM
で、このPRでは、
6:05 PM
6:05 PM
overrideを付けてるところと、nonoverrideを付けてるところがあるから、
6:06 PM
そのままこれまでどおり別エントリであることを明示的にしたnonoverrideの方は別に何もかわってなくって、 このパッチではoverrideをつけたところに関して、テーブルエントリがなくなるからバイナリサイズが減ったよということか
6:06 PM
そうすると、なんでそもそも、同じ名前のテーブルエントリを作ってたんだ??
6:08 PM
This makes restating protocol requirements in inheriting protocols ABI-neutral, so we can restate protocol requirements to influence associated type inference without baking those decisions into the ABI.
6:14 PM
@swift-5.5.3 protocol Base { func foo() } protocol Derived: Base { func foo() } struct Impl: Derived { @_implements(Base, foo()) func foo1() { print("foo1") } @_implements(Derived, foo()) func foo2() { print("foo2") } } func callBase<T: Base>(_ x: T) { x.foo() } func callDerived<T: Derived>(_ x: T) { x.foo() } callBase(Impl()) callDerived(Impl())