[FIR] Add REDUNDANT_NULLABLE diagnostics

This commit is contained in:
Ivan Kochurkin
2021-11-19 16:21:51 +03:00
committed by TeamCityServer
parent 4caf3c5e83
commit 51b73bb6ae
37 changed files with 233 additions and 87 deletions
@@ -1,6 +1,7 @@
// WITH_EXTENDED_CHECKERS
interface A<T> {}
interface B<T> {}
interface C<T> {}
interface D<T> {}
interface Test : A<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>in<!> Int>, B<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>out<!> Int>, C<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>>??<!NULLABLE_SUPERTYPE!>?<!>, D<Int> {}
interface Test : A<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>in<!> Int>, B<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>out<!> Int>, C<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>>?<!REDUNDANT_NULLABLE!>?<!NULLABLE_SUPERTYPE!>?<!><!>, D<Int> {}
@@ -1,4 +0,0 @@
interface B<T>
class G<T>: B<T>
fun f(b: B<String>?) = b is G??
@@ -1,3 +1,5 @@
// FIR_IDENTICAL
// WITH_EXTENDED_CHECKERS
interface B<T>
class G<T>: B<T>
@@ -1,13 +0,0 @@
fun <NN: Any, NNN: NN> nonMisleadingNullable(
nn: NN?,
nnn: NNN?
) {}
fun <T, N: T, INDIRECT: N> misleadingNullableSimple(
t: T?,
t2: T?,
n: N?,
ind: INDIRECT?
) {}
fun <T> interactionWithRedundant(t: T??) {}
@@ -1,3 +1,5 @@
// FIR_IDENTICAL
// WITH_EXTENDED_CHECKERS
fun <NN: Any, NNN: NN> nonMisleadingNullable(
nn: NN?,
nnn: NNN?
@@ -1,9 +1,10 @@
// WITH_EXTENDED_CHECKERS
class Generic<T>
fun redundantNullable(
i: Int??,
three: Int???,
gOut: Generic<Int>??,
gIn: Generic<Int??>
i: Int?<!REDUNDANT_NULLABLE!>?<!>,
three: Int?<!REDUNDANT_NULLABLE!>??<!>,
gOut: Generic<Int>?<!REDUNDANT_NULLABLE!>?<!>,
gIn: Generic<Int?<!REDUNDANT_NULLABLE!>?<!>>
) {
}
@@ -1,9 +1,10 @@
// WITH_EXTENDED_CHECKERS
interface A
interface X: A?<!NULLABLE_SUPERTYPE!>?<!> {
interface X: A?<!NULLABLE_SUPERTYPE, REDUNDANT_NULLABLE!>?<!> {
}
fun <T> interaction(t: T) {
if (t == null) {}
}
}
@@ -1,19 +0,0 @@
@Target(AnnotationTarget.TYPE)
annotation class Ann
typealias TString = String
typealias TNString = TString?
typealias TNAString = @Ann TString?
val test1: TNString = TODO()
val test2: TNAString = TODO()
val test3: List<TNString> = TODO()
val test4: List<TNAString> = TODO()
val test5: List<TNString?> = TODO()
val test6: () -> List<TNString> = TODO()
fun test(x: TNString) {
x<!UNSAFE_CALL!>.<!>hashCode()
}
@@ -1,3 +1,5 @@
// FIR_IDENTICAL
// WITH_EXTENDED_CHECKERS
@Target(AnnotationTarget.TYPE)
annotation class Ann