From 7331eec817499aecb349725cb7963f3dc74953ba Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 5 Oct 2015 13:57:55 +0300 Subject: [PATCH] override is forbidden inside annotations --- .../jetbrains/kotlin/resolve/ModifiersChecker.kt | 3 ++- .../diagnostics/tests/modifiers/annotations.kt | 8 +++++++- .../diagnostics/tests/modifiers/annotations.txt | 16 ++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt index 3e71d677efb..a83ff3f07c0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt @@ -92,7 +92,8 @@ public object ModifierCheckerCore { private val possibleParentTargetMap = mapOf>( INNER_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS, ENUM_CLASS, ENUM_ENTRY), - OVERRIDE_KEYWORD to EnumSet.of(CLASS, ENUM_ENTRY), + OVERRIDE_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS, OBJECT, OBJECT_LITERAL, + INTERFACE, ENUM_CLASS, ENUM_ENTRY), PROTECTED_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS, ENUM_CLASS, OBJECT), INTERNAL_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS, OBJECT, OBJECT_LITERAL, ENUM_CLASS, ENUM_ENTRY, FILE), diff --git a/compiler/testData/diagnostics/tests/modifiers/annotations.kt b/compiler/testData/diagnostics/tests/modifiers/annotations.kt index 69758dfebbf..65427abc29c 100644 --- a/compiler/testData/diagnostics/tests/modifiers/annotations.kt +++ b/compiler/testData/diagnostics/tests/modifiers/annotations.kt @@ -3,4 +3,10 @@ annotation class My( protected val y: Int, internal val z: Int, private val w: Int -) \ No newline at end of file +) + +open class Your { + open val x: Int = 0 +} + +annotation class His(override val x: Int): Your() \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/modifiers/annotations.txt b/compiler/testData/diagnostics/tests/modifiers/annotations.txt index a41a2c3ebde..ff98b4aaa6a 100644 --- a/compiler/testData/diagnostics/tests/modifiers/annotations.txt +++ b/compiler/testData/diagnostics/tests/modifiers/annotations.txt @@ -1,5 +1,13 @@ package +@kotlin.annotation.annotation() public final class His : Your { + public constructor His(/*0*/ x: kotlin.Int) + public open override /*1*/ val x: kotlin.Int + 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.annotation.annotation() public final class My : kotlin.Annotation { public constructor My(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int, /*2*/ z: kotlin.Int, /*3*/ w: kotlin.Int) private final val w: kotlin.Int @@ -10,3 +18,11 @@ package public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } + +public open class Your { + public constructor Your() + public open val x: kotlin.Int = 0 + 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 +}