Skip to content

Commit 55cf0ed

Browse files
rlublecopybara-github
authored andcommitted
Rollforward: Create casts expressions with the nullability from the scope where they appear in.
In addition to the original cl, this cl makes JsDoc casts to be always to a nullable type to circumvent jscompiler error when casting null. PiperOrigin-RevId: 487953635
1 parent 5e8c52e commit 55cf0ed

File tree

16 files changed

+711
-437
lines changed

16 files changed

+711
-437
lines changed

transpiler/java/com/google/j2cl/transpiler/frontend/jdt/CompilationUnitBuilder.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -436,10 +436,12 @@ private BooleanLiteral convert(org.eclipse.jdt.core.dom.BooleanLiteral literal)
436436

437437
private CastExpression convert(org.eclipse.jdt.core.dom.CastExpression expression) {
438438
TypeDescriptor castTypeDescriptor =
439-
environment.createTypeDescriptor(expression.getType().resolveBinding());
439+
environment.createTypeDescriptor(
440+
expression.getType().resolveBinding(),
441+
getCurrentType().getDeclaration().isNullMarked());
440442
return CastExpression.newBuilder()
441443
.setExpression(convert(expression.getExpression()))
442-
.setCastTypeDescriptor(castTypeDescriptor)
444+
.setCastTypeDescriptor(castTypeDescriptor.toNullable())
443445
.build();
444446
}
445447

@@ -1426,7 +1428,6 @@ private Type createType(ITypeBinding typeBinding, ASTNode sourcePositionNode) {
14261428
type.setStatic(JdtEnvironment.isStatic(typeBinding));
14271429
return type;
14281430
}
1429-
14301431
}
14311432

14321433
private CompilationUnit buildCompilationUnit(

transpiler/javatests/com/google/j2cl/readable/java/cast/output_kt/CastGenerics.kt.txt

+6-6
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,31 @@ open class CastGenerics<T, E: Number?> {
2222

2323
open fun testCastToTypeVariable() {
2424
val o: Any? = Int(1)
25-
val e: E? = o as E
26-
val t: T? = o as T
25+
val e: E? = o as E?
26+
val t: T? = o as T?
2727
val es: Array<E>? = o as Array<E>?
2828
val ts: Array<T>? = o as Array<T>?
2929
}
3030

3131
open fun <S, V: Enum<V>> testCastToMethodTypeVariable() {
3232
val o: Any? = Int(1)
33-
val s: S? = o as S
33+
val s: S? = o as S?
3434
var c: Any? = o as CastGenerics<S, Number?>?
3535
c = o as Array<S>?
36-
c = o as V
36+
c = o as V?
3737
}
3838

3939
open fun <TT: Enum<*>> outerGenericMethod() {
4040
open class ___1Nested<SS> {
4141
fun nestedGenericMethod_private_2(o: Any?) {
42-
val t: TT? = o as TT
42+
val t: TT? = o as TT?
4343
}
4444
}
4545
}
4646

4747
open fun <EE> method(o: Any?): EE where EE: CastGenerics.Empty1?, EE: CastGenerics.Empty2<EE>? {
4848
if (o is CastGenerics.Empty1) {
49-
return o as EE
49+
return (o as EE?) as EE
5050
}
5151
return null as EE
5252
}

transpiler/javatests/com/google/j2cl/readable/java/intersectiontype/output_kt/IntersectionTypeTest.kt.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ open class IntersectionTypeTest<U> {
9898

9999
@JvmStatic
100100
fun <T> m_private_2(): T where T: IntersectionTypeTest.A?, T: IntersectionTypeTest.EmptyA? {
101-
return IntersectionTypeTest.get_private_2<Any?>(Any()) as T
101+
return (IntersectionTypeTest.get_private_2<Any?>(Any()) as T?) as T
102102
}
103103

104104
@JvmStatic

transpiler/javatests/com/google/j2cl/readable/java/nullability/defaultnotnullable/DefaultNotNullable.java

+12
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,18 @@ static void parametrizedDefaultNullabilityMethod(
299299
o.defaultNullability.length();
300300
}
301301

302+
public void casts() {
303+
List<String> listOfString = (List<String>) null;
304+
@Nullable List<String> nullableListOfString = (@Nullable List<String>) null;
305+
List<@Nullable String> listOfNullableString = (List<@Nullable String>) null;
306+
@Nullable List<@Nullable String> nullableListOfNullableString =
307+
(@Nullable List<@Nullable String>) null;
308+
@JsNonNull List<String> nonNullListOfString = (@JsNonNull List<String>) null;
309+
List<@JsNonNull String> listOfNonNullString = (List<@JsNonNull String>) null;
310+
@JsNonNull
311+
List<@JsNonNull String> nonNullListOfNonNullString = (@JsNonNull List<@JsNonNull String>) null;
312+
}
313+
302314
// Wildcards
303315
static void testListOfWildcard(List<?> l) {}
304316

transpiler/javatests/com/google/j2cl/readable/java/nullability/defaultnullable/DefaultNullable.java

+12
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,18 @@ static void parametrizedDefaultNullabilityMethod(
279279
o.defaultNullability.length();
280280
}
281281

282+
public void casts() {
283+
List<String> listOfString = (List<String>) null;
284+
@Nullable List<String> nullableListOfString = (@Nullable List<String>) null;
285+
List<@Nullable String> listOfNullableString = (List<@Nullable String>) null;
286+
@Nullable List<@Nullable String> nullableListOfNullableString =
287+
(@Nullable List<@Nullable String>) null;
288+
@JsNonNull List<String> nonNullListOfString = (@JsNonNull List<String>) null;
289+
List<@JsNonNull String> listOfNonNullString = (List<@JsNonNull String>) null;
290+
@JsNonNull
291+
List<@JsNonNull String> nonNullListOfNonNullString = (@JsNonNull List<@JsNonNull String>) null;
292+
}
293+
282294
// Wildcards
283295
static void testListOfWildcard(List<?> l) {}
284296

transpiler/javatests/com/google/j2cl/readable/java/nullability/explicitnotnullable/ExplicitNotNullable.java

+12
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,18 @@ static void parametrizedDefaultNullabilityMethod(
296296
o.defaultNullability.length();
297297
}
298298

299+
public void casts() {
300+
List<String> listOfString = (List<String>) null;
301+
@Nullable List<String> nullableListOfString = (@Nullable List<String>) null;
302+
List<@Nullable String> listOfNullableString = (List<@Nullable String>) null;
303+
@Nullable List<@Nullable String> nullableListOfNullableString =
304+
(@Nullable List<@Nullable String>) null;
305+
@JsNonNull List<String> nonNullListOfString = (@JsNonNull List<String>) null;
306+
List<@JsNonNull String> listOfNonNullString = (List<@JsNonNull String>) null;
307+
@JsNonNull
308+
List<@JsNonNull String> nonNullListOfNonNullString = (@JsNonNull List<@JsNonNull String>) null;
309+
}
310+
299311
// Wildcards
300312
static void testListOfWildcard(List<?> l) {}
301313

transpiler/javatests/com/google/j2cl/readable/java/nullability/output_closure/defaultnotnullable/DefaultNotNullable.impl.java.js.txt

+11-1
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,16 @@ class DefaultNotNullable extends j_l_Object {
173173
j_l_String.m_length__java_lang_String__int(/**@type {string}*/ ($Casts.$to(o.f_defaultNullability__nullability_defaultnotnullable_DefaultNotNullable_ParameterizedDefaultNullability, j_l_String)));
174174
}
175175
/** @nodts */
176+
m_casts__void() {
177+
let listOfString = /**@type {List<string>}*/ (null);
178+
let nullableListOfString = /**@type {List<string>}*/ (null);
179+
let listOfNullableString = /**@type {List<?string>}*/ (null);
180+
let nullableListOfNullableString = /**@type {List<?string>}*/ (null);
181+
let nonNullListOfString = /**@type {List<string>}*/ (null);
182+
let listOfNonNullString = /**@type {List<string>}*/ (null);
183+
let nonNullListOfNonNullString = /**@type {List<string>}*/ (null);
184+
}
185+
/** @nodts */
176186
static m_testListOfWildcard__java_util_List__void(/** !List<?> */ l) {
177187
DefaultNotNullable.$clinit();
178188
}
@@ -281,7 +291,7 @@ class DefaultNotNullable extends j_l_Object {
281291
/** @nodts */
282292
static m_testLocalNullability__void() {
283293
DefaultNotNullable.$clinit();
284-
let stringConsumer = /**@type {Consumer<?string>}*/ (null);
294+
let stringConsumer = /**@type {Consumer<string>}*/ (null);
285295
let nullableStringConsumer = /**@type {Consumer<?string>}*/ (null);
286296
let nonNullStringConsumer = /**@type {Consumer<string>}*/ (null);
287297
let b = Consumer.$isInstance(null);

transpiler/javatests/com/google/j2cl/readable/java/nullability/output_closure/defaultnotnullable/DefaultNotNullable.js.mappings.txt

+18-1
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,23 @@
184184
[o.nullable.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {?string}*/ ($Casts.$to(o.f_nullable__nullability_defaultnotnullable_DefaultNotNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.defaultnotnullable.DefaultNotNullable.parametrizedDefaultNullabilityMethod"
185185
[o.nonNullable.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {string}*/ ($Casts.$to(o.f_nonNullable__nullability_defaultnotnullable_DefaultNotNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.defaultnotnullable.DefaultNotNullable.parametrizedDefaultNullabilityMethod"
186186
[o.defaultNullability.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {string}*/ ($Casts.$to(o.f_defaultNullability__nullability_defaultnotnullable_DefaultNotNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.defaultnotnullable.DefaultNotNullable.parametrizedDefaultNullabilityMethod"
187+
[casts] => [m_casts__void]
188+
[List<String> listOfString = (List<String>) null;] => [let listOfString = /**@type {List<string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.casts"
189+
[listOfString] => [listOfString] "listOfString"
190+
[@Nullable List<String> nullableListOfString = (@Nullable List<String>) null;] => [let nullableListOfString = /**@type {List<string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.casts"
191+
[nullableListOfString] => [nullableListOfString] "nullableListOfString"
192+
[List<@Nullable String> listOfNullableString = (List<@Nullable String>) null;] => [let listOfNullableString = /**@type {List<?string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.casts"
193+
[listOfNullableString] => [listOfNullableString] "listOfNullableString"
194+
[@Nullable List<@Nullable String> nullableListOfNullableString =
195+
(@Nullable List<@Nullable String>) null;] => [let nullableListOfNullableString = /**@type {List<?string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.casts"
196+
[nullableListOfNullableString] => [nullableListOfNullableString] "nullableListOfNullableString"
197+
[@JsNonNull List<String> nonNullListOfString = (@JsNonNull List<String>) null;] => [let nonNullListOfString = /**@type {List<string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.casts"
198+
[nonNullListOfString] => [nonNullListOfString] "nonNullListOfString"
199+
[List<@JsNonNull String> listOfNonNullString = (List<@JsNonNull String>) null;] => [let listOfNonNullString = /**@type {List<string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.casts"
200+
[listOfNonNullString] => [listOfNonNullString] "listOfNonNullString"
201+
[@JsNonNull
202+
List<@JsNonNull String> nonNullListOfNonNullString = (@JsNonNull List<@JsNonNull String>) null;] => [let nonNullListOfNonNullString = /**@type {List<string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.casts"
203+
[nonNullListOfNonNullString] => [nonNullListOfNonNullString] "nonNullListOfNonNullString"
187204
[testListOfWildcard] => [m_testListOfWildcard__java_util_List__void]
188205
[l] => [l] "l"
189206
[{}] => [DefaultNotNullable.$clinit();] "nullability.defaultnotnullable.DefaultNotNullable.testListOfWildcard"
@@ -301,7 +318,7 @@
301318
Consumer<String> stringConsumer = (Consumer<String>) null;
302319
... boolean b = null instanceof Consumer<?>;
303320
}] => [DefaultNotNullable.$clinit();] "nullability.defaultnotnullable.DefaultNotNullable.testLocalNullability"
304-
[Consumer<String> stringConsumer = (Consumer<String>) null;] => [let stringConsumer = /**@type {Consumer<?string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.testLocalNullability"
321+
[Consumer<String> stringConsumer = (Consumer<String>) null;] => [let stringConsumer = /**@type {Consumer<string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.testLocalNullability"
305322
[stringConsumer] => [stringConsumer] "stringConsumer"
306323
[Consumer<@Nullable String> nullableStringConsumer = (Consumer<@Nullable String>) null;] => [let nullableStringConsumer = /**@type {Consumer<?string>}*/ (null);] "nullability.defaultnotnullable.DefaultNotNullable.testLocalNullability"
307324
[nullableStringConsumer] => [nullableStringConsumer] "nullableStringConsumer"

transpiler/javatests/com/google/j2cl/readable/java/nullability/output_closure/defaultnullable/DefaultNullable.impl.java.js.txt

+10
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,16 @@ class DefaultNullable extends j_l_Object {
176176
j_l_String.m_length__java_lang_String__int(/**@type {?string}*/ ($Casts.$to(o.f_defaultNullability__nullability_defaultnullable_DefaultNullable_ParameterizedDefaultNullability, j_l_String)));
177177
}
178178
/** @nodts */
179+
m_casts__void() {
180+
let listOfString = /**@type {List<?string>}*/ (null);
181+
let nullableListOfString = /**@type {List<?string>}*/ (null);
182+
let listOfNullableString = /**@type {List<?string>}*/ (null);
183+
let nullableListOfNullableString = /**@type {List<?string>}*/ (null);
184+
let nonNullListOfString = /**@type {List<?string>}*/ (null);
185+
let listOfNonNullString = /**@type {List<string>}*/ (null);
186+
let nonNullListOfNonNullString = /**@type {List<string>}*/ (null);
187+
}
188+
/** @nodts */
179189
static m_testListOfWildcard__java_util_List__void(/** List<?> */ l) {
180190
DefaultNullable.$clinit();
181191
}

transpiler/javatests/com/google/j2cl/readable/java/nullability/output_closure/defaultnullable/DefaultNullable.js.mappings.txt

+17
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,23 @@
184184
[o.nullable.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {?string}*/ ($Casts.$to(o.f_nullable__nullability_defaultnullable_DefaultNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.defaultnullable.DefaultNullable.parametrizedDefaultNullabilityMethod"
185185
[o.nonNullable.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {string}*/ ($Casts.$to(o.f_nonNullable__nullability_defaultnullable_DefaultNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.defaultnullable.DefaultNullable.parametrizedDefaultNullabilityMethod"
186186
[o.defaultNullability.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {?string}*/ ($Casts.$to(o.f_defaultNullability__nullability_defaultnullable_DefaultNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.defaultnullable.DefaultNullable.parametrizedDefaultNullabilityMethod"
187+
[casts] => [m_casts__void]
188+
[List<String> listOfString = (List<String>) null;] => [let listOfString = /**@type {List<?string>}*/ (null);] "nullability.defaultnullable.DefaultNullable.casts"
189+
[listOfString] => [listOfString] "listOfString"
190+
[@Nullable List<String> nullableListOfString = (@Nullable List<String>) null;] => [let nullableListOfString = /**@type {List<?string>}*/ (null);] "nullability.defaultnullable.DefaultNullable.casts"
191+
[nullableListOfString] => [nullableListOfString] "nullableListOfString"
192+
[List<@Nullable String> listOfNullableString = (List<@Nullable String>) null;] => [let listOfNullableString = /**@type {List<?string>}*/ (null);] "nullability.defaultnullable.DefaultNullable.casts"
193+
[listOfNullableString] => [listOfNullableString] "listOfNullableString"
194+
[@Nullable List<@Nullable String> nullableListOfNullableString =
195+
(@Nullable List<@Nullable String>) null;] => [let nullableListOfNullableString = /**@type {List<?string>}*/ (null);] "nullability.defaultnullable.DefaultNullable.casts"
196+
[nullableListOfNullableString] => [nullableListOfNullableString] "nullableListOfNullableString"
197+
[@JsNonNull List<String> nonNullListOfString = (@JsNonNull List<String>) null;] => [let nonNullListOfString = /**@type {List<?string>}*/ (null);] "nullability.defaultnullable.DefaultNullable.casts"
198+
[nonNullListOfString] => [nonNullListOfString] "nonNullListOfString"
199+
[List<@JsNonNull String> listOfNonNullString = (List<@JsNonNull String>) null;] => [let listOfNonNullString = /**@type {List<string>}*/ (null);] "nullability.defaultnullable.DefaultNullable.casts"
200+
[listOfNonNullString] => [listOfNonNullString] "listOfNonNullString"
201+
[@JsNonNull
202+
List<@JsNonNull String> nonNullListOfNonNullString = (@JsNonNull List<@JsNonNull String>) null;] => [let nonNullListOfNonNullString = /**@type {List<string>}*/ (null);] "nullability.defaultnullable.DefaultNullable.casts"
203+
[nonNullListOfNonNullString] => [nonNullListOfNonNullString] "nonNullListOfNonNullString"
187204
[testListOfWildcard] => [m_testListOfWildcard__java_util_List__void]
188205
[l] => [l] "l"
189206
[{}] => [DefaultNullable.$clinit();] "nullability.defaultnullable.DefaultNullable.testListOfWildcard"

transpiler/javatests/com/google/j2cl/readable/java/nullability/output_closure/explicitnotnullable/ExplicitNotNullable.impl.java.js.txt

+11-1
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,16 @@ class ExplicitNotNullable extends j_l_Object {
210210
j_l_String.m_length__java_lang_String__int(/**@type {string}*/ ($Casts.$to(o.f_defaultNullability__nullability_explicitnotnullable_ExplicitNotNullable_ParameterizedDefaultNullability, j_l_String)));
211211
}
212212
/** @nodts */
213+
m_casts__void() {
214+
let listOfString = /**@type {List<string>}*/ (null);
215+
let nullableListOfString = /**@type {List<string>}*/ (null);
216+
let listOfNullableString = /**@type {List<?string>}*/ (null);
217+
let nullableListOfNullableString = /**@type {List<?string>}*/ (null);
218+
let nonNullListOfString = /**@type {List<string>}*/ (null);
219+
let listOfNonNullString = /**@type {List<string>}*/ (null);
220+
let nonNullListOfNonNullString = /**@type {List<string>}*/ (null);
221+
}
222+
/** @nodts */
213223
static m_testListOfWildcard__java_util_List__void(/** !List<?> */ l) {
214224
ExplicitNotNullable.$clinit();
215225
}
@@ -323,7 +333,7 @@ class ExplicitNotNullable extends j_l_Object {
323333
/** @nodts */
324334
static m_testLocalNullability__void() {
325335
ExplicitNotNullable.$clinit();
326-
let stringConsumer = /**@type {Consumer<?string>}*/ (null);
336+
let stringConsumer = /**@type {Consumer<string>}*/ (null);
327337
let nullableStringConsumer = /**@type {Consumer<?string>}*/ (null);
328338
let nonNullStringConsumer = /**@type {Consumer<string>}*/ (null);
329339
let b = Consumer.$isInstance(null);

transpiler/javatests/com/google/j2cl/readable/java/nullability/output_closure/explicitnotnullable/ExplicitNotNullable.js.mappings.txt

+18-1
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,23 @@
229229
[o.nullable.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {?string}*/ ($Casts.$to(o.f_nullable__nullability_explicitnotnullable_ExplicitNotNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.explicitnotnullable.ExplicitNotNullable.parametrizedDefaultNullabilityMethod"
230230
[o.nonNullable.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {string}*/ ($Casts.$to(o.f_nonNullable__nullability_explicitnotnullable_ExplicitNotNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.explicitnotnullable.ExplicitNotNullable.parametrizedDefaultNullabilityMethod"
231231
[o.defaultNullability.length();] => [j_l_String.m_length__java_lang_String__int(/**@type {string}*/ ($Casts.$to(o.f_defaultNullability__nullability_explicitnotnullable_ExplicitNotNullable_ParameterizedDefaultNullability, j_l_String)));] "nullability.explicitnotnullable.ExplicitNotNullable.parametrizedDefaultNullabilityMethod"
232+
[casts] => [m_casts__void]
233+
[List<String> listOfString = (List<String>) null;] => [let listOfString = /**@type {List<string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.casts"
234+
[listOfString] => [listOfString] "listOfString"
235+
[@Nullable List<String> nullableListOfString = (@Nullable List<String>) null;] => [let nullableListOfString = /**@type {List<string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.casts"
236+
[nullableListOfString] => [nullableListOfString] "nullableListOfString"
237+
[List<@Nullable String> listOfNullableString = (List<@Nullable String>) null;] => [let listOfNullableString = /**@type {List<?string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.casts"
238+
[listOfNullableString] => [listOfNullableString] "listOfNullableString"
239+
[@Nullable List<@Nullable String> nullableListOfNullableString =
240+
(@Nullable List<@Nullable String>) null;] => [let nullableListOfNullableString = /**@type {List<?string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.casts"
241+
[nullableListOfNullableString] => [nullableListOfNullableString] "nullableListOfNullableString"
242+
[@JsNonNull List<String> nonNullListOfString = (@JsNonNull List<String>) null;] => [let nonNullListOfString = /**@type {List<string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.casts"
243+
[nonNullListOfString] => [nonNullListOfString] "nonNullListOfString"
244+
[List<@JsNonNull String> listOfNonNullString = (List<@JsNonNull String>) null;] => [let listOfNonNullString = /**@type {List<string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.casts"
245+
[listOfNonNullString] => [listOfNonNullString] "listOfNonNullString"
246+
[@JsNonNull
247+
List<@JsNonNull String> nonNullListOfNonNullString = (@JsNonNull List<@JsNonNull String>) null;] => [let nonNullListOfNonNullString = /**@type {List<string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.casts"
248+
[nonNullListOfNonNullString] => [nonNullListOfNonNullString] "nonNullListOfNonNullString"
232249
[testListOfWildcard] => [m_testListOfWildcard__java_util_List__void]
233250
[l] => [l] "l"
234251
[{}] => [ExplicitNotNullable.$clinit();] "nullability.explicitnotnullable.ExplicitNotNullable.testListOfWildcard"
@@ -341,7 +358,7 @@
341358
Consumer<String> stringConsumer = (Consumer<String>) null;
342359
... boolean b = null instanceof Consumer<?>;
343360
}] => [ExplicitNotNullable.$clinit();] "nullability.explicitnotnullable.ExplicitNotNullable.testLocalNullability"
344-
[Consumer<String> stringConsumer = (Consumer<String>) null;] => [let stringConsumer = /**@type {Consumer<?string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.testLocalNullability"
361+
[Consumer<String> stringConsumer = (Consumer<String>) null;] => [let stringConsumer = /**@type {Consumer<string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.testLocalNullability"
345362
[stringConsumer] => [stringConsumer] "stringConsumer"
346363
[Consumer<@Nullable String> nullableStringConsumer = (Consumer<@Nullable String>) null;] => [let nullableStringConsumer = /**@type {Consumer<?string>}*/ (null);] "nullability.explicitnotnullable.ExplicitNotNullable.testLocalNullability"
347364
[nullableStringConsumer] => [nullableStringConsumer] "nullableStringConsumer"

0 commit comments

Comments
 (0)