Improve warnings related to type parameter bounds nullability

Explicitly supply the type parameter that needs to be non-nullified

^KT-36770 Relates
This commit is contained in:
Denis.Zharkov
2022-01-10 13:18:29 +03:00
parent 1827165716
commit d87eddaf8b
11 changed files with 88 additions and 30 deletions
@@ -0,0 +1,15 @@
/main.kt:22:11: warning: type parameter 'V' has nullable upper bounds while non-nullable version is expected. This warning will become an error soon. See https://youtrack.jetbrains.com/issue/KT-36770 for details
takeV(value)
^
/main.kt:23:15: warning: type parameter 'V' has nullable upper bounds while non-nullable version is expected. This warning will become an error soon. See https://youtrack.jetbrains.com/issue/KT-36770 for details
takeVList(l)
^
/main.kt:25:11: warning: type parameter 'V' has nullable upper bounds while non-nullable version is expected. This warning will become an error soon. See https://youtrack.jetbrains.com/issue/KT-36770 for details
takeE(value)
^
/main.kt:26:15: warning: type parameter 'V' has nullable upper bounds while non-nullable version is expected. This warning will become an error soon. See https://youtrack.jetbrains.com/issue/KT-36770 for details
takeEList(l)
^
/main.kt:27:11: warning: type parameter 'V' has nullable upper bounds while non-nullable version is expected. This warning will become an error soon. See https://youtrack.jetbrains.com/issue/KT-36770 for details
takeE(id(value))
^
@@ -1,5 +1,6 @@
// !SKIP_JAVAC
// !LANGUAGE: -ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !RENDER_DIAGNOSTICS_FULL_TEXT
// FILE: SLRUMap.java
import org.jetbrains.annotations.NotNull;
@@ -1,5 +1,6 @@
// !SKIP_JAVAC
// !LANGUAGE: -ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !RENDER_DIAGNOSTICS_FULL_TEXT
// FILE: SLRUMap.java
import org.jetbrains.annotations.NotNull;
@@ -0,0 +1,12 @@
/main.kt:23:5: warning: type parameter 'X' has nullable upper bound, so override has incorrect signature comparing with a base member with NotNull annotation. Please add a non-nullable upper bound (e.g. Any) to the type parameter. See https://kotlinlang.org/docs/generics.html#upper-bounds for more details
override fun takeV(x: X)
^
/main.kt:24:5: warning: type parameter 'E1' has nullable upper bound, so override has incorrect signature comparing with a base member with NotNull annotation. Please add a non-nullable upper bound (e.g. Any) to the type parameter. See https://kotlinlang.org/docs/generics.html#upper-bounds for more details
override fun <E1> takeE(e: E1)
^
/main.kt:26:5: warning: type parameter 'X' has nullable upper bound, so override has incorrect signature comparing with a base member with NotNull annotation. Please add a non-nullable upper bound (e.g. Any) to the type parameter. See https://kotlinlang.org/docs/generics.html#upper-bounds for more details
override fun takeVList(l: List<X>)
^
/main.kt:27:5: warning: type parameter 'E2' has nullable upper bound, so override has incorrect signature comparing with a base member with NotNull annotation. Please add a non-nullable upper bound (e.g. Any) to the type parameter. See https://kotlinlang.org/docs/generics.html#upper-bounds for more details
override fun <E2> takeEList(l2: List<E2>)
^
@@ -1,6 +1,7 @@
// !SKIP_JAVAC
// !LANGUAGE: -ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !LANGUAGE: +DefinitelyNonNullableTypes
// !RENDER_DIAGNOSTICS_FULL_TEXT
// FILE: SLRUMap.java
import org.jetbrains.annotations.NotNull;
@@ -1,6 +1,7 @@
// !SKIP_JAVAC
// !LANGUAGE: -ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !LANGUAGE: +DefinitelyNonNullableTypes
// !RENDER_DIAGNOSTICS_FULL_TEXT
// FILE: SLRUMap.java
import org.jetbrains.annotations.NotNull;
@@ -19,11 +20,11 @@ public interface SLRUMap<V> {
// FILE: main.kt
interface Q1<X> : SLRUMap<X> {
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun takeV(x: X)
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun <E1> takeE(e: E1)
<!WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE("X")!>override<!> fun takeV(x: X)
<!WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE("E1")!>override<!> fun <E1> takeE(e: E1)
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun takeVList(l: List<X>)
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun <E2> takeEList(l2: List<E2>)
<!WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun takeVList(l: List<X>)
<!WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun <E2> takeEList(l2: List<E2>)
override fun <K2> id(k2: K2): K2
}
@@ -18,11 +18,11 @@ public interface SLRUMap<V> {
// FILE: main.kt
interface Q1<X> : SLRUMap<X> {
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun takeV(x: X)
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun <E1> takeE(e: E1)
<!WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun takeV(x: X)
<!WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun <E1> takeE(e: E1)
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun takeVList(l: List<X>)
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun <E2> takeEList(l2: List<E2>)
<!WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun takeVList(l: List<X>)
<!WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun <E2> takeEList(l2: List<E2>)
override fun <K2> id(k2: K2): K2
}