[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 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_VARIABLE
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// TESTCASE NUMBER: 1
fun case_1(x: Any?) {
@@ -108,7 +109,7 @@ fun case_8(x: TypealiasNullableString) {
}
// TESTCASE NUMBER: 9
fun case_9(x: TypealiasNullableString?) {
fun case_9(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>) {
if (<!SENSELESS_COMPARISON!>x === null === null<!>) {
} else if (<!USELESS_IS_CHECK!>false is Boolean<!>) {
@@ -138,7 +139,7 @@ fun case_10() {
}
// TESTCASE NUMBER: 11
fun case_11(x: TypealiasNullableStringIndirect?, y: TypealiasNullableStringIndirect) {
fun case_11(x: TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!>, y: TypealiasNullableStringIndirect) {
val t: TypealiasNullableStringIndirect = null
if (<!EQUALITY_NOT_APPLICABLE!>x == null is Boolean<!>) {
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNREACHABLE_CODE
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// TESTCASE NUMBER: 1
fun case_1(x: Nothing?) {
@@ -68,7 +69,7 @@ fun case_8(x: Nothing?) {
// TESTCASE NUMBER: 9
fun case_9(x: Nothing?) {
if (!!(<!USELESS_IS_CHECK!>x !is TypealiasNullableStringIndirect?<!>)) else {
if (!!(<!USELESS_IS_CHECK!>x !is TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!><!>)) else {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing?")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Nothing?")!>x<!>?.<!UNRESOLVED_REFERENCE!>length<!>
}
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// TESTCASE NUMBER: 1
fun case_1(x: Any?) {
@@ -70,8 +71,8 @@ fun case_8(x: Any?) {
// TESTCASE NUMBER: 9
fun case_9(x: Any?) {
if (!!!(x !is TypealiasNullableStringIndirect?)) else {
if (!(x !is TypealiasNullableStringIndirect?)) else {
if (!!!(x !is TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!>)) else {
if (!(x !is TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!>)) else {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>?.<!UNRESOLVED_REFERENCE!>get<!>(0)
}
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
// TODO: https://youtrack.jetbrains.com/issue/KT-49862
/*
* KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE)
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// TESTCASE NUMBER: 1
fun case_1(x: Any?) {
@@ -68,7 +69,7 @@ fun case_8(x: Any?) {
// TESTCASE NUMBER: 9
fun case_9(x: Any?) {
if (!!(x !is TypealiasNullableStringIndirect?)) else {
if (!!(x !is TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!>)) else {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & TypealiasNullableStringIndirect?")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & TypealiasNullableStringIndirect?")!>x<!>?.get(0)
}
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// TESTCASE NUMBER: 1
fun case_1(x: Any?) {
@@ -80,7 +81,7 @@ fun case_8(x: Any?) {
* ISSUES: KT-28329
*/
fun case_9(x: Any?) {
if (true && true && !!(x !is TypealiasNullableStringIndirect?) && true && true && true && true) else {
if (true && true && !!(x !is TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!>) && true && true && true && true) else {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any?")!>x<!>?.<!UNRESOLVED_REFERENCE!>get<!>(0)
}
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// TESTCASE NUMBER: 1
fun case_1(x: Any?) {
@@ -84,7 +85,7 @@ fun case_8(x: Any?) {
* ISSUES: KT-28329
*/
fun case_9(x: Any?) {
if (!!(x !is TypealiasNullableStringIndirect?) !== false === true) else {
if (!!(x !is TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!>) !== false === true) else {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & TypealiasNullableStringIndirect?")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & TypealiasNullableStringIndirect?")!>x<!>?.get(0)
}
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// TESTCASE NUMBER: 1
fun case_1(x: Any?) {
@@ -84,8 +85,8 @@ fun case_8(x: Any?) {
// TESTCASE NUMBER: 9
fun case_9(x: Any?) {
if (!!!(x !is TypealiasNullableStringIndirect?)) else {
if (!!(x !is TypealiasNullableStringIndirect?)) else {
if (!!!(x !is TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!>)) else {
if (!!(x !is TypealiasNullableStringIndirect<!REDUNDANT_NULLABLE!>?<!>)) else {
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & TypealiasNullableStringIndirect?")!>x<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Any? & TypealiasNullableStringIndirect?")!>x<!>?.get(0)
}
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_VARIABLE
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// FILE: other_package.kt
@@ -76,7 +77,7 @@ fun case_8(x: TypealiasNullableString) {
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-28329
*/
fun case_9(x: TypealiasNullableString?) {
fun case_9(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>) {
if (true && true && true && true && x !== null) {
} else if (false) {
@@ -96,7 +97,7 @@ fun case_10() {
}
// TESTCASE NUMBER: 11
fun case_11(x: TypealiasNullableString?, y: TypealiasNullableString) {
fun case_11(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>, y: TypealiasNullableString) {
val z: TypealiasNullableString = null
if (x != null) {
@@ -1,7 +1,8 @@
// FIR_IGNORE
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_VARIABLE -UNREACHABLE_CODE -CAN_BE_VAL
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// FILE: other_types.kt
@@ -153,7 +154,7 @@ fun case_8(x: TypealiasNullableString) {
}
// TESTCASE NUMBER: 9
fun case_9(x: TypealiasNullableString?, y: Nothing?) {
fun case_9(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>, y: Nothing?) {
if (x === y) {
} else if (false) {
@@ -192,7 +193,7 @@ fun case_10() {
}
// TESTCASE NUMBER: 11
fun case_11(x: TypealiasNullableString?, y: TypealiasNullableString) {
fun case_11(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>, y: TypealiasNullableString) {
val z = null
val u: TypealiasNullableString = null
val v = null
@@ -253,7 +254,7 @@ fun case_13(x: EmptyClass12_48?, z: Nothing?) =
// TESTCASE NUMBER: 14
class Case14 {
val x: TypealiasNullableString?
val x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>
init {
x = TypealiasNullableString()
}
@@ -800,7 +801,7 @@ fun case_43(x: TypealiasNullableString) {
* UNEXPECTED BEHAVIOUR
* ISSUES: KT-28329
*/
fun case_44(x: TypealiasNullableString?, z1: Nothing?) {
fun case_44(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>, z1: Nothing?) {
if (true && true && true && true && x !== z1) {
} else if (false) {
@@ -831,7 +832,7 @@ fun case_45() {
}
// TESTCASE NUMBER: 46
fun case_46(x: TypealiasNullableString?, y: TypealiasNullableString) {
fun case_46(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>, y: TypealiasNullableString) {
val t: TypealiasNullableString = null
var z: Nothing? = null
@@ -879,7 +880,7 @@ fun case_48(x: EmptyClass12_48?, z: Nothing?) =
// TESTCASE NUMBER: 49
class Case49 {
val x: TypealiasNullableString?
val x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>
init {
x = TypealiasNullableString()
}
@@ -1,6 +1,7 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_EXPRESSION
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_VARIABLE -UNREACHABLE_CODE -CAN_BE_VAL
// SKIP_TXT
// WITH_EXTENDED_CHECKERS
// FILE: other_package.kt
@@ -146,7 +147,7 @@ fun case_8(x: TypealiasString) {
}
// TESTCASE NUMBER: 9
fun case_9(x: TypealiasNullableString?) {
fun case_9(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>) {
if (x === null && <!SENSELESS_COMPARISON!>x === null<!> || <!SENSELESS_COMPARISON!>x === null<!>) {
} else if (<!SENSELESS_COMPARISON!>x === null<!> || <!SENSELESS_COMPARISON!>x === null<!>) {
@@ -185,7 +186,7 @@ fun case_10() {
}
// TESTCASE NUMBER: 11
fun case_11(x: TypealiasNullableString?, y: TypealiasNullableString) {
fun case_11(x: TypealiasNullableString<!REDUNDANT_NULLABLE!>?<!>, y: TypealiasNullableString) {
val t: TypealiasNullableString = null
if (x == null) {