mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
For any `#if` blocks in the function we're emitting, emit skipped ranges for the inactive clauses, including the syntax for the `#if` itself, since that should not be considered executable code. rdar://116860865
155 lines
4.1 KiB
Swift
155 lines
4.1 KiB
Swift
// RUN: %target-swift-frontend -Xllvm -sil-full-demangle -suppress-warnings -profile-generate -profile-coverage-mapping -emit-sorted-sil -emit-sil -module-name coverage_pound_if %s | %FileCheck %s
|
|
// RUN: %target-swift-frontend -profile-generate -profile-coverage-mapping -emit-ir %s
|
|
|
|
func poundIf1() -> Int {
|
|
#if true
|
|
#if true
|
|
return 1
|
|
#else
|
|
return 2
|
|
#endif
|
|
#else
|
|
#if true
|
|
return 3
|
|
#else
|
|
return 4
|
|
#endif
|
|
#endif
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If1SiyF"
|
|
// CHECK-NEXT: [[@LINE-16]]:24 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-16]]:3 -> [[@LINE-16]]:11 : skipped
|
|
// CHECK-NEXT: [[@LINE-16]]:5 -> [[@LINE-16]]:13 : skipped
|
|
// CHECK-NEXT: [[@LINE-15]]:5 -> [[@LINE-13]]:11 : skipped
|
|
// CHECK-NEXT: [[@LINE-13]]:3 -> [[@LINE-7]]:9 : skipped
|
|
// CHECK-NEXT: }
|
|
|
|
func poundIf2(_ x: [Int]) -> [Int] {
|
|
return x
|
|
#if false
|
|
.map { $0 + 1 }
|
|
#endif
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If2ySaySiGACF"
|
|
// CHECK-NEXT: [[@LINE-7]]:36 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-4]]:9 : skipped
|
|
// CHECK-NEXT: }
|
|
|
|
|
|
func poundIf3() -> Any {
|
|
#if false
|
|
@objc
|
|
#endif
|
|
class C {}
|
|
return C()
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If3ypyF"
|
|
// CHECK-NEXT: [[@LINE-8]]:24 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-8]]:1 -> [[@LINE-6]]:7 : skipped
|
|
// CHECK-NEXT: }
|
|
|
|
func poundIf4(_ x: Bool) -> Int {
|
|
switch x {
|
|
#if true
|
|
case true:
|
|
return 0
|
|
#else
|
|
case false:
|
|
return 0
|
|
#endif
|
|
#if false
|
|
case false:
|
|
return 1
|
|
#endif
|
|
case false:
|
|
return 0
|
|
}
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If4ySiSbF"
|
|
// CHECK-NEXT: [[@LINE-18]]:33 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-18]]:10 -> [[@LINE-18]]:11 : 0
|
|
// CHECK-NEXT: [[@LINE-18]]:3 -> [[@LINE-18]]:11 : skipped
|
|
// CHECK-NEXT: [[@LINE-18]]:3 -> [[@LINE-17]]:13 : 1
|
|
// CHECK-NEXT: [[@LINE-17]]:3 -> [[@LINE-14]]:9 : skipped
|
|
// CHECK-NEXT: [[@LINE-14]]:3 -> [[@LINE-11]]:9 : skipped
|
|
// CHECK-NEXT: [[@LINE-11]]:3 -> [[@LINE-10]]:13 : 2
|
|
// CHECK-NEXT: }
|
|
|
|
func poundIf5() {
|
|
struct S {
|
|
#if false
|
|
var foo: Int
|
|
#else
|
|
var foo: Int
|
|
#endif
|
|
}
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If5yyF"
|
|
// CHECK-NEXT: [[@LINE-10]]:17 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-9]]:1 -> [[@LINE-7]]:6 : skipped
|
|
// CHECK-NEXT: [[@LINE-6]]:1 -> [[@LINE-6]]:7 : skipped
|
|
// CHECK-NEXT: }
|
|
|
|
func poundIf6() -> Int {
|
|
#if true
|
|
struct S {
|
|
var foo: Int
|
|
}
|
|
#else
|
|
struct S {
|
|
var foo: Int
|
|
}
|
|
#endif
|
|
return S(foo: 0).foo
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If6SiyF"
|
|
// CHECK-NEXT: [[@LINE-13]]:24 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-13]]:3 -> [[@LINE-13]]:11 : skipped
|
|
// CHECK-NEXT: [[@LINE-10]]:3 -> [[@LINE-6]]:9 : skipped
|
|
// CHECK-NEXT: }
|
|
|
|
func poundIf7() -> Int {
|
|
#if false
|
|
#endif
|
|
return 0
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If7SiyF"
|
|
// CHECK-NEXT: [[@LINE-6]]:24 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-5]]:9 : skipped
|
|
// CHECK-NEXT: }
|
|
|
|
func poundIf8() -> Int {
|
|
#if true
|
|
#endif
|
|
return 0
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If8SiyF"
|
|
// CHECK-NEXT: [[@LINE-6]]:24 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-6]]:11 : skipped
|
|
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-6]]:9 : skipped
|
|
// CHECK-NEXT: }
|
|
|
|
func poundIf9() -> Int {
|
|
#if true
|
|
#else
|
|
#endif
|
|
return 0
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If9SiyF"
|
|
// CHECK-NEXT: [[@LINE-7]]:24 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-7]]:3 -> [[@LINE-7]]:11 : skipped
|
|
// CHECK-NEXT: [[@LINE-7]]:3 -> [[@LINE-6]]:9 : skipped
|
|
// CHECK-NEXT: }
|
|
|
|
func poundIf10() -> Int {
|
|
#if true
|
|
return 0
|
|
#else
|
|
return 1#endif
|
|
}
|
|
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B4If10SiyF"
|
|
// CHECK-NEXT: [[@LINE-7]]:25 -> [[@LINE-2]]:2 : 0
|
|
// CHECK-NEXT: [[@LINE-7]]:3 -> [[@LINE-7]]:11 : skipped
|
|
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-5]]:17 : skipped
|
|
// CHECK-NEXT: }
|