Skip to content

Commit d61cef0

Browse files
dzharkovSpace Team
authored andcommitted
Fix deserialization exception for DNN types from Java
useCorrectedNullabilityForTypeParameters = true only might lead to something becomes a DNN when otherwise it wasn't. It seems safe to use it here, since if compiler has generated DNN, then it's OK to assume that it checked necessary conditions, and it's likely that it had useCorrectedNullabilityForTypeParameters = true as well, there. Anyway, it looks saner than having an exception here. Also, we assume here that metadata leading to exception might only be generated with ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated LF (at least, we don't have contradicting evidences), thus it's mostly a preparations in case we decide to enable ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated in 1.9. ^KT-55357 Fixed ^KT-55388 Related ^KT-36770 Related
1 parent ea33e72 commit d61cef0

File tree

6 files changed

+54
-1
lines changed

6 files changed

+54
-1
lines changed

compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// TARGET_BACKEND: JVM
2+
// JVM_TARGET: 1.8
3+
// LANGUAGE: +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
4+
// ISSUE: KT-55357
5+
6+
// MODULE: lib
7+
// FILE: J.java
8+
import org.jetbrains.annotations.NotNull;
9+
10+
public interface J {
11+
@NotNull
12+
<T> T foo();
13+
}
14+
15+
// FILE: JImpl.java
16+
public class JImpl implements J {
17+
public <T> T foo() {
18+
return (T) "OK";
19+
}
20+
}
21+
// FILE: a.kt
22+
class C(val x: J) : J by x
23+
24+
// MODULE: main(lib)
25+
// FILE: a.kt
26+
27+
fun box(): String {
28+
return C(JImpl()).foo<String>()
29+
}

compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/TypeDeserializer.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ class TypeDeserializer(
126126
else ->
127127
KotlinTypeFactory.simpleType(attributes, constructor, arguments, proto.nullable).let {
128128
if (Flags.DEFINITELY_NOT_NULL_TYPE.get(proto.flags))
129-
DefinitelyNotNullType.makeDefinitelyNotNull(it) ?: error("null DefinitelyNotNullType for '$it'")
129+
DefinitelyNotNullType.makeDefinitelyNotNull(it, useCorrectedNullabilityForTypeParameters = true)
130+
?: error("null DefinitelyNotNullType for '$it'")
130131
else
131132
it
132133
}

0 commit comments

Comments
 (0)