@@ -25,6 +25,29 @@ struct PassThroughWrapper<T> {
25
25
// CHECK: [[BB]]:
26
26
// CHECK-NEXT: increment_profiler_counter 1
27
27
28
+ // CHECK-LABEL: sil hidden @$s33coverage_property_wrapper_backing1UV1xSivpfP : $@convention(thin) (Int) -> Wrapper<Int>
29
+ // CHECK: function_ref @$sSb6randomSbyFZ : $@convention(method) (@thin Bool.Type) -> Bool
30
+ // CHECK: cond_br {{%[0-9]+}}, [[BB_TRUE:bb[0-9]+]], [[BB_FALSE:bb[0-9]+]]
31
+ //
32
+ // CHECK: [[BB_FALSE]]:
33
+ // CHECK: integer_literal {{.*}}, 2
34
+ //
35
+ // CHECK: [[BB_TRUE]]:
36
+ // CHECK: increment_profiler_counter 1
37
+ // CHECK: integer_literal {{.*}}, 1
38
+
39
+ // CHECK-LABEL: sil hidden [transparent] @$s33coverage_property_wrapper_backing1UV2_{{.*}}7WrapperVySiGvpfi : $@convention(thin) () -> Int
40
+ // CHECK: increment_profiler_counter 0
41
+ // CHECK: function_ref @$sSb6randomSbyFZ : $@convention(method) (@thin Bool.Type) -> Bool
42
+ // CHECK: cond_br {{%[0-9]+}}, [[BB_TRUE:bb[0-9]+]], [[BB_FALSE:bb[0-9]+]]
43
+
44
+ // CHECK: [[BB_FALSE]]:
45
+ // CHECK: integer_literal {{.*}}, 4
46
+ //
47
+ // CHECK: [[BB_TRUE]]:
48
+ // CHECK: increment_profiler_counter 1
49
+ // CHECK: integer_literal {{.*}}, 3
50
+
28
51
struct S {
29
52
// CHECK-LABEL: sil_coverage_map {{.*}} "$s33coverage_property_wrapper_backing1SV1iSivpfP" {{.*}} // property wrapper backing initializer of coverage_property_wrapper_backing.S.i
30
53
// CHECK-NEXT: [[@LINE+4]]:4 -> [[@LINE+4]]:30 : 0
@@ -55,3 +78,38 @@ struct T {
55
78
@Wrapper ( . random( ) ? 1 : 2 )
56
79
var k = 3
57
80
}
81
+
82
+ // rdar://118939162 - Make sure we don't include the initialization expression
83
+ // in the backing initializer.
84
+ struct U {
85
+ // CHECK-LABEL: sil_coverage_map {{.*}} // property wrapper backing initializer of coverage_property_wrapper_backing.U.x
86
+ // CHECK-NEXT: [[@LINE+4]]:4 -> [[@LINE+4]]:30 : 0
87
+ // CHECK-NEXT: [[@LINE+3]]:24 -> [[@LINE+3]]:25 : 1
88
+ // CHECK-NEXT: [[@LINE+2]]:28 -> [[@LINE+2]]:29 : (0 - 1)
89
+ // CHECK-NEXT: }
90
+ @Wrapper ( . random( ) ? 1 : 2 )
91
+ var x = if . random( ) { 3 } else { 4 }
92
+ // CHECK-LABEL: sil_coverage_map {{.*}} // variable initialization expression of coverage_property_wrapper_backing.U.(_x
93
+ // CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:40 : 0
94
+ // CHECK-NEXT: [[@LINE-3]]:14 -> [[@LINE-3]]:23 : 0
95
+ // CHECK-NEXT: [[@LINE-4]]:24 -> [[@LINE-4]]:29 : 1
96
+ // CHECK-NEXT: [[@LINE-5]]:29 -> [[@LINE-5]]:40 : 0
97
+ // CHECK-NEXT: [[@LINE-6]]:35 -> [[@LINE-6]]:40 : (0 - 1)
98
+ // CHECK-NEXT: [[@LINE-7]]:40 -> [[@LINE-7]]:40 : 0
99
+ // CHECK-NEXT: }
100
+ }
101
+
102
+ struct V {
103
+ // CHECK-LABEL: sil_coverage_map {{.*}} // property wrapper backing initializer of coverage_property_wrapper_backing.V.x
104
+ // CHECK-NEXT: [[@LINE+2]]:4 -> [[@LINE+2]]:14 : 0
105
+ // CHECK-NEXT: }
106
+ @Wrapper ( 0 )
107
+ var x = switch Bool . random ( ) { case true : 0 case false : 0 }
108
+ // CHECK-LABEL: sil_coverage_map {{.*}} // variable initialization expression of coverage_property_wrapper_backing.V.(_x
109
+ // CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:62 : 0
110
+ // CHECK-NEXT: [[@LINE-3]]:18 -> [[@LINE-3]]:31 : 0
111
+ // CHECK-NEXT: [[@LINE-4]]:34 -> [[@LINE-4]]:46 : 1
112
+ // CHECK-NEXT: [[@LINE-5]]:47 -> [[@LINE-5]]:60 : 2
113
+ // CHECK-NEXT: [[@LINE-6]]:62 -> [[@LINE-6]]:62 : (1 + 2)
114
+ // CHECK-NEXT: }
115
+ }
0 commit comments