File tree Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -629,6 +629,9 @@ class InheritedProtocolCollector {
629
629
return ;
630
630
}
631
631
632
+ if (!isPublicOrUsableFromInline (nominal))
633
+ return ;
634
+
632
635
map[nominal].recordProtocols (directlyInherited);
633
636
634
637
// Recurse to find any nested types.
@@ -647,6 +650,9 @@ class InheritedProtocolCollector {
647
650
return ;
648
651
649
652
const NominalTypeDecl *nominal = extension->getExtendedNominal ();
653
+ if (!isPublicOrUsableFromInline (nominal))
654
+ return ;
655
+
650
656
map[nominal].recordConditionalConformances (extension->getInherited ());
651
657
// No recursion here because extensions are never nested.
652
658
}
Original file line number Diff line number Diff line change 3
3
// RUN: %FileCheck -check-prefix CHECK-END %s < %t.swiftinterface
4
4
// RUN: %FileCheck -check-prefix NEGATIVE %s < %t.swiftinterface
5
5
6
+ // NEGATIVE-NOT: BAD
7
+
6
8
// CHECK-LABEL: public protocol SimpleProto {
7
9
public protocol SimpleProto {
8
10
// CHECK: associatedtype Element
@@ -165,6 +167,20 @@ extension MultiGeneric: PublicProto where U: PrivateProto {}
165
167
// CHECK: public struct MultiGeneric<T, U, V> {
166
168
// CHECK-END: extension conformances.MultiGeneric : PublicProto where T : _ConstraintThatIsNotPartOfTheAPIOfThisLibrary {}
167
169
170
+ internal struct InternalImpl_BAD : PrivateSubProto { }
171
+ internal struct InternalImplConstrained_BAD < T> { }
172
+ extension InternalImplConstrained_BAD : PublicProto where T: PublicProto { }
173
+ internal struct InternalImplConstrained2_BAD < T> { }
174
+ extension InternalImplConstrained2_BAD : PublicProto where T: PrivateProto { }
175
+
176
+ public struct WrapperForInternal {
177
+ internal struct InternalImpl_BAD : PrivateSubProto { }
178
+ internal struct InternalImplConstrained_BAD < T> { }
179
+ internal struct InternalImplConstrained2_BAD < T> { }
180
+ }
181
+ extension WrapperForInternal . InternalImplConstrained_BAD : PublicProto where T: PublicProto { }
182
+ extension WrapperForInternal . InternalImplConstrained2_BAD : PublicProto where T: PrivateProto { }
183
+
168
184
169
185
// CHECK-END: @usableFromInline
170
186
// CHECK-END-NEXT: internal protocol _ConstraintThatIsNotPartOfTheAPIOfThisLibrary {}
You can’t perform that action at this time.
0 commit comments