From f8d6f79c177179c9025adf421357169ced22f4db Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 24 Nov 2020 12:30:37 +0300 Subject: [PATCH] [FE] Temporary disable exhaustiveness checker for java sealed classes KT-43551 KT-41215 --- .../sealedClasses/javaSealedClassExhaustiveness.kt | 4 ++-- .../sealedClasses/javaSealedClassExhaustiveness.txt | 4 ++-- .../sealedClasses/javaSealedInterfaceExhaustiveness.kt | 4 ++-- .../sealedClasses/javaSealedInterfaceExhaustiveness.txt | 4 ++-- .../testsWithJava15/sealedClasses/kotlinInheritsJavaClass.txt | 2 +- .../sealedClasses/kotlinInheritsJavaInterface.txt | 2 +- .../load/java/lazy/descriptors/LazyJavaClassDescriptor.kt | 3 ++- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedClassExhaustiveness.kt b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedClassExhaustiveness.kt index 0ae9771eb1f..6bd8769c2bd 100644 --- a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedClassExhaustiveness.kt +++ b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedClassExhaustiveness.kt @@ -16,14 +16,14 @@ public sealed class B extends Base permits B.C, B.D { // FILE: main.kt fun test_ok_1(base: Base) { - val x = when (base) { + val x = when (base) { is A -> 1 is B -> 2 } } fun test_ok_2(base: Base) { - val x = when (base) { + val x = when (base) { is A -> 1 is B.C -> 2 is B.D -> 3 diff --git a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedClassExhaustiveness.txt b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedClassExhaustiveness.txt index 8d90f4c6fcf..5a14a0617b1 100644 --- a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedClassExhaustiveness.txt +++ b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedClassExhaustiveness.txt @@ -12,7 +12,7 @@ public final class A : Base { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } -public sealed class B : Base { +public abstract class B : Base { 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 @@ -33,7 +33,7 @@ public sealed class B : Base { } } -public sealed class Base { +public abstract class Base { public constructor Base() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedInterfaceExhaustiveness.kt b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedInterfaceExhaustiveness.kt index 3419f18de62..47af93f24e0 100644 --- a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedInterfaceExhaustiveness.kt +++ b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedInterfaceExhaustiveness.kt @@ -21,7 +21,7 @@ public enum E implements Base { // FILE: main.kt fun test_ok_1(base: Base) { - val x = when (base) { + val x = when (base) { is A -> 1 is B -> 2 is E -> 3 @@ -29,7 +29,7 @@ fun test_ok_1(base: Base) { } fun test_ok_2(base: Base) { - val x = when (base) { + val x = when (base) { is A -> 1 is B.C -> 2 is B.D -> 3 diff --git a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedInterfaceExhaustiveness.txt b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedInterfaceExhaustiveness.txt index 6b88bec8277..fc87a4c379d 100644 --- a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedInterfaceExhaustiveness.txt +++ b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/javaSealedInterfaceExhaustiveness.txt @@ -12,7 +12,7 @@ public interface A : Base { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } -public sealed interface B : Base { +public interface B : Base { 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 @@ -31,7 +31,7 @@ public sealed interface B : Base { } } -public sealed interface Base { +public interface Base { 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 diff --git a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/kotlinInheritsJavaClass.txt b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/kotlinInheritsJavaClass.txt index 0b902f9c44b..707ef3816da 100644 --- a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/kotlinInheritsJavaClass.txt +++ b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/kotlinInheritsJavaClass.txt @@ -14,7 +14,7 @@ public final class B : Base { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } -public sealed class Base { +public abstract class Base { public constructor Base() public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int diff --git a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/kotlinInheritsJavaInterface.txt b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/kotlinInheritsJavaInterface.txt index 5e98dbfb22d..cf566afb543 100644 --- a/compiler/testData/diagnostics/testsWithJava15/sealedClasses/kotlinInheritsJavaInterface.txt +++ b/compiler/testData/diagnostics/testsWithJava15/sealedClasses/kotlinInheritsJavaInterface.txt @@ -14,7 +14,7 @@ public final class B : Base { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } -public sealed interface Base { +public interface Base { 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 diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt index 42688fbb51f..233bf329a67 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaClassDescriptor.kt @@ -76,7 +76,8 @@ class LazyJavaClassDescriptor( private val modality = if (jClass.isAnnotationType || jClass.isEnum) Modality.FINAL - else Modality.convertFromFlags(jClass.isSealed, jClass.isAbstract || jClass.isInterface, !jClass.isFinal) + // TODO: replace false with jClass.isSealed when it will be properly supported in platform + else Modality.convertFromFlags(sealed = false, jClass.isSealed || jClass.isAbstract || jClass.isInterface, !jClass.isFinal) private val visibility = jClass.visibility private val isInner = jClass.outerClass != null && !jClass.isStatic -- GitLab