Avatar
AAAのFoo conformanceが↑のテーブルで、fooメソッドとして _TTWC1a3AAAS_3FooS_FS1_3foofT_SS が入ってて それが内部で、 _TFe1aRxS_3FooxS_11FooStandardrS0_3foofT_SS を呼ぶようになってる
11:18 AM
_TFe1aRxS_3FooxS_11FooStandardrS0_3foofT_SS は、 A が // Foo<A where ...>.foo() -> String のwhereを満たしてる時ようのメソッド
11:19 AM
sil_vtable AAA { #AAA.deinit!deallocator: _TFC1a3AAAD // AAA.__deallocating_deinit #AAA.init!initializer.1: _TFC1a3AAAcfT_S0_ // AAA.init() -> AAA } sil_vtable BBB { #AAA.init!initializer.1: _TFC1a3BBBcfT_S0_ // BBB.init() -> BBB #BBB.deinit!deallocator: _TFC1a3BBBD // BBB.__deallocating_deinit }
11:19 AM
AとB自体はメソッドとしては保持してなかった。
11:19 AM
あくまでAがFooとしてアップキャストされるとき用のwitness-tableにfooの実装として hello の実装が入ってる
11:20 AM
FooFatalの方のwitnessは無さそう
11:20 AM
BがFooになるときは、親のAと同じ挙動でFooのExistanceになるっぽい
😳 1
11:21 AM
(FooFatalのprivateは外した状態で試した。わかりやすいようにAAAとBBBにリネームした。