Fix incorrect "senseless null in when" on nullable type

This commit is contained in:
Alexander Udalov
2014-10-17 13:21:33 +04:00
parent fe59dc27b3
commit 63366042ed
4 changed files with 56 additions and 1 deletions
@@ -0,0 +1,21 @@
// FILE: A.java
class A {
enum Empty {}
static Empty foo() { return null; }
}
// FILE: 1.kt
fun bar() = when (A.foo()) {
null -> "null"
else -> "else"
}
fun <T : Number?> baz(t: T) = when (t) {
is Int -> "int"
is Long -> "long"
null -> "null"
else -> "else"
}
@@ -0,0 +1,28 @@
package
internal fun bar(): kotlin.String
internal fun </*0*/ T : kotlin.Number?> baz(/*0*/ t: T): kotlin.String
public/*package*/ open class A {
public/*package*/ constructor 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/*package*/ final enum class Empty : kotlin.Enum<A.Empty!> {
public/*package*/ constructor Empty()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: A.Empty!): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun name(): kotlin.String
public final override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): A.Empty
public final /*synthesized*/ fun values(): kotlin.Array<A.Empty>
}
// Static members
public/*package*/ open fun foo(): A.Empty!
}