From 3d6253c27fbba7cb88626eead38ec18449ffd7bf Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 22 Sep 2015 12:51:29 +0300 Subject: [PATCH] abstract + data and sealed + data are also deprecated --- .../kotlin/resolve/ModifiersChecker.kt | 4 ++- .../tests/dataClasses/dataInheritance.kt | 2 +- .../tests/dataClasses/sealedDataClass.kt | 4 +++ .../tests/dataClasses/sealedDataClass.txt | 31 +++++++++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 6 ++++ 5 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.kt create mode 100644 compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.txt diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt index 9d2f63b0531..cb2181c4eb5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt @@ -100,9 +100,11 @@ public object ModifierCheckerCore { result += incompatibilityRegister(PRIVATE_KEYWORD, PROTECTED_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD) // Abstract + open + final + sealed: incompatible result += incompatibilityRegister(ABSTRACT_KEYWORD, OPEN_KEYWORD, FINAL_KEYWORD, SEALED_KEYWORD) - // data + open, data + inner + // data + open, data + inner, data + abstract, data + sealed result += deprecationRegister(DATA_KEYWORD, OPEN_KEYWORD) result += deprecationRegister(DATA_KEYWORD, INNER_KEYWORD) + result += deprecationRegister(DATA_KEYWORD, ABSTRACT_KEYWORD) + result += deprecationRegister(DATA_KEYWORD, SEALED_KEYWORD) // open is redundant to abstract & override result += redundantRegister(ABSTRACT_KEYWORD, OPEN_KEYWORD) result += redundantRegister(OVERRIDE_KEYWORD, OPEN_KEYWORD) diff --git a/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.kt b/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.kt index 86661a48de6..febb8647226 100644 --- a/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.kt +++ b/compiler/testData/diagnostics/tests/dataClasses/dataInheritance.kt @@ -2,7 +2,7 @@ interface Allowed open class NotAllowed -abstract data class Base(val x: Int) +abstract data class Base(val x: Int) class Derived: Base(42) diff --git a/compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.kt b/compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.kt new file mode 100644 index 00000000000..8aabf058039 --- /dev/null +++ b/compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.kt @@ -0,0 +1,4 @@ +sealed data class My(val x: Int) { + object Your: My(1) + class His(y: Int): My(y) +} diff --git a/compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.txt b/compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.txt new file mode 100644 index 00000000000..5a3e8f48709 --- /dev/null +++ b/compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.txt @@ -0,0 +1,31 @@ +package + +@kotlin.data() public sealed class My { + private constructor My(/*0*/ x: kotlin.Int) + public final val x: kotlin.Int + public final /*synthesized*/ fun component1(): kotlin.Int + public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ...): My + 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 His : My { + public constructor His(/*0*/ y: kotlin.Int) + public final override /*1*/ /*fake_override*/ val x: kotlin.Int + public final override /*1*/ /*fake_override*/ fun component1(): kotlin.Int + public final override /*1*/ /*fake_override*/ fun copy(/*0*/ x: kotlin.Int = ...): My + 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 object Your : My { + private constructor Your() + public final override /*1*/ /*fake_override*/ val x: kotlin.Int + public final override /*1*/ /*fake_override*/ fun component1(): kotlin.Int + public final override /*1*/ /*fake_override*/ fun copy(/*0*/ x: kotlin.Int = ...): My + 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/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java index c7ad9833c50..44ddcffb745 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java @@ -3414,6 +3414,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("sealedDataClass.kt") + public void testSealedDataClass() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/dataClasses/sealedDataClass.kt"); + doTest(fileName); + } + @TestMetadata("secondParamIsVal.kt") public void testSecondParamIsVal() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/dataClasses/secondParamIsVal.kt");