Skip to content

Commit 2bf563f

Browse files
Googlercopybara-github
authored andcommitted
[J2KT] Extend VisibilityModifiers.java readables with new cases.
It includes: - generic type declarations with bounds of narrower visibility, - methods referencing types with narrower visibility. PiperOrigin-RevId: 927320288
1 parent d110d7a commit 2bf563f

5 files changed

Lines changed: 474 additions & 83 deletions

File tree

transpiler/javatests/com/google/j2cl/readable/java/j2kt/VisibilityModifiers.java

Lines changed: 172 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
package j2kt;
1717

1818
import com.google.auto.value.AutoValue;
19+
import org.jspecify.annotations.NullMarked;
1920

21+
@NullMarked
2022
public 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
}

transpiler/javatests/com/google/j2cl/readable/java/j2kt/output_kt/AutoValue_VisibilityModifiers_Value.kt.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ internal class AutoValue_VisibilityModifiers_Value: Value {
4949
}
5050

5151
internal class Builder: j2kt.VisibilityModifiers.Value.Builder() {
52-
override fun build_pp_j2kt(): Value? {
52+
override fun build_pp_j2kt(): Value {
5353
return AutoValue_VisibilityModifiers_Value()
5454
}
5555
}

0 commit comments

Comments
 (0)