-
Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathConformances.swiftinterface
34 lines (30 loc) · 1.37 KB
/
Conformances.swiftinterface
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-module -enable-resilience -o %t/Conformances.swiftmodule %s
// RUN: %target-swift-frontend -emit-sil -I %t %S/Inputs/ConformancesUser.swift -O | %FileCheck %s
public protocol MyProto {
init()
func method()
var prop: Int { get set }
subscript(index: Int) -> Int { get set }
}
@_fixed_layout // allow conformance devirtualization
public struct FullStructImpl: MyProto {
public init()
public func method()
public var prop: Int { get set }
public subscript(index: Int) -> Int { get set }
}
// CHECK-LABEL: sil @$S16ConformancesUser8testFullSiyF
// CHECK: function_ref @$S12Conformances14FullStructImplVACycfC
// CHECK: function_ref @$S12Conformances14FullStructImplV6methodyyF
// CHECK: function_ref @$S12Conformances14FullStructImplV4propSivs
// CHECK: function_ref @$S12Conformances14FullStructImplVyS2icig
// CHECK: end sil function '$S16ConformancesUser8testFullSiyF'
@_fixed_layout // allow conformance devirtualization
public struct OpaqueStructImpl: MyProto {}
// CHECK-LABEL: sil @$S16ConformancesUser10testOpaqueSiyF
// CHECK: function_ref @$S12Conformances7MyProtoPxycfC
// CHECK: function_ref @$S12Conformances7MyProtoP6methodyyF
// CHECK: function_ref @$S12Conformances7MyProtoP4propSivs
// CHECK: function_ref @$S12Conformances7MyProtoPyS2icig
// CHECK: end sil function '$S16ConformancesUser10testOpaqueSiyF'