Avatar
omochimetaru 5/30/2022 5:09 AM
public protocol P {} public struct S: P {} public func makePair() -> (some P, some P) { (S(), S()) }
5:09 AM
// makePair() sil hidden @$s1i8makePairQr_QrtyF : $@convention(thin) @substituted <τ_0_0, τ_0_1> () -> (@out τ_0_0, @out τ_0_1) for <@_opaqueReturnTypeOf("$s1i8makePairQr_QrtyF", 0) __, @_opaqueReturnTypeOf("$s1i8makePairQr_QrtyF", 0) __> {
5:09 AM
$ swift demangle '$s1i8makePairQr_QrtyF' $s1i8makePairQr_QrtyF ---> i.makePair() -> (some, some)
5:11 AM
// .swiftinterface public func makePair() -> (some i.P, some i.P)
5:14 AM
外側(caller)から見ると、 some が2つ返り値にあるから、これに0番、1番って番号が付いていて、
5:16 AM
ちょいまち・・・
5:17 AM
callerは swift_getTypeByMangledNameInContext で問い合わせる