Check implicitly inferred Nothing inside special calls properly: compare constructors instead of types
^KT-41176 Open
This commit is contained in:
+40
@@ -0,0 +1,40 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNCHECKED_CAST -UNUSED_EXPRESSION -UNREACHABLE_CODE
|
||||
|
||||
// FILE: abc/Bar.java
|
||||
|
||||
package abc;
|
||||
|
||||
public class Bar {
|
||||
public static <T> T bar() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
import abc.Bar
|
||||
|
||||
fun ifProblem(b: Boolean): String? {
|
||||
return run {
|
||||
if (b) { Bar.bar() } else null
|
||||
}
|
||||
}
|
||||
|
||||
fun whenProblem(b: Boolean): String? {
|
||||
return run {
|
||||
when {
|
||||
b -> Bar.bar()
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun tryProblem(): String? {
|
||||
return run {
|
||||
try {
|
||||
Bar.bar()
|
||||
} catch (e: Exception) {
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNCHECKED_CAST -UNUSED_EXPRESSION -UNREACHABLE_CODE
|
||||
|
||||
// FILE: abc/Bar.java
|
||||
|
||||
package abc;
|
||||
|
||||
public class Bar {
|
||||
public static <T> T bar() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
import abc.Bar
|
||||
|
||||
fun ifProblem(b: Boolean): String? {
|
||||
return run {
|
||||
if (b) { Bar.<!IMPLICIT_NOTHING_TYPE_ARGUMENT_AGAINST_NOT_NOTHING_EXPECTED_TYPE!>bar<!>() } else null
|
||||
}
|
||||
}
|
||||
|
||||
fun whenProblem(b: Boolean): String? {
|
||||
return run {
|
||||
when {
|
||||
b -> Bar.<!IMPLICIT_NOTHING_TYPE_ARGUMENT_AGAINST_NOT_NOTHING_EXPECTED_TYPE!>bar<!>()
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun tryProblem(): String? {
|
||||
return run {
|
||||
try {
|
||||
Bar.<!IMPLICIT_NOTHING_TYPE_ARGUMENT_AGAINST_NOT_NOTHING_EXPECTED_TYPE!>bar<!>()
|
||||
} catch (e: Exception) {
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package
|
||||
|
||||
public fun ifProblem(/*0*/ b: kotlin.Boolean): kotlin.String?
|
||||
public fun tryProblem(): kotlin.String?
|
||||
public fun whenProblem(/*0*/ b: kotlin.Boolean): kotlin.String?
|
||||
|
||||
package abc {
|
||||
|
||||
public open class Bar {
|
||||
public constructor Bar()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public open fun </*0*/ T : kotlin.Any!> bar(): T!
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user