Store map (Call to KotlinType) for SMARTCAST slice #KT-13426 Fixed

Also EA-86848 Fixed
This commit is contained in:
Mikhail Glukhikh
2016-08-16 11:31:52 +03:00
parent dbff2be6fa
commit ae856e834a
15 changed files with 171 additions and 19 deletions
@@ -0,0 +1,19 @@
interface I1
interface I2
interface I3
interface I4
interface I5
operator fun I1.component1() = 1
operator fun I2.component2() = 2
operator fun I3.component3() = 3
operator fun I4.component4() = 4
operator fun I5.component5() = 5
fun test(x: Any): Int {
if (x is I1 && x is I2 && x is I3 && x is I4 && x is I5) {
val (t1, t2, t3, t4, t5) = <!DEBUG_INFO_SMARTCAST!>x<!>
return t1 + t2 + t3 + t4 + t5
}
else return 0
}
@@ -0,0 +1,38 @@
package
public fun test(/*0*/ x: kotlin.Any): kotlin.Int
public operator fun I1.component1(): kotlin.Int
public operator fun I2.component2(): kotlin.Int
public operator fun I3.component3(): kotlin.Int
public operator fun I4.component4(): kotlin.Int
public operator fun I5.component5(): kotlin.Int
public interface I1 {
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 interface I2 {
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 interface I3 {
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 interface I4 {
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 interface I5 {
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
}