Implicit nothing type argument: handle nullable case properly
#KT-41620 Fixed
This commit is contained in:
+12
@@ -0,0 +1,12 @@
|
||||
interface A {
|
||||
fun a(): A
|
||||
}
|
||||
|
||||
fun error(s: String): Nothing = null!!
|
||||
|
||||
class A1 : A {
|
||||
override fun a() = test() ?: error("")
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
private fun <V : A> test(): V? = this as? V
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
interface A {
|
||||
fun a(): A
|
||||
}
|
||||
|
||||
fun error(s: String): Nothing = null!!
|
||||
|
||||
class A1 : A {
|
||||
override fun a() = <!IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION!>test<!>() ?: error("")
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
private fun <V : A> test(): V? = this as? V
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package
|
||||
|
||||
public fun error(/*0*/ s: kotlin.String): kotlin.Nothing
|
||||
|
||||
public interface A {
|
||||
public abstract fun a(): A
|
||||
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
|
||||
}
|
||||
|
||||
public final class A1 : A {
|
||||
public constructor A1()
|
||||
public open override /*1*/ fun a(): kotlin.Nothing
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
@kotlin.Suppress(names = {"UNCHECKED_CAST"}) private final fun </*0*/ V : A> test(): V?
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+2
-2
@@ -10,7 +10,7 @@ fun test() {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER{NI}, TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER{OI}!>make<!>()
|
||||
)
|
||||
|
||||
select(make(), null)
|
||||
select(<!IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION!>make<!>(), null)
|
||||
|
||||
<!TYPE_INFERENCE_FAILED_ON_SPECIAL_CONSTRUCT{OI}!>if<!> (true) <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}!>make()<!> else TODO()
|
||||
<!TYPE_INFERENCE_FAILED_ON_SPECIAL_CONSTRUCT{OI}!>if<!> (true) <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH{OI}!><!IMPLICIT_NOTHING_TYPE_ARGUMENT_IN_RETURN_POSITION!>make<!>()<!> else TODO()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user