forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path0059-issue-45909.swift
39 lines (28 loc) · 946 Bytes
/
0059-issue-45909.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// RUN: %target-swift-frontend %s -emit-ir
// RUN: %target-swift-frontend %s -emit-ir -O
// https://github.com/apple/swift/issues/45909
protocol ControllerB {
associatedtype T: Controller
}
protocol Controller {
associatedtype T
func shouldSelect<S: ControllerB>(_ a: T, b: S) where S.T == Self
}
struct ControllerAImpl {}
struct ControllerImpl : Controller {
typealias T = ControllerAImpl
func shouldSelect<S : ControllerB>(_ a: ControllerAImpl, b: S) where S.T == ControllerImpl {}
}
struct ControllerBImpl1 : ControllerB {
typealias T = ControllerImpl
}
struct ControllerBImpl2<C : Controller> : ControllerB {
typealias T = C
}
extension Controller {
func didSelect<S: ControllerB>(_ a: T, b: S) where S.T == Self {
shouldSelect(a, b: b)
}
}
ControllerImpl().didSelect(ControllerAImpl(), b: ControllerBImpl1())
ControllerImpl().didSelect(ControllerAImpl(), b: ControllerBImpl2<ControllerImpl>())