diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt index 238fc337854..b38e7414113 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt @@ -59,7 +59,7 @@ public object ModifierCheckerCore { VARARG_KEYWORD to EnumSet.of(VALUE_PARAMETER, PROPERTY_PARAMETER), COMPANION_KEYWORD to EnumSet.of(OBJECT), LATE_INIT_KEYWORD to EnumSet.of(MEMBER_PROPERTY), - DATA_KEYWORD to EnumSet.of(CLASS), + DATA_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS), INLINE_KEYWORD to EnumSet.of(FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, PROPERTY), NOINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER), TAILREC_KEYWORD to EnumSet.of(FUNCTION), diff --git a/compiler/testData/diagnostics/tests/dataClasses/strange.kt b/compiler/testData/diagnostics/tests/dataClasses/strange.kt new file mode 100644 index 00000000000..a181e424b2d --- /dev/null +++ b/compiler/testData/diagnostics/tests/dataClasses/strange.kt @@ -0,0 +1,10 @@ +data enum class First(val x: Int) { + A(1), + B(2) +} + +data object Second + +data interface Third + +data annotation class Fourth(val x: Int) \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/dataClasses/strange.txt b/compiler/testData/diagnostics/tests/dataClasses/strange.txt new file mode 100644 index 00000000000..e4bb7aa21f3 --- /dev/null +++ b/compiler/testData/diagnostics/tests/dataClasses/strange.txt @@ -0,0 +1,47 @@ +package + +@kotlin.data() public final enum class First : kotlin.Enum { + enum entry A + + enum entry B + + private constructor First(/*0*/ x: kotlin.Int) + public final val x: kotlin.Int + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: First): kotlin.Int + public final /*synthesized*/ fun component1(): kotlin.Int + public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ...): First + public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final override /*1*/ /*fake_override*/ fun name(): kotlin.String + public final 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): First + public final /*synthesized*/ fun values(): kotlin.Array +} + +@kotlin.data() @kotlin.annotation.annotation() public final class Fourth : kotlin.Annotation { + public constructor Fourth(/*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 = ...): Fourth + 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 +} + +@kotlin.data() public object Second { + private constructor Second() + public final /*synthesized*/ fun copy(): Second + 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 +} + +@kotlin.data() public interface Third { + 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 35c9fdaa616..0f682e2f647 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java @@ -3408,6 +3408,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("strange.kt") + public void testStrange() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/dataClasses/strange.kt"); + doTest(fileName); + } + @TestMetadata("twoValParams.kt") public void testTwoValParams() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/dataClasses/twoValParams.kt"); diff --git a/libraries/tools/idl2k/src/main/kotlin/types.kt b/libraries/tools/idl2k/src/main/kotlin/types.kt index 70a722aafbf..41307998173 100644 --- a/libraries/tools/idl2k/src/main/kotlin/types.kt +++ b/libraries/tools/idl2k/src/main/kotlin/types.kt @@ -9,13 +9,13 @@ interface Type { protected fun String.withSuffix(): String = if (nullable) "$this?" else this } -data object UnitType : Type { +object UnitType : Type { override val nullable: Boolean get() = false override fun render() = "Unit" } -data object DynamicType : Type { +object DynamicType : Type { override val nullable: Boolean get() = false