mirror of
https://github.com/apple/swift.git
synced 2026-10-12 14:50:47 +02:00
This PR converts these two experimental feature flags to regular language flags – includes #90017. Co-authored-by: Elsa Keirouz <e_keirouz@apple.com>
129 lines
3.4 KiB
Swift
129 lines
3.4 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_foreach_borrowing %s | %FileCheck %s
|
|
// RUN: %target-swift-frontend -profile-generate -profile-coverage-mapping -emit-ir %s
|
|
|
|
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_foreach_borrowing.forEachBasic
|
|
@available(SwiftStdlib 6.4, *)
|
|
func forEachBasic(seq: borrowing Span<Int>) -> Int {
|
|
var sum: Int = 0
|
|
|
|
// CHECK: [[@LINE+1]]:16 -> [[@LINE+3]]:4 : 1
|
|
for x in seq {
|
|
sum += x
|
|
}
|
|
|
|
// CHECK: [[@LINE+3]]:33 -> [[@LINE+4]]:4 : (2 - 3)
|
|
for x in seq {
|
|
sum += x
|
|
if (x % 2 == 0) { continue }
|
|
}
|
|
|
|
// CHECK: [[@LINE+3]]:26 -> [[@LINE+4]]:4 : (4 - 5)
|
|
for x in seq {
|
|
sum += x
|
|
if (x == 3) { break }
|
|
}
|
|
|
|
return sum
|
|
}
|
|
|
|
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_foreach_borrowing.nestedForEach
|
|
@available(SwiftStdlib 6.4, *)
|
|
func nestedForEach(seq1: borrowing Span<Int>, seq2: borrowing Span<Int>) -> Int {
|
|
var sum: Int = 0
|
|
|
|
// CHECK: [[@LINE+1]]:17 -> [[@LINE+6]]:4 : 1
|
|
for x in seq1 {
|
|
// CHECK: [[@LINE+1]]:19 -> [[@LINE+3]]:6 : 2
|
|
for y in seq2 {
|
|
sum += x + y
|
|
}
|
|
}
|
|
|
|
return sum
|
|
}
|
|
|
|
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_foreach_borrowing.forEachWithBreak
|
|
@available(SwiftStdlib 6.4, *)
|
|
func forEachWithBreak(seq: borrowing Span<Int>) -> Int {
|
|
var sum: Int = 0
|
|
|
|
// CHECK: [[@LINE+3]]:26 -> [[@LINE+4]]:4 : (1 - 2)
|
|
for x in seq {
|
|
sum += x
|
|
if (x == 3) { break }
|
|
}
|
|
|
|
return sum
|
|
}
|
|
|
|
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_foreach_borrowing.forEachWithWhere
|
|
@available(SwiftStdlib 6.4, *)
|
|
func forEachWithWhere(seq: borrowing Span<Int>) -> Int {
|
|
var sum: Int = 0
|
|
|
|
// CHECK: [[@LINE+1]]:28 -> [[@LINE+3]]:4 : 1
|
|
for x in seq where x > 2 {
|
|
sum += x
|
|
}
|
|
|
|
// CHECK: [[@LINE+3]]:26 -> [[@LINE+4]]:4 : (3 - 4)
|
|
for x in seq where x < 10 {
|
|
sum += x
|
|
if (x == 4) { break }
|
|
}
|
|
|
|
return sum
|
|
}
|
|
|
|
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_foreach_borrowing.forEachWithReturn
|
|
@available(SwiftStdlib 6.4, *)
|
|
func forEachWithReturn(seq: borrowing Span<Int>) -> Int {
|
|
var sum: Int = 0
|
|
|
|
// CHECK: [[@LINE+1]]:16 -> [[@LINE+6]]:4 : 1
|
|
for x in seq {
|
|
if (x == 3) { // CHECK: [[@LINE]]:17 -> [[@LINE+2]]:6 : 2
|
|
return sum
|
|
} // CHECK: [[@LINE]]:6 -> [[@LINE+2]]:4 : (1 - 2)
|
|
sum += x
|
|
} // CHECK: [[@LINE]]:4 -> [[@LINE+2]]:13 : (0 - 2)
|
|
|
|
return sum
|
|
}
|
|
|
|
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_foreach_borrowing.forEachWithContinue
|
|
@available(SwiftStdlib 6.4, *)
|
|
func forEachWithContinue(seq: borrowing Span<Int>) -> Int {
|
|
var sum: Int = 0
|
|
|
|
// CHECK: [[@LINE+1]]:16 -> [[@LINE+6]]:4 : 1
|
|
for x in seq {
|
|
if (x % 2 == 0) { // CHECK: [[@LINE]]:21 -> [[@LINE+2]]:6 : 2
|
|
continue
|
|
} // CHECK: [[@LINE]]:6 -> [[@LINE+2]]:4 : (1 - 2)
|
|
sum += x
|
|
}
|
|
|
|
return sum
|
|
}
|
|
|
|
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_foreach_borrowing.forEachMultipleConditions
|
|
@available(SwiftStdlib 6.4, *)
|
|
func forEachMultipleConditions(seq: borrowing Span<Int>) -> Int {
|
|
var sum: Int = 0
|
|
|
|
// CHECK: [[@LINE+1]]:16 -> [[@LINE+10]]:4 : 1
|
|
for x in seq {
|
|
if (x % 2 == 0) { // CHECK: [[@LINE]]:21 -> [[@LINE+2]]:6 : 2
|
|
continue
|
|
} // CHECK: [[@LINE]]:6 -> [[@LINE+6]]:4 : (1 - 2)
|
|
sum += x
|
|
if (x > 7) { // CHECK: [[@LINE]]:16 -> [[@LINE+2]]:6 : 3
|
|
break
|
|
} // CHECK: [[@LINE]]:6 -> [[@LINE+2]]:4 : ((1 - 2) - 3)
|
|
sum += 1
|
|
}
|
|
|
|
return sum
|
|
}
|