Skip to content

Commit 6f1f21a

Browse files
authored
Merge pull request #39637 from kavon/caf-actor-test-coverage
2 parents f189992 + 298f23e commit 6f1f21a

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// RUN: %target-run-simple-swift( -Xfrontend -disable-availability-checking -parse-as-library) | %FileCheck %s
2+
3+
// REQUIRES: executable_test
4+
// REQUIRES: concurrency
5+
6+
// REQUIRES: concurrency_runtime
7+
// UNSUPPORTED: back_deployment_runtime
8+
9+
enum Maybe<T: Sendable>: Sendable {
10+
case just(T)
11+
case nothing
12+
}
13+
14+
@available(SwiftStdlib 5.5, *)
15+
actor Printer {
16+
var numPrints: Int = 0
17+
18+
func callAsFunction<T>(_ x: Maybe<T>) async {
19+
switch x {
20+
case .nothing: genericPrinter("nothing", counter: &numPrints)
21+
case .just(let t): genericPrinter(t, counter: &numPrints)
22+
}
23+
}
24+
25+
func callAsFunction(_ x: String) {
26+
genericPrinter(x, counter: &numPrints)
27+
}
28+
29+
func callAsFunction(_ x: Int) async throws {
30+
genericPrinter(x, counter: &numPrints)
31+
}
32+
33+
@MainActor func callAsFunction(writingTo count: inout Maybe<Int>) async {
34+
count = .just(await numPrints)
35+
}
36+
37+
private func genericPrinter<T>(_ x: T, counter: inout Int) {
38+
print(x)
39+
counter += 1
40+
}
41+
}
42+
43+
@available(SwiftStdlib 5.5, *)
44+
@main struct Main {
45+
static func main() async {
46+
let p = Printer()
47+
var maybe: Maybe<Int> = .nothing
48+
49+
await p(maybe)
50+
await p("cat")
51+
try! await p(2)
52+
await p("cat")
53+
54+
55+
await p(writingTo: &maybe)
56+
await p(maybe)
57+
}
58+
}
59+
60+
// CHECK: nothing
61+
// CHECK: cat
62+
// CHECK: 2
63+
// CHECK: cat
64+
// CHECK: 4
65+

0 commit comments

Comments
 (0)