|
1 | 1 | // RUN: %target-swift-frontend -Xllvm -sil-full-demangle -profile-generate -profile-coverage-mapping -emit-sorted-sil -emit-sil -module-name coverage_var_init %s | %FileCheck %s
|
2 | 2 | // RUN: %target-swift-frontend -profile-generate -profile-coverage-mapping -emit-ir %s
|
3 | 3 |
|
| 4 | +struct S { |
| 5 | + // CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1iSivpfi" {{.*}} // variable initialization expression of coverage_var_init.S.i |
| 6 | + // CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:12 : 0 |
| 7 | + var i = 0 |
| 8 | + |
| 9 | + // CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1jSivpfi" {{.*}} // variable initialization expression of coverage_var_init.S.j |
| 10 | + // CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:16 : 0 |
| 11 | + var j = 1 + 2 |
| 12 | + |
| 13 | + // CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1kSiycvpfi" {{.*}} // variable initialization expression of coverage_var_init.S.k |
| 14 | + // CHECK-NEXT: [[@LINE+3]]:11 -> [[@LINE+3]]:20 : 0 |
| 15 | + // CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1kSiycvpfiSiycfU_" {{.*}} // closure #1 () -> Swift.Int in variable initialization expression of coverage_var_init.S.k |
| 16 | + // CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:20 : 0 |
| 17 | + var k = { 1 + 2 } |
| 18 | + |
| 19 | + // CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1lSivpfi" {{.*}} // variable initialization expression of coverage_var_init.S.l |
| 20 | + // CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:16 : 0 |
| 21 | + var l = #line |
| 22 | + |
| 23 | + // CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1mSaySiGvpfi" {{.*}} // variable initialization expression of coverage_var_init.S.m |
| 24 | + // CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:20 : 0 |
| 25 | + var m = [1, 2, 3] |
| 26 | + |
| 27 | + // CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1nSSvpfi" {{.*}} // variable initialization expression of coverage_var_init.S.n |
| 28 | + // CHECK-NEXT: [[@LINE+3]]:11 -> [[@LINE+3]]:33 : 0 |
| 29 | + // CHECK-NEXT: [[@LINE+2]]:26 -> [[@LINE+2]]:27 : 1 |
| 30 | + // CHECK-NEXT: [[@LINE+1]]:30 -> [[@LINE+1]]:31 : (0 - 1) |
| 31 | + var n = "\(.random() ? 1 : 2)" |
| 32 | +} |
| 33 | + |
4 | 34 | final class VarInit {
|
5 | 35 | // CHECK: sil_coverage_map {{.*}} "$s17coverage_var_init7VarInitC018initializedWrapperE0SivpfP"
|
6 | 36 | // CHECK-NEXT: [[@LINE+1]]:4 -> [[@LINE+1]]:42 : 0
|
7 | 37 | @Wrapper var initializedWrapperInit = 2
|
8 | 38 |
|
| 39 | + // CHECK: sil_coverage_map {{.*}} // variable initialization expression of coverage_var_init.VarInit.(_autoclosureWrapperInit |
| 40 | + // CHECK-NEXT: [[@LINE+1]]:52 -> [[@LINE+1]]:53 |
| 41 | + @AutoClosureWrapper var autoclosureWrapperInit = 3 |
| 42 | + |
9 | 43 | // CHECK: sil_coverage_map {{.*}} "$s17coverage_var_init7VarInitC04lazydE033_49373CB2DFB47C8DC62FA963604688DFLLSSvgSSyXEfU_"
|
10 | 44 | // CHECK-NEXT: [[@LINE+1]]:42 -> [[@LINE+3]]:4 : 0
|
11 | 45 | private lazy var lazyVarInit: String = {
|
@@ -37,4 +71,12 @@ final class VarInit {
|
37 | 71 | var wrappedValue: Int { 1 }
|
38 | 72 | }
|
39 | 73 |
|
| 74 | +@propertyWrapper |
| 75 | +struct AutoClosureWrapper<T> { |
| 76 | + var wrappedValue: T |
| 77 | + init(wrappedValue: @autoclosure () -> T) { |
| 78 | + self.wrappedValue = wrappedValue() |
| 79 | + } |
| 80 | +} |
| 81 | + |
40 | 82 | VarInit().coverageFunction()
|
0 commit comments