1616package j2kt ;
1717
1818import com .google .auto .value .AutoValue ;
19+ import org .jspecify .annotations .NullMarked ;
1920
21+ @ NullMarked
2022public final class VisibilityModifiers {
2123 public static class Public {
2224 public void publicMethod () {}
@@ -26,6 +28,19 @@ void packagePrivateMethod() {}
2628 protected void protectedMethod () {}
2729
2830 private void privateMethod () {}
31+
32+ // TODO(b/206898384): Re-enable once J2KT narrows visibility from referenced types.
33+ // public void publicWithPackagePrivateParameter(PackagePrivate param) {}
34+
35+ // public void publicWithTransitivePackagePrivateParameter(PackagePrivate.Public param) {}
36+
37+ // public PackagePrivate publicReturnsPackagePrivate() {
38+ // throw new UnsupportedOperationException();
39+ // }
40+
41+ // public <T extends PackagePrivate> void publicWithPackagePrivateTypeParameter(T param) {
42+ // throw new UnsupportedOperationException();
43+ // }
2944 }
3045
3146 static class PackagePrivate {
@@ -36,6 +51,8 @@ void packagePrivateMethod() {}
3651 protected void protectedMethod () {}
3752
3853 private void privateMethod () {}
54+
55+ static class Public {}
3956 }
4057
4158 protected static class Protected {
@@ -58,8 +75,35 @@ protected void protectedMethod() {}
5875 private void privateMethod () {}
5976 }
6077
78+ public static final class Parameterized {
79+ public static class PublicOfPublic <T extends Public > {
80+ public void publicMethod () {}
81+
82+ void packagePrivateMethod () {}
83+
84+ protected void protectedMethod () {}
85+
86+ private void privateMethod () {}
87+ }
88+
89+ // TODO(b/206898384): Re-enable once J2KT narrows visibility from referenced types.
90+ // public static class PublicOfPackagePrivate<T extends PackagePrivate> {
91+ // public void publicMethod() {}
92+ // void packagePrivateMethod() {}
93+ // protected void protectedMethod() {}
94+ // private void privateMethod() {}
95+ // }
96+
97+ // public static class PublicOfTransitivePackagePrivate<T extends PackagePrivate.Public> {
98+ // public void publicMethod() {}
99+ // void packagePrivateMethod() {}
100+ // protected void protectedMethod() {}
101+ // private void privateMethod() {}
102+ // }
103+ }
104+
61105 public static class ProtectedOverrideOfVisibilityWarningsSuppressed
62- extends VisibilityWarningsSuppressed .Public {
106+ extends VisibilityWarningsSuppressed .NonFinal . Public {
63107 @ Override
64108 protected void protectedMethod () {}
65109 }
@@ -88,64 +132,158 @@ abstract static class NotAutoEnumConverter_EnumConverter {}
88132
89133 @ SuppressWarnings ("j2kt:visibility" )
90134 public static class VisibilityWarningsSuppressed {
91- public static class Public {
92- public void publicMethod () {}
135+ public static final class NonFinal {
136+ public static class Public {
137+ public void publicMethod () {}
93138
94- void packagePrivateMethod () {}
139+ void packagePrivateMethod () {}
95140
96- protected void protectedMethod () {}
141+ protected void protectedMethod () {}
97142
98- private void privateMethod () {}
99- }
143+ private void privateMethod () {}
144+ }
100145
101- static class PackagePrivate {
102- public void publicMethod () {}
146+ static class PackagePrivate {
147+ public void publicMethod () {}
103148
104- void packagePrivateMethod () {}
149+ void packagePrivateMethod () {}
105150
106- protected void protectedMethod () {}
151+ protected void protectedMethod () {}
107152
108- private void privateMethod () {}
153+ private void privateMethod () {}
109154
110- public void publicWithPackagePrivateParameter (PackagePrivate param ) {}
155+ public void publicWithPackagePrivateParameter (PackagePrivate param ) {}
111156
112- public PackagePrivate publicReturnsPackagePrivate () {
113- throw new UnsupportedOperationException ();
157+ public void publicWithTransitivePackagePrivateParameter (PackagePrivate .Public param ) {}
158+
159+ public PackagePrivate publicReturnsPackagePrivate () {
160+ throw new UnsupportedOperationException ();
161+ }
162+
163+ public <T extends PackagePrivate > void publicWithPackagePrivateTypeParameter (T param ) {
164+ throw new UnsupportedOperationException ();
165+ }
166+
167+ public class Public {}
114168 }
115169
116- public <T extends PackagePrivate > void publicWithPackagePrivateTypeParameter (T param ) {
117- throw new UnsupportedOperationException ();
170+ protected static class Protected {
171+ public void publicMethod () {}
172+
173+ void packagePrivateMethod () {}
174+
175+ protected void protectedMethod () {}
176+
177+ private void privateMethod () {}
118178 }
119- }
120179
121- protected static class Protected {
122- public void publicMethod () {}
180+ private static class Private {
181+ public void publicMethod () {}
123182
124- void packagePrivateMethod () {}
183+ void packagePrivateMethod () {}
125184
126- protected void protectedMethod () {}
185+ protected void protectedMethod () {}
127186
128- private void privateMethod () {}
129- }
187+ private void privateMethod () {}
188+ }
130189
131- private static class Private {
132- public void publicMethod () {}
190+ public static class PublicExtendsPackagePrivate extends PackagePrivate {
191+ public void publicMethod () {}
133192
134- void packagePrivateMethod () {}
193+ void packagePrivateMethod () {}
135194
136- protected void protectedMethod () {}
195+ protected void protectedMethod () {}
137196
138- private void privateMethod () {}
197+ private void privateMethod () {}
198+ }
199+
200+ public static final class Parameterized {
201+ public static class PublicOfPublic <T extends Public > {
202+ public void publicMethod () {}
203+
204+ void packagePrivateMethod () {}
205+
206+ protected void protectedMethod () {}
207+
208+ private void privateMethod () {}
209+ }
210+
211+ public static class PublicOfPackagePrivate <T extends PackagePrivate > {
212+ public void publicMethod () {}
213+
214+ void packagePrivateMethod () {}
215+
216+ protected void protectedMethod () {}
217+
218+ private void privateMethod () {}
219+ }
220+
221+ public static class PublicOfTransitivePackagePrivate <T extends PackagePrivate .Public > {
222+ public void publicMethod () {}
223+
224+ void packagePrivateMethod () {}
225+
226+ protected void protectedMethod () {}
227+
228+ private void privateMethod () {}
229+ }
230+ }
139231 }
140232
141- public static class PublicExtendsPackagePrivate extends PackagePrivate {
142- public void publicMethod () {}
233+ public static final class Final {
234+ public static final class Public {
235+ public void publicMethod () {}
143236
144- void packagePrivateMethod () {}
237+ void packagePrivateMethod () {}
145238
146- protected void protectedMethod () {}
239+ protected void protectedMethod () {}
147240
148- private void privateMethod () {}
241+ private void privateMethod () {}
242+ }
243+
244+ static final class PackagePrivate {
245+ public void publicMethod () {}
246+
247+ void packagePrivateMethod () {}
248+
249+ protected void protectedMethod () {}
250+
251+ private void privateMethod () {}
252+
253+ public void publicWithPackagePrivateParameter (PackagePrivate param ) {}
254+
255+ public void publicWithTransitivePackagePrivateParameter (PackagePrivate .Public param ) {}
256+
257+ public PackagePrivate publicReturnsPackagePrivate () {
258+ throw new UnsupportedOperationException ();
259+ }
260+
261+ public <T extends PackagePrivate > void publicWithPackagePrivateTypeParameter (T param ) {
262+ throw new UnsupportedOperationException ();
263+ }
264+
265+ public final class Public {}
266+ }
267+
268+ protected static final class Protected {
269+ public void publicMethod () {}
270+
271+ void packagePrivateMethod () {}
272+
273+ protected void protectedMethod () {}
274+
275+ private void privateMethod () {}
276+ }
277+
278+ private static final class Private {
279+ public void publicMethod () {}
280+
281+ void packagePrivateMethod () {}
282+
283+ protected void protectedMethod () {}
284+
285+ private void privateMethod () {}
286+ }
149287 }
150288 }
151289}
0 commit comments