You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Let's point out the associated type with a separate note, so
that we can diagnose other availability failures, such as
deprecation and OS version availability.
Copy file name to clipboardExpand all lines: test/SPI/protocol_requirement.swift
+2-1Lines changed: 2 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -104,7 +104,8 @@ public protocol Proto {
104
104
105
105
publicstructBadStruct{}
106
106
@_spi(Horse)extensionBadStruct:OtherProto{}
107
-
publicstructBadConforms:Proto{ // expected-error {{cannot use conformance of 'BadStruct' to 'OtherProto' in associated type 'Self.A.Element' (inferred as 'BadStruct'); the conformance is declared as SPI}}
107
+
publicstructBadConforms:Proto{ // expected-error {{cannot use conformance of 'BadStruct' to 'OtherProto' here; the conformance is declared as SPI}}
108
+
// expected-note@-1 {{in associated type 'Self.A.Element' (inferred as 'BadStruct')}}
extensionPublicInferredAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); 'BADLibrary' has been imported as implementation-only}}
221
-
extensionPublicInferredAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); 'BADLibrary' has been imported as implementation-only}}
220
+
extensionPublicInferredAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
221
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
222
+
223
+
extensionPublicInferredAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
224
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
extensionUFIInferredAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); 'BADLibrary' has been imported as implementation-only}}
228
-
extensionUFIInferredAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); 'BADLibrary' has been imported as implementation-only}}
231
+
extensionUFIInferredAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
232
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
233
+
234
+
extensionUFIInferredAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
235
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
@@ -239,8 +247,12 @@ public struct PublicExplicitAssociatedTypeImpl {
239
247
publictypealiasAssoc=NormalStruct
240
248
publicfunc takesAssoc(_:NormalStruct){}
241
249
}
242
-
extensionPublicExplicitAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); 'BADLibrary' has been imported as implementation-only}}
243
-
extensionPublicExplicitAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); 'BADLibrary' has been imported as implementation-only}}
250
+
extensionPublicExplicitAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
251
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
252
+
253
+
extensionPublicExplicitAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
254
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
publicstructRefinedProtoImpl:RefinedProto{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); 'BADLibrary' has been imported as implementation-only}}
266
+
publicstructRefinedProtoImpl:RefinedProto{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
267
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
255
268
publicfunc takesAssoc(_:NormalStruct){}
256
269
}
257
270
@@ -266,18 +279,26 @@ public protocol SlightlyMoreComplicatedRequirement {
publicstructSlightlyMoreComplicatedRequirementImpl:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc.Element' (inferred as 'NormalStruct'); 'BADLibrary' has been imported as implementation-only}}
282
+
publicstructSlightlyMoreComplicatedRequirementImpl:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
283
+
// expected-note@-1 {{in associated type 'Self.Assoc.Element' (inferred as 'NormalStruct')}}
284
+
270
285
publicfunc takesAssoc(_:[NormalStruct]){}
271
286
}
272
-
publicstructRequirementsHandleSubclassesToo:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalClass' to 'NormalProto' in associated type 'Self.Assoc.Element' (inferred as 'SubclassOfNormalClass'); 'BADLibrary' has been imported as implementation-only}}
287
+
publicstructRequirementsHandleSubclassesToo:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalClass' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
288
+
// expected-note@-1 {{in associated type 'Self.Assoc.Element' (inferred as 'SubclassOfNormalClass')}}
publicstructRequirementsHandleSpecializationsToo:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc.Element' (inferred as 'ConditionalGenericStruct<NormalStruct>'); 'BADLibrary' has been imported as implementation-only}}
293
+
publicstructRequirementsHandleSpecializationsToo:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
294
+
// expected-note@-1 {{in associated type 'Self.Assoc.Element' (inferred as 'ConditionalGenericStruct<NormalStruct>')}}
publicstructClassConstrainedGenericArg<T:NormalClass>:PublicAssociatedTypeProto{ // expected-error {{cannot use conformance of 'NormalClass' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'T'); 'BADLibrary' has been imported as implementation-only}}
299
+
publicstructClassConstrainedGenericArg<T:NormalClass>:PublicAssociatedTypeProto{ // expected-error {{cannot use conformance of 'NormalClass' to 'NormalProto' here; 'BADLibrary' has been imported as implementation-only}}
300
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'T')}}
extensionPublicInferredAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); the conformance is declared as SPI}}
255
-
extensionPublicInferredAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); the conformance is declared as SPI}}
254
+
extensionPublicInferredAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
255
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
256
+
257
+
extensionPublicInferredAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
258
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
extensionUFIInferredAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); the conformance is declared as SPI}}
262
-
extensionUFIInferredAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); the conformance is declared as SPI}}
265
+
266
+
extensionUFIInferredAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
267
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
268
+
269
+
extensionUFIInferredAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
270
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
@@ -273,8 +282,12 @@ public struct PublicExplicitAssociatedTypeImpl {
273
282
publictypealiasAssoc=NormalStruct
274
283
publicfunc takesAssoc(_:NormalStruct){}
275
284
}
276
-
extensionPublicExplicitAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); the conformance is declared as SPI}}
277
-
extensionPublicExplicitAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); the conformance is declared as SPI}}
285
+
extensionPublicExplicitAssociatedTypeImpl:PublicAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
286
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
287
+
288
+
extensionPublicExplicitAssociatedTypeImpl:UFIAssociatedTypeProto{} // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
289
+
// expected-note@-1 {{in associated type 'Self.Assoc'}}
publicstructRefinedProtoImpl:RefinedProto{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'NormalStruct'); the conformance is declared as SPI}}
301
+
publicstructRefinedProtoImpl:RefinedProto{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
302
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'NormalStruct')}}
289
303
publicfunc takesAssoc(_:NormalStruct){}
290
304
}
291
305
@@ -300,17 +314,23 @@ public protocol SlightlyMoreComplicatedRequirement {
publicstructSlightlyMoreComplicatedRequirementImpl:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc.Element' (inferred as 'NormalStruct'); the conformance is declared as SPI}}
317
+
publicstructSlightlyMoreComplicatedRequirementImpl:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
318
+
// expected-note@-1 {{in associated type 'Self.Assoc.Element' (inferred as 'NormalStruct')}}
304
319
publicfunc takesAssoc(_:[NormalStruct]){}
305
320
}
306
-
publicstructRequirementsHandleSubclassesToo:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalClass' to 'NormalProto' in associated type 'Self.Assoc.Element' (inferred as 'SubclassOfNormalClass'); the conformance is declared as SPI}}
321
+
publicstructRequirementsHandleSubclassesToo:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalClass' to 'NormalProto' here; the conformance is declared as SPI}}
322
+
// expected-note@-1 {{in associated type 'Self.Assoc.Element' (inferred as 'SubclassOfNormalClass')}}
publicstructRequirementsHandleSpecializationsToo:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' in associated type 'Self.Assoc.Element' (inferred as 'ConditionalGenericStruct<NormalStruct>'); the conformance is declared as SPI}}
326
+
publicstructRequirementsHandleSpecializationsToo:SlightlyMoreComplicatedRequirement{ // expected-error {{cannot use conformance of 'NormalStruct' to 'NormalProto' here; the conformance is declared as SPI}}
327
+
// expected-note@-1 {{in associated type 'Self.Assoc.Element' (inferred as 'ConditionalGenericStruct<NormalStruct>')}}
publicstructClassConstrainedGenericArg<T:NormalClass>:PublicAssociatedTypeProto{ // expected-error {{cannot use conformance of 'NormalClass' to 'NormalProto' in associated type 'Self.Assoc' (inferred as 'T'); the conformance is declared as SPI}}
332
+
publicstructClassConstrainedGenericArg<T:NormalClass>:PublicAssociatedTypeProto{ // expected-error {{cannot use conformance of 'NormalClass' to 'NormalProto' here; the conformance is declared as SPI}}
333
+
// expected-note@-1 {{in associated type 'Self.Assoc' (inferred as 'T')}}
0 commit comments