-
Notifications
You must be signed in to change notification settings - Fork 10.4k
/
Copy pathrdar91232987.swift
91 lines (73 loc) · 3.07 KB
/
rdar91232987.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
// RUN: %target-swift-frontend -typecheck %s -debug-generic-signatures 2>&1 | %FileCheck %s
// CHECK-LABEL: rdar91232987.(file).P1@
// CHECK-NEXT: Requirement signature: <Self where Self.[P1]A1 : Decodable, Self.[P1]A1 : Encodable, Self.[P1]A1 : P2, Self.[P1]A1.[P2]A3.[P5]A6 : Decodable, Self.[P1]A1.[P2]A3.[P5]A6 : Encodable>
protocol P1 {
associatedtype A1: P2 where A1: Codable, A1.A3.A6: Codable
}
// CHECK-LABEL: rdar91232987.(file).P2@
// CHECK-NEXT: Requirement signature: <Self where Self : P3, Self.[P2]A2 : P4, Self.[P2]A3 : P5>
protocol P2: P3 {
associatedtype A2: P4
associatedtype A3: P5
}
// CHECK-LABEL: rdar91232987.(file).P3@
// CHECK-NEXT: Requirement signature: <Self>
protocol P3 {}
// CHECK-LABEL: rdar91232987.(file).P4@
// CHECK-NEXT: Requirement signature: <Self where Self.[P4]A4 : P11, Self.[P4]A5 : P9>
protocol P4 {
associatedtype A4: P11
associatedtype A5: P9
}
// CHECK-LABEL: rdar91232987.(file).P5@
// CHECK-NEXT: Requirement signature: <Self where Self.[P5]A6 : P6>
protocol P5 {
associatedtype A6: P6
}
// CHECK-LABEL: rdar91232987.(file).P6@
// CHECK-NEXT: Requirement signature: <Self where Self : P10, Self : P7, Self.[P6]A7 : Decodable, Self.[P6]A7 : Encodable, Self.[P6]A7 : Hashable, Self.[P6]A7 : RawRepresentable, Self.[P6]A7.[RawRepresentable]RawValue == String>
protocol P6: P7, P10 {
associatedtype A7: Hashable, Codable, RawRepresentable where A7.RawValue == String
}
// CHECK-LABEL: rdar91232987.(file).P7@
// CHECK-NEXT: Requirement signature: <Self where Self : Equatable, Self : P8>
protocol P7: Equatable, P8 {}
// CHECK-LABEL: rdar91232987.(file).P8@
// CHECK-NEXT: Requirement signature: <Self>
protocol P8 {}
// CHECK-LABEL: rdar91232987.(file).P9@
// CHECK-NEXT: Requirement signature: <Self>
protocol P9 {
associatedtype A8
}
// CHECK-LABEL: rdar91232987.(file).P10@
// CHECK-NEXT: Requirement signature: <Self>
protocol P10 {}
// CHECK-LABEL: rdar91232987.(file).P11@
// CHECK-NEXT: Requirement signature: <Self where Self.[P11]A10 : P13, Self.[P11]A9 : P12>
protocol P11 {
associatedtype A9: P12
associatedtype A10: P13
}
// CHECK-LABEL: rdar91232987.(file).P12@
// CHECK-NEXT: Requirement signature: <Self where Self : Decodable, Self : Encodable, Self : Equatable>
protocol P12: Codable, Equatable {}
// CHECK-LABEL: rdar91232987.(file).P13@
// CHECK-NEXT: Requirement signature: <Self>
protocol P13 {}
// CHECK-LABEL: rdar91232987.(file).P14@
// CHECK-NEXT: Requirement signature: <Self where Self : P16, Self.[P14]A1 : P2>
protocol P14: P16 {
associatedtype A1: P2
}
// CHECK-LABEL: rdar91232987.(file).P15@
// CHECK-NEXT: Requirement signature: <Self where Self.[P15]A6 : P6>
protocol P15 {
associatedtype A6: P6
}
// CHECK-LABEL: rdar91232987.(file).P16@
// CHECK-NEXT: Requirement signature: <Self>
protocol P16 {}
// CHECK-LABEL: rdar91232987.(file).C@
// CHECK-NEXT: Generic signature: <X, Y where X : P14, Y : P15, X.[P14]A1 : Decodable, X.[P14]A1 : Encodable, Y.[P15]A6 : Decodable, Y.[P15]A6 : Encodable, Y.[P15]A6 == X.[P14]A1.[P2]A3.[P5]A6>
class C<X: P14, Y: P15> where X.A1: Codable, X.A1.A3.A6: Codable, X.A1.A3.A6 == Y.A6 {}