-
Notifications
You must be signed in to change notification settings - Fork 10.4k
/
Copy pathfixed_layout_class.swift
129 lines (94 loc) · 2.57 KB
/
fixed_layout_class.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import resilient_struct
// Fixed-layout, fixed-size base class
@_fixed_layout
open class OutsideParent {
public final var property: String = "OutsideParent.property"
open class var classProperty: String {
return "OutsideParent.classProperty"
}
public init() {
print("OutsideParent.init()")
}
open func method() {
print("OutsideParent.method()")
}
open class func classMethod() {
print("OutsideParent.classMethod()")
}
}
// Fixed-layout, resiliently-sized base class
@_fixed_layout
open class OutsideParentWithResilientProperty {
public let p: Point
public let s: Size
public let color: Int32
public final lazy var laziestNumber = 0
public init(p: Point, s: Size, color: Int32) {
self.p = p
self.s = s
self.color = color
}
}
// Fixed-layout, fixed-size subclass
@_fixed_layout
open class OutsideChild : OutsideParent {
public let childProperty: Int = 0
open override func method() {
print("OutsideChild.method()")
super.method()
}
open override class func classMethod() {
print("OutsideChild.classMethod()")
super.classMethod()
}
}
// Fixed-layout, dependently-sized, generic base class
@_fixed_layout
open class GenericOutsideParent<A> {
public final var property: A
public init(property: A) {
self.property = property
print("GenericOutsideParent.init()")
}
open func method() {
print("GenericOutsideParent.method()")
}
open class func classMethod() {
print("GenericOutsideParent.classMethod()")
}
}
// Fixed-layout, dependently-sized, generic subclass
@_fixed_layout
open class GenericOutsideChild<A> : GenericOutsideParent<A> {
public final var childProperty: A
public override init(property: A) {
self.childProperty = property
print("GenericOutsideGenericChild.init(a: A)")
super.init(property: property)
}
open override func method() {
print("GenericOutsideChild.method()")
super.method()
}
open override class func classMethod() {
print("GenericOutsideChild.classMethod()")
super.classMethod()
}
}
// Fixed-layout, fixed-size subclass of generic class
@_fixed_layout
open class ConcreteOutsideChild : GenericOutsideParent<String> {
public final var childProperty: Int = 0
public override init(property: String) {
print("ConcreteOutsideChild.init(property: String)")
super.init(property: property)
}
open override func method() {
print("ConcreteOutsideChild.method()")
super.method()
}
open override class func classMethod() {
print("ConcreteOutsideChild.classMethod()")
super.classMethod()
}
}