-
Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy path0072-issue-46480-2.swift
74 lines (50 loc) · 1.32 KB
/
0072-issue-46480-2.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// RUN: %target-swift-frontend %s -emit-ir
// https://github.com/apple/swift/issues/46480
public class TiPresenter<V> {
private var view: V? = nil
public func create() {
}
public func attchView(view: V) {
self.view = view
}
public func detachView() {
self.view = nil
}
public func destroy() {
}
}
public class TiViewController<P: TiPresenter<V>, V>
/*: UiViewController*/ // should extend UiViewController but this is not problem here
{
lazy var presenter: P = {
return self.providePresenter()
}()
public init() {
presenter.create()
}
func providePresenter() -> P {
fatalError("must override")
}
func provideView() -> V {
if (self is V) {
return self as! V
} else {
fatalError("UIViewController doesn't implement TiView interface")
}
}
}
protocol MyView {
func setDataItems(_: [String])
}
class MyPresenter: TiPresenter<MyView> {
}
class MyController: TiViewController<MyPresenter, MyView>, MyView {
override func providePresenter() -> MyPresenter {
return MyPresenter()
}
internal func setDataItems(_: [String]) {
//TODO
}
}
let vc = MyController()
let p = vc.presenter