Destructuring declaration initializer now cannot use extension componentX() on nullable #KT-7794 Fixed

This commit is contained in:
Mikhail Glukhikh
2016-01-25 18:58:14 +03:00
parent 850dc89b38
commit 22c0ddaa48
7 changed files with 91 additions and 24 deletions
@@ -0,0 +1,21 @@
class Data<T>(val x: T, val y: T)
operator fun <T> Data<T>.component1() = x
operator fun <T> Data<T>.component2() = y
fun foo(): Int {
val d: Data<Int>? = null
// An error must be here
val (x, y) = <!COMPONENT_FUNCTION_MISSING, COMPONENT_FUNCTION_MISSING!>d<!>
return x + y
}
data class NormalData<T>(val x: T, val y: T)
fun bar(): Int {
val d: NormalData<Int>? = null
// An error must be here
val (x, y) = <!COMPONENT_FUNCTION_MISSING, COMPONENT_FUNCTION_MISSING!>d<!>
return <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>x<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>y<!>
}
@@ -0,0 +1,27 @@
package
public fun bar(): kotlin.Int
public fun foo(): kotlin.Int
public operator fun </*0*/ T> Data<T>.component1(): T
public operator fun </*0*/ T> Data<T>.component2(): T
public final class Data</*0*/ T> {
public constructor Data</*0*/ T>(/*0*/ x: T, /*1*/ y: T)
public final val x: T
public final val y: T
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 data class NormalData</*0*/ T> {
public constructor NormalData</*0*/ T>(/*0*/ x: T, /*1*/ y: T)
public final val x: T
public final val y: T
public final operator /*synthesized*/ fun component1(): T
public final operator /*synthesized*/ fun component2(): T
public final /*synthesized*/ fun copy(/*0*/ x: T = ..., /*1*/ y: T = ...): NormalData<T>
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
}