Test for KT-2619
Remove outdated check in WhenChecker # KT-2619 fixed
This commit is contained in:
@@ -49,12 +49,7 @@ public final class WhenChecker {
|
|||||||
ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor;
|
ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor;
|
||||||
if (classDescriptor.getKind() != ClassKind.ENUM_CLASS || classDescriptor.getModality().isOverridable()) return false;
|
if (classDescriptor.getKind() != ClassKind.ENUM_CLASS || classDescriptor.getModality().isOverridable()) return false;
|
||||||
ClassDescriptor classObjectDescriptor = classDescriptor.getClassObjectDescriptor();
|
ClassDescriptor classObjectDescriptor = classDescriptor.getClassObjectDescriptor();
|
||||||
//TODO: workaround for KT-2619 Exception on using java enum in when.
|
assert classObjectDescriptor != null : "Enum classes must have class object.";
|
||||||
// should provide correct checks for java enums
|
|
||||||
// may be obsolete once java and kotlin enum work the same way
|
|
||||||
if (classObjectDescriptor == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
JetScope memberScope = classObjectDescriptor.getMemberScope(Collections.<TypeProjection>emptyList());
|
JetScope memberScope = classObjectDescriptor.getMemberScope(Collections.<TypeProjection>emptyList());
|
||||||
Collection<ClassDescriptor> objectDescriptors = memberScope.getObjectDescriptors();
|
Collection<ClassDescriptor> objectDescriptors = memberScope.getObjectDescriptors();
|
||||||
boolean isExhaust = true;
|
boolean isExhaust = true;
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
//FILE: foo.kt
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
val c: Type
|
||||||
|
<!NO_ELSE_IN_WHEN!>when<!> (<!UNINITIALIZED_VARIABLE!>c<!>) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//FILE: Type.java
|
||||||
|
public enum Type {
|
||||||
|
TYPE,
|
||||||
|
NO_TYPE;
|
||||||
|
}
|
||||||
@@ -2237,6 +2237,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
|
|||||||
doTest("compiler/testData/diagnostics/tests/j+k/kt2606.kt");
|
doTest("compiler/testData/diagnostics/tests/j+k/kt2606.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt2619.kt")
|
||||||
|
public void testKt2619() throws Exception {
|
||||||
|
doTest("compiler/testData/diagnostics/tests/j+k/kt2619.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kt2641.kt")
|
@TestMetadata("kt2641.kt")
|
||||||
public void testKt2641() throws Exception {
|
public void testKt2641() throws Exception {
|
||||||
doTest("compiler/testData/diagnostics/tests/j+k/kt2641.kt");
|
doTest("compiler/testData/diagnostics/tests/j+k/kt2641.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user