Skip to content

Commit d50b00e

Browse files
authored
Merge pull request #71850 from xedin/add-fixed-assoctype-test-cases
[Tests] NFC: Add few associated type inference test-cases
2 parents 12010d6 + 4e7425c commit d50b00e

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// RUN: %target-typecheck-verify-swift -enable-experimental-associated-type-inference
2+
// RUN: %target-typecheck-verify-swift -disable-experimental-associated-type-inference
3+
4+
protocol Task1: AnyObject {
5+
}
6+
7+
protocol Task2: AnyObject {
8+
}
9+
10+
class TaskImpl : Task2 {
11+
}
12+
13+
protocol TaskResult {
14+
associatedtype Task
15+
16+
var tasks: [Task] { get }
17+
18+
func removeMatchedTask(_ task: Task)
19+
func match(_ task: Task) -> Bool
20+
}
21+
22+
extension TaskResult where Task == Task1 {
23+
func match(_ task: Task) -> Bool { false }
24+
}
25+
26+
extension TaskResult where Task: Task2 {
27+
func match(_ task: Task) -> Bool { false }
28+
}
29+
30+
final class Results: TaskResult {
31+
var tasks: [TaskImpl] = []
32+
33+
func removeMatchedTask(_ task: TaskImpl) {}
34+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// RUN: %target-typecheck-verify-swift -enable-experimental-associated-type-inference
2+
// RUN: %target-typecheck-verify-swift -disable-experimental-associated-type-inference
3+
4+
extension LazySequenceProtocol {
5+
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
6+
func filtering(
7+
while predicate: @escaping (Self.Element) -> Bool
8+
) -> some (Sequence<Self.Element> & LazySequenceProtocol) {
9+
LazyFilteringSequence(base: self, predicate: predicate)
10+
}
11+
}
12+
13+
struct LazyFilteringSequence<S: Sequence>: LazySequenceProtocol {
14+
struct Iterator: IteratorProtocol {
15+
var iterator: S.Iterator
16+
var predicate: (S.Element) -> Bool
17+
18+
mutating func next() -> S.Element? {
19+
nil
20+
}
21+
}
22+
23+
var base: S
24+
var predicate: (S.Element) -> Bool
25+
26+
func makeIterator() -> Iterator {
27+
Iterator(iterator: self.base.makeIterator(), predicate: self.predicate)
28+
}
29+
}

0 commit comments

Comments
 (0)