diff --git a/compiler/testData/diagnostics/tests/enum/overrideFinalEnumMethods.kt b/compiler/testData/diagnostics/tests/enum/overrideFinalEnumMethods.kt new file mode 100644 index 00000000000..c3673f411e4 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/overrideFinalEnumMethods.kt @@ -0,0 +1,9 @@ +enum class E { + ENTRY; + + override fun name(): String = "lol" + override fun ordinal(): Int = 0 + + override fun equals(other: Any?) = true + override fun hashCode() = -1 +} diff --git a/compiler/testData/diagnostics/tests/enum/overrideFinalEnumMethods.txt b/compiler/testData/diagnostics/tests/enum/overrideFinalEnumMethods.txt new file mode 100644 index 00000000000..06ea6b239d3 --- /dev/null +++ b/compiler/testData/diagnostics/tests/enum/overrideFinalEnumMethods.txt @@ -0,0 +1,32 @@ +package + +internal final enum class E : kotlin.Enum { + private constructor E() + public open override /*1*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ fun hashCode(): kotlin.Int + public open override /*1*/ fun name(): kotlin.String + public open override /*1*/ fun ordinal(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public enum entry ENTRY : E { + private constructor ENTRY() + 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 name(): kotlin.String + public open override /*1*/ /*fake_override*/ fun ordinal(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public class object : E.ENTRY { + private constructor () + 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 name(): kotlin.String + public open override /*1*/ /*fake_override*/ fun ordinal(): 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 +} diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 72d5a195361..91eeb50ca3d 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -3907,6 +3907,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("overrideFinalEnumMethods.kt") + public void testOverrideFinalEnumMethods() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/overrideFinalEnumMethods.kt"); + doTest(fileName); + } + @TestMetadata("starImportNestedClassAndEntries.kt") public void testStarImportNestedClassAndEntries() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/enum/starImportNestedClassAndEntries.kt"); diff --git a/core/builtins/native/kotlin/Enum.kt b/core/builtins/native/kotlin/Enum.kt index 20b64ed85b9..0ecb967abe9 100644 --- a/core/builtins/native/kotlin/Enum.kt +++ b/core/builtins/native/kotlin/Enum.kt @@ -16,7 +16,10 @@ package kotlin -public abstract class Enum>(name: String, ordinal: Int) { - public final fun name() : String - public final fun ordinal() : Int +public abstract class Enum>(name: String, ordinal: Int) { + public final fun name(): String + public final fun ordinal(): Int + + public override final fun equals(other: Any?): Boolean + public override final fun hashCode(): Int }