@@ -248,7 +248,7 @@ func test6(
248
248
} // CHECK-NEXT: }
249
249
250
250
// CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors5test7s5Int32VyF"
251
- func test7( ) -> Int32 { // CHECK-NEXT: [[@LINE]]:23 -> [[@LINE+31 ]]:2 : 0
251
+ func test7( ) -> Int32 { // CHECK-NEXT: [[@LINE]]:23 -> [[@LINE+29 ]]:2 : 0
252
252
var x : Int32 = 0
253
253
254
254
do { // CHECK-NEXT: [[@LINE]]:6 -> [[@LINE+3]]:4 : 0
@@ -271,8 +271,6 @@ func test7() -> Int32 { // CHECK-NEXT: [[@LINE]]:23 -> [[@LINE+31]]:2 : 0
271
271
} catch _ { } // CHECK-NEXT: [[@LINE]]:13 -> [[@LINE]]:15 : 6
272
272
// CHECK-NEXT: [[@LINE-1]]:15 -> {{[0-9:]+}} : (((((1 + 2) + 4) + 6) - 3) - 5)
273
273
274
- // TODO: We ought to realize that everything after try! is unreachable
275
- // This is similar issue to rdar://100896177
276
274
try ! test6 {
277
275
( ) throws -> ( ) in
278
276
return
@@ -817,8 +815,8 @@ func test65() throws { // CHECK-NEXT: [[@LINE]]:22 -> [[@LINE+5]]:2 : 0
817
815
// CHECK-NEXT: [[@LINE-1]]:29 -> [[@LINE+1]]:2 : (0 - 2)
818
816
} // CHECK-NEXT: }
819
817
820
- struct TestInit {
821
- // CHECK-LABEL: sil_coverage_map {{.*}}// coverage_errors.TestInit .init() -> coverage_errors.TestInit
818
+ struct TestType1 {
819
+ // CHECK-LABEL: sil_coverage_map {{.*}}// coverage_errors.TestType1 .init() -> coverage_errors.TestType1
822
820
init ( ) { // CHECK-NEXT: [[@LINE]]:10 -> [[@LINE+5]]:4 : 0
823
821
do { // CHECK-NEXT: [[@LINE]]:8 -> [[@LINE+2]]:6 : 0
824
822
throw SomeErr . Err1
@@ -827,31 +825,105 @@ struct TestInit {
827
825
} // CHECK-NEXT: }
828
826
}
829
827
830
- struct TestProp {
828
+ @propertyWrapper
829
+ struct Wrapper < T> {
830
+ var wrappedValue : T
831
+
832
+ init ( wrappedValue: T ) {
833
+ self . wrappedValue = wrappedValue
834
+ }
835
+
836
+ init ( wrappedValue: T , x: T , y: T ? = nil ) {
837
+ self . wrappedValue = wrappedValue
838
+ }
839
+ }
840
+
841
+ struct TestType2 {
831
842
let a = try ? throwingFn ( )
832
- // CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors8TestPropV1aSiSgvpfi "
843
+ // CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors9TestType2V1aSiSgvpfi "
833
844
// CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:28 : 0
834
845
// CHECK-NEXT: }
835
846
836
847
let b = try ? ( throwingFn ( ) , 0 )
837
- // CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors8TestPropV1bSi_SitSgvpfi "
848
+ // CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors9TestType2V1bSi_SitSgvpfi "
838
849
// CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:33 : 0
839
850
// CHECK-NEXT: [[@LINE-3]]:29 -> [[@LINE-3]]:33 : (0 - 1)
840
851
// CHECK-NEXT: }
841
852
842
853
let c = try ? ( throwingFn ( ) , . random( ) ? 0 : 1 )
843
- // CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors8TestPropV1cSi_SitSgvpfi "
854
+ // CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors9TestType2V1cSi_SitSgvpfi "
844
855
// CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:49 : 0
845
856
// CHECK-NEXT: [[@LINE-3]]:29 -> [[@LINE-3]]:49 : (0 - 1)
846
857
// CHECK-NEXT: [[@LINE-4]]:43 -> [[@LINE-4]]:44 : 2
847
858
// CHECK-NEXT: [[@LINE-5]]:47 -> [[@LINE-5]]:48 : ((0 - 1) - 2)
848
859
// CHECK-NEXT: }
849
860
850
861
let d = ( try ? ( throwingFn ( ) , . random( ) ? 0 : 1 ) , 0 )
851
- // CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors8TestPropV1dSi_SitSg_Sitvpfi "
862
+ // CHECK-LABEL: sil_coverage_map {{.*}} "$s15coverage_errors9TestType2V1dSi_SitSg_Sitvpfi "
852
863
// CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:54 : 0
853
864
// CHECK-NEXT: [[@LINE-3]]:30 -> [[@LINE-3]]:50 : (0 - 1)
854
865
// CHECK-NEXT: [[@LINE-4]]:44 -> [[@LINE-4]]:45 : 2
855
866
// CHECK-NEXT: [[@LINE-5]]:48 -> [[@LINE-5]]:49 : ((0 - 1) - 2)
856
867
// CHECK-NEXT: }
857
868
}
869
+
870
+ // rdar://118939162 - Make sure we don't crash when generating coverage for 'try!' in a property wrapper init.
871
+ struct TestType3 {
872
+ // CHECK-LABEL: sil_coverage_map {{.*}} // property wrapper backing initializer of coverage_errors.TestType3.x
873
+ // CHECK-NEXT: [[@LINE+2]]:4 -> [[@LINE+2]]:13 : 0
874
+ // CHECK-NEXT: }
875
+ @Wrapper ( )
876
+ var x = try ! throwingFn ( )
877
+ // CHECK-LABEL: sil_coverage_map {{.*}} // variable initialization expression of coverage_errors.TestType3.(_x
878
+ // CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:28 : 0
879
+ // CHECK-NEXT: }
880
+ }
881
+
882
+ struct TestType4 {
883
+ // CHECK-LABEL: sil_coverage_map {{.*}} // property wrapper backing initializer of coverage_errors.TestType4.x
884
+ // CHECK-NEXT: [[@LINE+2]]:4 -> [[@LINE+2]]:13 : 0
885
+ // CHECK-NEXT: }
886
+ @Wrapper ( )
887
+ var x = try ! ( throwingFn ( ) , 0 )
888
+ // CHECK-LABEL: sil_coverage_map {{.*}} // variable initialization expression of coverage_errors.TestType4.(_x
889
+ // CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:33 : 0
890
+ // CHECK-NEXT: [[@LINE-3]]:29 -> [[@LINE-3]]:33 : (0 - 1)
891
+ // CHECK-NEXT: }
892
+ }
893
+
894
+ struct TestType5 {
895
+ // CHECK-LABEL: sil_coverage_map {{.*}} // property wrapper backing initializer of coverage_errors.TestType5.x
896
+ // CHECK-NEXT: [[@LINE+3]]:4 -> [[@LINE+3]]:33 : 0
897
+ // CHECK-NEXT: [[@LINE+2]]:32 -> [[@LINE+2]]:33 : (0 - 1)
898
+ // CHECK-NEXT: }
899
+ @Wrapper ( x: try ! throwingFn ( ) )
900
+ var x = 0
901
+ // CHECK-LABEL: sil_coverage_map {{.*}} // variable initialization expression of coverage_errors.TestType5.(_x
902
+ // CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:12 : 0
903
+ // CHECK-NEXT: }
904
+ }
905
+
906
+ struct TestType6 {
907
+ // CHECK-LABEL: sil_coverage_map {{.*}} // property wrapper backing initializer of coverage_errors.TestType6.x
908
+ // CHECK-NEXT: [[@LINE+3]]:4 -> [[@LINE+3]]:39 : 0
909
+ // CHECK-NEXT: [[@LINE+2]]:32 -> [[@LINE+2]]:39 : (0 - 1)
910
+ // CHECK-NEXT: }
911
+ @Wrapper ( x: try ! throwingFn ( ) , y: 0 )
912
+ var x = 0
913
+ // CHECK-LABEL: sil_coverage_map {{.*}} // variable initialization expression of coverage_errors.TestType6.(_x
914
+ // CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:12 : 0
915
+ // CHECK-NEXT: }
916
+ }
917
+
918
+ struct TestType7 {
919
+ // CHECK-LABEL: sil_coverage_map {{.*}} // property wrapper backing initializer of coverage_errors.TestType7.x
920
+ // CHECK-NEXT: [[@LINE+3]]:4 -> [[@LINE+3]]:49 : 0
921
+ // CHECK-NEXT: [[@LINE+2]]:33 -> [[@LINE+2]]:49 : (0 - 1)
922
+ // CHECK-NEXT: }
923
+ @Wrapper ( x: try ! ( throwingFn ( ) , 0 ) , y: ( 0 , 0 ) )
924
+ var x = try ! ( throwingFn ( ) , 0 )
925
+ // CHECK-LABEL: sil_coverage_map {{.*}} // variable initialization expression of coverage_errors.TestType7.(_x
926
+ // CHECK-NEXT: [[@LINE-2]]:11 -> [[@LINE-2]]:33 : 0
927
+ // CHECK-NEXT: [[@LINE-3]]:29 -> [[@LINE-3]]:33 : (0 - 1)
928
+ // CHECK-NEXT: }
929
+ }
0 commit comments