Introduce warning REDUNDANT_ELSE_IN_WHEN #KT-17497 Fixed
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
// FILE: MyEnum.java
|
||||
public enum MyEnum {
|
||||
SINGLE;
|
||||
|
||||
public static MyEnum getInstance() {
|
||||
return SINGLE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
sealed class X {
|
||||
class A : X()
|
||||
class B : X()
|
||||
}
|
||||
|
||||
fun foo(x: X) = when (x) {
|
||||
is X.A -> {}
|
||||
is X.B -> {}
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> {}
|
||||
}
|
||||
|
||||
fun bar(x: X?): String = when (x) {
|
||||
is X.A -> "A"
|
||||
is X.B -> "B"
|
||||
null -> "null"
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> "Unreachable"
|
||||
}
|
||||
|
||||
fun justUse(x: X) {
|
||||
when (x) {
|
||||
is X.A -> {}
|
||||
is X.B -> {}
|
||||
// Redundant even in statement position
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> {}
|
||||
}
|
||||
}
|
||||
|
||||
enum class E {
|
||||
A, B
|
||||
}
|
||||
|
||||
fun foo(e: E): String = when (e) {
|
||||
E.A -> "A"
|
||||
E.B -> "B"
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> ""
|
||||
}
|
||||
|
||||
fun bar(e: E?): String = when (e) {
|
||||
E.A -> "A"
|
||||
E.B -> "B"
|
||||
else -> "" // no warning
|
||||
}
|
||||
|
||||
fun foo(b: Boolean) = when (b) {
|
||||
true -> 1
|
||||
false -> 0
|
||||
<!REDUNDANT_ELSE_IN_WHEN!>else<!> -> -1
|
||||
}
|
||||
|
||||
fun useJava(): String {
|
||||
val me = MyEnum.getInstance()
|
||||
return when (me) {
|
||||
MyEnum.SINGLE -> "OK"
|
||||
else -> "FAIL" // no warning
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package
|
||||
|
||||
public fun bar(/*0*/ e: E?): kotlin.String
|
||||
public fun bar(/*0*/ x: X?): kotlin.String
|
||||
public fun foo(/*0*/ e: E): kotlin.String
|
||||
public fun foo(/*0*/ x: X): kotlin.Unit
|
||||
public fun foo(/*0*/ b: kotlin.Boolean): kotlin.Int
|
||||
public fun justUse(/*0*/ x: X): kotlin.Unit
|
||||
public fun useJava(): kotlin.String
|
||||
|
||||
public final enum class E : kotlin.Enum<E> {
|
||||
enum entry A
|
||||
|
||||
enum entry B
|
||||
|
||||
private constructor E()
|
||||
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: E): 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<E!>!
|
||||
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): E
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<E>
|
||||
}
|
||||
|
||||
public final enum class MyEnum : kotlin.Enum<MyEnum!> {
|
||||
enum entry SINGLE
|
||||
|
||||
public constructor MyEnum()
|
||||
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: MyEnum!): 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<MyEnum!>!
|
||||
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
// Static members
|
||||
public open fun getInstance(): MyEnum!
|
||||
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): MyEnum
|
||||
public final /*synthesized*/ fun values(): kotlin.Array<MyEnum>
|
||||
}
|
||||
|
||||
public sealed class X {
|
||||
private constructor X()
|
||||
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 A : X {
|
||||
public 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 final class B : X {
|
||||
public constructor B()
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user