@usableFromInline internal struct S { @usableFromInline internal var a: Int @inlinable internal init() { self.a = 0 } }
a.swift:8:16: error: 'self' used before 'self.init' call or assignment to 'self' self.a = 0 ^ a.swift:9:5: error: 'self.init' isn't called on all paths before returning from initializer } ^
struct S
を @frozen
にするとビルドできるようになるんだけどinit
が @inlinable
だと、レイアウト変化後に、埋め込まれた古い init
が正しく動作しないからおかしい」 というのが根底の話で