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 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
public class C1<T> : ClassBoundP {
public typealias Function = (C1<T>) -> (S1<T>) -> (E1<T>) -> Int
public typealias Tuple = (C1<T>, S1<T>, E1<T>, Int)
public typealias Inner = T
public let aClass: C1<T>
public let aStruct: S1<T>
public let anEnum: E1<T>
public let function: Function
public let tuple: Tuple
public let dependentMember: T
public init(aClass: C1<T>, aStruct: S1<T>, anEnum: E1<T>, function: @escaping Function, tuple: Tuple, dependentMember: T) {
self.aClass = aClass
self.aStruct = aStruct
self.anEnum = anEnum
self.function = function
self.tuple = tuple
self.dependentMember = dependentMember
}
}
public class C2<T: P1> {
public typealias Function = (C1<T>) -> (S1<T>) -> (E1<T>) -> Int
public typealias Tuple = (C2<T>, S2<T>, E2<T>, Int)
public let aClass: C1<T>
public let aStruct: S1<T>
public let anEnum: E1<T>
public let function: Function
public let tuple: Tuple
public let primaryArchetype: T
public let dependentMember1: T.Inner
public init(aClass: C1<T>, aStruct: S1<T>, anEnum: E1<T>, function: @escaping Function, tuple: Tuple, primaryArchetype: T, dependentMember1: T.Inner) {
self.aClass = aClass
self.aStruct = aStruct
self.anEnum = anEnum
self.function = function
self.tuple = tuple
self.primaryArchetype = primaryArchetype
self.dependentMember1 = dependentMember1
}
}
public class C3<T: P2> {
public typealias Function = (C3<T>) -> (S3<T>) -> (E3<T>) -> Int
public typealias Tuple = (C3<T>, S3<T>, E3<T>, Int)
public let aClass: C3<T>
public let aStruct: S3<T>
public let anEnum: E3<T>
public let function: (C3<T>) -> (S3<T>) -> (E3<T>) -> Int
public let tuple: (C3<T>, S3<T>, E3<T>, Int)
public let primaryArchetype: T
public let dependentMember1: T.Outer
public let dependentMember2: T.Outer.Inner
public init(aClass: C3<T>, aStruct: S3<T>, anEnum: E3<T>, function: @escaping Function, tuple: Tuple, primaryArchetype: T, dependentMember1: T.Outer, dependentMember2: T.Outer.Inner) {
self.aClass = aClass
self.aStruct = aStruct
self.anEnum = anEnum
self.function = function
self.tuple = tuple
self.primaryArchetype = primaryArchetype
self.dependentMember1 = dependentMember1
self.dependentMember2 = dependentMember2
}
}
public struct C4<T : P1, U : P1> {}
extension C4 : P1, P2 {
public typealias Inner = T
public typealias Outer = T
}
public struct S1<T> {
public let aClass: C1<T>
public let aStruct: Box<S1<T>>
public let anEnum: Box<E1<T>>
public let function: (C1<T>) -> (S1<T>) -> (E1<T>) -> Int
public let tuple: (C1<T>, Box<S1<T>>, Box<E1<T>>, Int)
public let primaryArchetype: T
}
public struct S2<T: P1> {
public let aClass: C2<T>
public let aStruct: Box<S2<T>>
public let anEnum: Box<E2<T>>
public let function: (C2<T>) -> (S2<T>) -> (E2<T>) -> Int
public let tuple: (C2<T>, Box<S2<T>>, Box<E2<T>>, Int)
public let primaryArchetype: T
public let dependentMember1: T.Inner
}
public struct S3<T: P2> {
public typealias Function = (C3<T>) -> (S3<T>) -> (E3<T>) -> Int
public typealias Tuple = (C3<T>, Box<S3<T>>, Box<E3<T>>, Int)
public let aClass: C3<T>
public let aStruct: Box<S3<T>>
public let anEnum: Box<E3<T>>
public let function: Function
public let tuple: Tuple
public let primaryArchetype: T
public let dependentMember1: T.Outer
public let dependentMember2: T.Outer.Inner
public init(aClass: C3<T>, aStruct: Box<S3<T>>, anEnum: Box<E3<T>>, function: @escaping Function, tuple: Tuple, primaryArchetype: T, dependentMember1: T.Outer, dependentMember2: T.Outer.Inner) {
self.aClass = aClass
self.aStruct = aStruct
self.anEnum = anEnum
self.function = function
self.tuple = tuple
self.primaryArchetype = primaryArchetype
self.dependentMember1 = dependentMember1
self.dependentMember2 = dependentMember2
}
}
public struct S4<T : P1, U : P1> {}
extension S4 : P1, P2 {
public typealias Inner = T
public typealias Outer = T
}
public enum E1<T> {
case Class(C1<T>)
case Struct(S1<T>)
indirect case Enum(E1<T>)
case Int(Swift.Int)
case Function((T) -> E1<T>)
case Tuple(C1<T>, S1<T>, Swift.Int)
case Primary(T)
case Metatype(T.Type)
}
public enum E2<T: P1> {
case Class(C2<T>)
case Struct(S2<T>)
indirect case Enum(E2<T>)
case Function((T.Type) -> E1<T>)
case Tuple(C2<T>, S2<T>, Int)
case Primary(T)
case DependentMemberInner(T.Inner)
case ExistentialMetatype(T.Type)
}
public enum E3<T: P2> {
case Class(C3<T>)
case Struct(S3<T>)
indirect case Enum(E3<T>)
case Function((T.Type.Type) -> E1<T>)
case Tuple(C3<T>, S3<T>, Int)
case Primary(T)
case DependentMemberOuter(T.Outer)
case DependentMemberInner(T.Outer.Inner)
}
public enum E4<T : P1, U : P1> {
public typealias First = T
}
extension E4 : P1, P2, P3 {
public typealias Inner = T
public typealias Outer = U
public typealias Second = U
}
|