@@ -46,8 +46,10 @@ struct Basic: P1 {
46
46
// CHECK-NEXT: (normal_conformance type="Recur" protocol="P2"
47
47
// CHECK-NEXT: (assoc_type req="A" type="Recur")
48
48
// CHECK-NEXT: (assoc_type req="B" type="Recur")
49
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>)
50
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))
49
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P2"
50
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))
51
+ // CHECK-NEXT: (assoc_conformance type="Self.B" proto="P2"
52
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>)))
51
53
struct Recur : P2 {
52
54
typealias A = Recur
53
55
typealias B = Recur
@@ -59,12 +61,16 @@ struct Recur: P2 {
59
61
// CHECK-NEXT: (normal_conformance type="NonRecur" protocol="P2"
60
62
// CHECK-NEXT: (assoc_type req="A" type="Recur")
61
63
// CHECK-NEXT: (assoc_type req="B" type="Recur")
62
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2"
63
- // CHECK-NEXT: (assoc_type req="A" type="Recur")
64
- // CHECK-NEXT: (assoc_type req="B" type="Recur")
65
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>)
66
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))
67
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))
64
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P2"
65
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2"
66
+ // CHECK-NEXT: (assoc_type req="A" type="Recur")
67
+ // CHECK-NEXT: (assoc_type req="B" type="Recur")
68
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P2"
69
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))
70
+ // CHECK-NEXT: (assoc_conformance type="Self.B" proto="P2"
71
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))))
72
+ // CHECK-NEXT: (assoc_conformance type="Self.B" proto="P2"
73
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>)))
68
74
struct NonRecur : P2 {
69
75
typealias A = Recur
70
76
typealias B = Recur
@@ -97,8 +103,10 @@ class Super<T, U> {}
97
103
// CHECK-NEXT: (normal_conformance type="Super<T, U>" protocol="P2"
98
104
// CHECK-NEXT: (assoc_type req="A" type="T")
99
105
// CHECK-NEXT: (assoc_type req="B" type="T")
100
- // CHECK-NEXT: (abstract_conformance protocol="P2")
101
- // CHECK-NEXT: (abstract_conformance protocol="P2")
106
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P2"
107
+ // CHECK-NEXT: (abstract_conformance protocol="P2"))
108
+ // CHECK-NEXT: (assoc_conformance type="Self.B" proto="P2"
109
+ // CHECK-NEXT: (abstract_conformance protocol="P2"))
102
110
// CHECK-NEXT: (requirement "T" conforms_to "P2")
103
111
// CHECK-NEXT: (requirement "U" conforms_to "P2"))
104
112
extension Super : P2 where T: P2 , U: P2 {
@@ -117,20 +125,26 @@ extension Super: P2 where T: P2, U: P2 {
117
125
// CHECK-NEXT: (normal_conformance type="NonRecur" protocol="P2"
118
126
// CHECK-NEXT: (assoc_type req="A" type="Recur")
119
127
// CHECK-NEXT: (assoc_type req="B" type="Recur")
120
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2"
121
- // CHECK-NEXT: (assoc_type req="A" type="Recur")
122
- // CHECK-NEXT: (assoc_type req="B" type="Recur")
123
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>)
124
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))
125
- // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>)))
128
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P2"
129
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2"
130
+ // CHECK-NEXT: (assoc_type req="A" type="Recur")
131
+ // CHECK-NEXT: (assoc_type req="B" type="Recur")
132
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P2"
133
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))
134
+ // CHECK-NEXT: (assoc_conformance type="Self.B" proto="P2"
135
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))))
136
+ // CHECK-NEXT: (assoc_conformance type="Self.B" proto="P2"
137
+ // CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>))))
126
138
// CHECK-NEXT: (conformance type="U"
127
139
// CHECK-NEXT: (normal_conformance type="Recur" protocol="P2" <details printed above>)))
128
140
// CHECK-NEXT: (<conditional requirements unable to be computed>)
129
141
// CHECK-NEXT: (normal_conformance type="Super<T, U>" protocol="P2"
130
142
// CHECK-NEXT: (assoc_type req="A" type="T")
131
143
// CHECK-NEXT: (assoc_type req="B" type="T")
132
- // CHECK-NEXT: (abstract_conformance protocol="P2")
133
- // CHECK-NEXT: (abstract_conformance protocol="P2")
144
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P2"
145
+ // CHECK-NEXT: (abstract_conformance protocol="P2"))
146
+ // CHECK-NEXT: (assoc_conformance type="Self.B" proto="P2"
147
+ // CHECK-NEXT: (abstract_conformance protocol="P2"))
134
148
// CHECK-NEXT: (requirement "T" conforms_to "P2")
135
149
// CHECK-NEXT: (requirement "U" conforms_to "P2"))))
136
150
class Sub : Super < NonRecur , Recur > { }
@@ -141,22 +155,25 @@ class Sub: Super<NonRecur, Recur> {}
141
155
// CHECK-LABEL: StructDecl name=RecurGeneric
142
156
// CHECK-NEXT: (normal_conformance type="RecurGeneric<T>" protocol="P3"
143
157
// CHECK-NEXT: (assoc_type req="A" type="RecurGeneric<T>")
144
- // CHECK-NEXT: (normal_conformance type="RecurGeneric<T>" protocol="P3" <details printed above>))
158
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P3"
159
+ // CHECK-NEXT: (normal_conformance type="RecurGeneric<T>" protocol="P3" <details printed above>)))
145
160
struct RecurGeneric < T: P3 > : P3 {
146
161
typealias A = RecurGeneric < T >
147
162
}
148
163
149
164
// CHECK-LABEL: StructDecl name=Specialize
150
165
// CHECK-NEXT: (normal_conformance type="Specialize" protocol="P3"
151
166
// CHECK-NEXT: (assoc_type req="A" type="RecurGeneric<Specialize>")
152
- // CHECK-NEXT: (specialized_conformance type="Specialize.A" protocol="P3"
153
- // CHECK-NEXT: (substitution_map generic_signature="<T where T : P3>"
154
- // CHECK-NEXT: (substitution "T -> Specialize")
155
- // CHECK-NEXT: (conformance type="T"
156
- // CHECK-NEXT: (normal_conformance type="Specialize" protocol="P3" <details printed above>)))
157
- // CHECK-NEXT: (normal_conformance type="RecurGeneric<T>" protocol="P3"
158
- // CHECK-NEXT: (assoc_type req="A" type="RecurGeneric<T>")
159
- // CHECK-NEXT: (normal_conformance type="RecurGeneric<T>" protocol="P3" <details printed above>))))
167
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P3"
168
+ // CHECK-NEXT: (specialized_conformance type="Specialize.A" protocol="P3"
169
+ // CHECK-NEXT: (substitution_map generic_signature="<T where T : P3>"
170
+ // CHECK-NEXT: (substitution "T -> Specialize")
171
+ // CHECK-NEXT: (conformance type="T"
172
+ // CHECK-NEXT: (normal_conformance type="Specialize" protocol="P3" <details printed above>)))
173
+ // CHECK-NEXT: (normal_conformance type="RecurGeneric<T>" protocol="P3"
174
+ // CHECK-NEXT: (assoc_type req="A" type="RecurGeneric<T>")
175
+ // CHECK-NEXT: (assoc_conformance type="Self.A" proto="P3"
176
+ // CHECK-NEXT: (normal_conformance type="RecurGeneric<T>" protocol="P3" <details printed above>))))))
160
177
struct Specialize : P3 {
161
178
typealias A = RecurGeneric < Specialize >
162
179
}
0 commit comments