Files
swift-mirror/test/SIL/Parser/polymorphic_function.sil
2022-08-18 01:15:12 -04:00

25 lines
1.0 KiB
Plaintext

// RUN: %target-sil-opt %s | %FileCheck %s
import Swift
public protocol mmOutputStreamType {
/// Append the given `string` to this stream.
mutating func write(string: String)
}
public protocol mmStreamable {
func writeTo<Target : mmOutputStreamType>(target: inout Target)
}
// CHECK-LABEL: sil @test : $@convention(thin) () -> () {
sil @test : $() -> () {
bb0:
%281 = alloc_stack $mmStreamable
%282 = open_existential_addr mutable_access %281 : $*mmStreamable to $*@opened("01234567-89ab-cdef-0123-000000000000", mmStreamable) Self
// CHECK: witness_method $@opened({{.*}}, any mmStreamable) Self, #mmStreamable.writeTo
%293 = witness_method $@opened("01234567-89ab-cdef-0123-000000000000", mmStreamable) Self, #mmStreamable.writeTo, %282 : $*@opened("01234567-89ab-cdef-0123-000000000000", mmStreamable) Self : $@convention(witness_method: mmStreamable) @callee_owned <T_0_0, T_1_0 where T_0_0 : mmStreamable, T_1_0 : mmOutputStreamType> (@inout T_1_0, @inout T_0_0) -> ()
dealloc_stack %281 : $*mmStreamable
%1 = tuple ()
return %1 : $()
}