Skip to content

Commit 82ccf64

Browse files
committed
[Test] Add accepted extension use cases to access level on imports test
1 parent a636870 commit 82ccf64

File tree

1 file changed

+121
-6
lines changed

1 file changed

+121
-6
lines changed

test/Sema/access-level-import-classic-exportability.swift

Lines changed: 121 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,35 +58,150 @@ private import PrivateLib // expected-note 2 {{struct 'PrivateImportType' import
5858

5959
public protocol PublicConstrainedExtensionProto {}
6060
extension Array: PublicConstrainedExtensionProto where Element == PublicImportType {}
61+
extension PublicImportType {
62+
public func publicMethod() {}
63+
}
6164

65+
package protocol PublicConstrainedExtensionProtoInPackage {}
66+
extension Array: PublicConstrainedExtensionProtoInPackage where Element == PackageImportType {}
6267
extension PublicImportType {
63-
public func foo() {}
68+
package func packageMethod() {}
69+
}
70+
71+
internal protocol PublicConstrainedExtensionProtoInInternal {}
72+
extension Array: PublicConstrainedExtensionProtoInInternal where Element == PublicImportType {}
73+
extension PublicImportType {
74+
internal func internalMethod() {}
75+
}
76+
77+
fileprivate protocol PublicConstrainedExtensionProtoInFileprivate {}
78+
extension Array: PublicConstrainedExtensionProtoInFileprivate where Element == PublicImportType {}
79+
extension PublicImportType {
80+
fileprivate func fileprivateMethod() {}
81+
}
82+
83+
private protocol PublicConstrainedExtensionProtoInPrivate {}
84+
extension Array: PublicConstrainedExtensionProtoInPrivate where Element == PublicImportType {}
85+
extension PublicImportType {
86+
private func privateMethod() {}
6487
}
6588

6689
public protocol PackageConstrainedExtensionProto {}
6790
extension Array: PackageConstrainedExtensionProto where Element == PackageImportType {} // expected-error {{cannot use struct 'PackageImportType' in an extension with conditional conformances; 'PackageLib' was not imported publicly}}
68-
6991
extension PackageImportType { // expected-error {{cannot use struct 'PackageImportType' in an extension with public or '@usableFromInline' members; 'PackageLib' was not imported publicly}}
70-
public func foo() {}
92+
public func publicMethod() {}
93+
}
94+
95+
package protocol PackageConstrainedExtensionProtoInPackage {}
96+
extension Array: PackageConstrainedExtensionProtoInPackage where Element == PackageImportType {}
97+
extension PackageImportType {
98+
package func packageMethod() {}
99+
}
100+
101+
internal protocol PackageConstrainedExtensionProtoInInternal {}
102+
extension Array: PackageConstrainedExtensionProtoInInternal where Element == PackageImportType {}
103+
extension PackageImportType {
104+
internal func internalMethod() {}
105+
}
106+
107+
fileprivate protocol PackageConstrainedExtensionProtoInFileprivate {}
108+
extension Array: PackageConstrainedExtensionProtoInFileprivate where Element == PackageImportType {}
109+
extension PackageImportType {
110+
fileprivate func fileprivateMethod() {}
111+
}
112+
113+
private protocol PackageConstrainedExtensionProtoInPrivate {}
114+
extension Array: PackageConstrainedExtensionProtoInPrivate where Element == PackageImportType {}
115+
extension PackageImportType {
116+
private func privateMethod() {}
71117
}
72118

73119
public protocol InternalConstrainedExtensionProto {}
74120
extension Array: InternalConstrainedExtensionProto where Element == InternalImportType {} // expected-error {{cannot use struct 'InternalImportType' in an extension with conditional conformances; 'InternalLib' was not imported publicly}}
75-
76121
extension InternalImportType { // expected-error {{cannot use struct 'InternalImportType' in an extension with public or '@usableFromInline' members; 'InternalLib' was not imported publicly}}
77122
public func foo() {}
78123
}
79124

125+
package protocol InternalConstrainedExtensionProtoInPackage {}
126+
extension Array: InternalConstrainedExtensionProtoInPackage where Element == InternalImportType {}
127+
extension InternalImportType {
128+
package func packageMethod() {}
129+
}
130+
131+
internal protocol InternalConstrainedExtensionProtoInInternal {}
132+
extension Array: InternalConstrainedExtensionProtoInInternal where Element == InternalImportType {}
133+
extension InternalImportType {
134+
internal func internalMethod() {}
135+
}
136+
137+
fileprivate protocol InternalConstrainedExtensionProtoInFileprivate {}
138+
extension Array: InternalConstrainedExtensionProtoInFileprivate where Element == InternalImportType {}
139+
extension InternalImportType {
140+
fileprivate func fileprivateMethod() {}
141+
}
142+
143+
private protocol InternalConstrainedExtensionProtoInPrivate {}
144+
extension Array: InternalConstrainedExtensionProtoInPrivate where Element == InternalImportType {}
145+
extension InternalImportType {
146+
private func privateMethod() {}
147+
}
148+
80149
public protocol FileprivateConstrainedExtensionProto {}
81150
extension Array: FileprivateConstrainedExtensionProto where Element == FileprivateImportType {} // expected-error {{cannot use struct 'FileprivateImportType' in an extension with conditional conformances; 'FileprivateLib' was not imported publicly}}
82-
83151
extension FileprivateImportType { // expected-error {{cannot use struct 'FileprivateImportType' in an extension with public or '@usableFromInline' members; 'FileprivateLib' was not imported publicly}}
84152
public func foo() {}
85153
}
86154

155+
package protocol FileprivateConstrainedExtensionProtoInPackage {}
156+
extension Array: FileprivateConstrainedExtensionProtoInPackage where Element == FileprivateImportType {}
157+
extension FileprivateImportType {
158+
package func packageMethod() {}
159+
}
160+
161+
internal protocol FileprivateConstrainedExtensionProtoInInternal {}
162+
extension Array: FileprivateConstrainedExtensionProtoInInternal where Element == FileprivateImportType {}
163+
extension FileprivateImportType {
164+
internal func internalMethod() {}
165+
}
166+
167+
fileprivate protocol FileprivateConstrainedExtensionProtoInFileprivate {}
168+
extension Array: FileprivateConstrainedExtensionProtoInFileprivate where Element == FileprivateImportType {}
169+
extension FileprivateImportType {
170+
fileprivate func fileprivateMethod() {}
171+
}
172+
173+
private protocol FileprivateConstrainedExtensionProtoInPrivate {}
174+
extension Array: FileprivateConstrainedExtensionProtoInPrivate where Element == FileprivateImportType {}
175+
extension FileprivateImportType {
176+
private func privateMethod() {}
177+
}
178+
87179
public protocol PrivateConstrainedExtensionProto {}
88180
extension Array: PrivateConstrainedExtensionProto where Element == PrivateImportType {} // expected-error {{cannot use struct 'PrivateImportType' in an extension with conditional conformances; 'PrivateLib' was not imported publicly}}
89-
90181
extension PrivateImportType { // expected-error {{cannot use struct 'PrivateImportType' in an extension with public or '@usableFromInline' members; 'PrivateLib' was not imported publicly}}
91182
public func foo() {}
92183
}
184+
185+
package protocol PrivateConstrainedExtensionProtoInPackage {}
186+
extension Array: PrivateConstrainedExtensionProtoInPackage where Element == PrivateImportType {}
187+
extension PrivateImportType {
188+
package func packageMethod() {}
189+
}
190+
191+
internal protocol PrivateConstrainedExtensionProtoInInternal {}
192+
extension Array: PrivateConstrainedExtensionProtoInInternal where Element == PrivateImportType {}
193+
extension PrivateImportType {
194+
internal func internalMethod() {}
195+
}
196+
197+
fileprivate protocol PrivateConstrainedExtensionProtoInFileprivate {}
198+
extension Array: PrivateConstrainedExtensionProtoInFileprivate where Element == PrivateImportType {}
199+
extension PrivateImportType {
200+
fileprivate func fileprivateMethod() {}
201+
}
202+
203+
private protocol PrivateConstrainedExtensionProtoInPrivate {}
204+
extension Array: PrivateConstrainedExtensionProtoInPrivate where Element == PrivateImportType {}
205+
extension PrivateImportType {
206+
private func privateMethod() {}
207+
}

0 commit comments

Comments
 (0)