Check possible smart cast to enum in when subject #KT-14705 Fixed
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
// See KT-14705
|
||||
|
||||
enum class En { A, B, С }
|
||||
|
||||
fun foo() {
|
||||
// nullable variable
|
||||
val en2: Any? = En.A
|
||||
if (en2 is En) {
|
||||
when (<!DEBUG_INFO_SMARTCAST!>en2<!>) {
|
||||
En.A -> {}
|
||||
En.B -> {}
|
||||
En.С -> {}
|
||||
}
|
||||
}
|
||||
|
||||
// not nullable variable
|
||||
val en1: Any = En.A
|
||||
if (en1 is En) {
|
||||
when (<!DEBUG_INFO_SMARTCAST!>en1<!>) {
|
||||
En.A -> {}
|
||||
En.B -> {}
|
||||
En.С -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum class En2 { D, E, F }
|
||||
|
||||
fun useEn(x: En) = x
|
||||
fun useEn2(x: En2) = x
|
||||
|
||||
fun bar(x: Any) {
|
||||
if (x is En && x is En2) {
|
||||
when (<!DEBUG_INFO_SMARTCAST!>x<!>) {
|
||||
En.A -> useEn(<!DEBUG_INFO_SMARTCAST!>x<!>)
|
||||
En2.D -> useEn2(<!DEBUG_INFO_SMARTCAST!>x<!>)
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package
|
||||
|
||||
public fun bar(/*0*/ x: kotlin.Any): kotlin.Unit
|
||||
public fun foo(): kotlin.Unit
|
||||
public fun useEn(/*0*/ x: En): En
|
||||
public fun useEn2(/*0*/ x: En2): En2
|
||||
|
||||
public final enum class En : kotlin.Enum<En> {
|
||||
enum entry A
|
||||
|
||||
enum entry B
|
||||
|
||||
enum entry С
|
||||
|
||||
private constructor En()
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: En): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<En!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): En
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<En>
|
||||
}
|
||||
|
||||
public final enum class En2 : kotlin.Enum<En2> {
|
||||
enum entry D
|
||||
|
||||
enum entry E
|
||||
|
||||
enum entry F
|
||||
|
||||
private constructor En2()
|
||||
public final override /*1*/ /*fake_override*/ val name: kotlin.String
|
||||
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
|
||||
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: En2): kotlin.Int
|
||||
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
|
||||
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<En2!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): En2
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<En2>
|
||||
}
|
||||
Reference in New Issue
Block a user