diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt index 17e4ba08126..dab3aaf7b5e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ModifiersChecker.kt @@ -104,12 +104,13 @@ public object ModifierCheckerCore { ENUM_CLASS, ENUM_ENTRY, FILE), PRIVATE_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS, OBJECT, OBJECT_LITERAL, INTERFACE, ENUM_CLASS, ENUM_ENTRY, FILE), - COMPANION_KEYWORD to EnumSet.of(CLASS_ONLY, ENUM_CLASS, INTERFACE) + COMPANION_KEYWORD to EnumSet.of(CLASS_ONLY, ENUM_CLASS, INTERFACE), + FINAL_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS, OBJECT, OBJECT_LITERAL, + ENUM_CLASS, ENUM_ENTRY, ANNOTATION_CLASS, FILE) ) val deprecatedParentTargetMap = mapOf>( // Deprecated in M15 - FINAL_KEYWORD to EnumSet.of(INTERFACE), PROTECTED_KEYWORD to EnumSet.of(OBJECT) ) diff --git a/compiler/testData/codegen/box/traits/finalMethod.kt b/compiler/testData/codegen/box/traits/finalMethod.kt deleted file mode 100644 index 443d02c1cf4..00000000000 --- a/compiler/testData/codegen/box/traits/finalMethod.kt +++ /dev/null @@ -1,9 +0,0 @@ -//KT-2382 - -interface T { - final fun foo() = "OK" -} - -class S : T { } - -fun box(): String = S().foo() diff --git a/compiler/testData/codegen/boxInline/trait/trait.2.kt b/compiler/testData/codegen/boxInline/trait/trait.2.kt index ed56b295051..98660fcd4c1 100644 --- a/compiler/testData/codegen/boxInline/trait/trait.2.kt +++ b/compiler/testData/codegen/boxInline/trait/trait.2.kt @@ -2,7 +2,7 @@ package test interface InlineTrait { - inline final fun finalInline(s: () -> String): String { + fun finalInline(s: () -> String): String { return s() } diff --git a/compiler/testData/diagnostics/tests/dataClasses/implementTraitWhichHasFinalComponent1.kt b/compiler/testData/diagnostics/tests/dataClasses/implementTraitWhichHasFinalComponent1.kt index 879bbb80179..40eb1b8e496 100644 --- a/compiler/testData/diagnostics/tests/dataClasses/implementTraitWhichHasFinalComponent1.kt +++ b/compiler/testData/diagnostics/tests/dataClasses/implementTraitWhichHasFinalComponent1.kt @@ -1,5 +1,5 @@ interface T { - final fun component1(): Int = 42 + final fun component1(): Int = 42 } data class A(val x: Int) : T diff --git a/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt b/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt index fa753caa57e..5c9757b6b1f 100644 --- a/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt +++ b/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt @@ -2,14 +2,14 @@ package a interface T { - final fun foo() - final val b : Int + final fun foo() + final val b : Int - final fun bar() {} - final val c : Int + final fun bar() {} + final val c : Int get() = 42 - final val d = 1 + final val d = 1 } class A { diff --git a/compiler/testData/diagnostics/tests/modifiers/privateInInterface.kt b/compiler/testData/diagnostics/tests/modifiers/privateInInterface.kt index 987735bf8c5..d288a7fab7a 100644 --- a/compiler/testData/diagnostics/tests/modifiers/privateInInterface.kt +++ b/compiler/testData/diagnostics/tests/modifiers/privateInInterface.kt @@ -3,8 +3,8 @@ interface My { private abstract val xx: Int private val xxx: Int get() = 0 - final val y: Int - final val yy: Int + final val y: Int + final val yy: Int get() = 1 private fun foo(): Int // ok diff --git a/compiler/testData/loadJava/compiledKotlin/classFun/TraitFinalFun.kt b/compiler/testData/loadJava/compiledKotlin/classFun/TraitFinalFun.kt deleted file mode 100644 index da2fd30a122..00000000000 --- a/compiler/testData/loadJava/compiledKotlin/classFun/TraitFinalFun.kt +++ /dev/null @@ -1,7 +0,0 @@ -// KT-2228 - -package test - -interface A { - final fun f(): String = "test" -} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java index 9c60bac92e7..eab04c32b67 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -7804,12 +7804,6 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } - @TestMetadata("finalMethod.kt") - public void testFinalMethod() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/traits/finalMethod.kt"); - doTest(fileName); - } - @TestMetadata("genericMethod.kt") public void testGenericMethod() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/traits/genericMethod.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadJavaTestGenerated.java index f79c118c6b1..e45bef787d0 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadJavaTestGenerated.java @@ -2710,12 +2710,6 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { doTestCompiledKotlin(fileName); } - @TestMetadata("TraitFinalFun.kt") - public void testTraitFinalFun() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/classFun/TraitFinalFun.kt"); - doTestCompiledKotlin(fileName); - } - @TestMetadata("TraitOpenFun.kt") public void testTraitOpenFun() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/classFun/TraitOpenFun.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadKotlinWithTypeTableTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadKotlinWithTypeTableTestGenerated.java index 1e946cff206..4871f767acd 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadKotlinWithTypeTableTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadKotlinWithTypeTableTestGenerated.java @@ -799,12 +799,6 @@ public class LoadKotlinWithTypeTableTestGenerated extends AbstractLoadKotlinWith doTest(fileName); } - @TestMetadata("TraitFinalFun.kt") - public void testTraitFinalFun() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/classFun/TraitFinalFun.kt"); - doTest(fileName); - } - @TestMetadata("TraitOpenFun.kt") public void testTraitOpenFun() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/classFun/TraitOpenFun.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/JvmRuntimeDescriptorLoaderTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/JvmRuntimeDescriptorLoaderTestGenerated.java index 2b0feee2800..88015787e35 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/runtime/JvmRuntimeDescriptorLoaderTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/runtime/JvmRuntimeDescriptorLoaderTestGenerated.java @@ -801,12 +801,6 @@ public class JvmRuntimeDescriptorLoaderTestGenerated extends AbstractJvmRuntimeD doTest(fileName); } - @TestMetadata("TraitFinalFun.kt") - public void testTraitFinalFun() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/classFun/TraitFinalFun.kt"); - doTest(fileName); - } - @TestMetadata("TraitOpenFun.kt") public void testTraitOpenFun() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/classFun/TraitOpenFun.kt"); diff --git a/idea/testData/quickfix/override/overridingWritableAndNotWritableFinalMembers.kt b/idea/testData/quickfix/override/overridingWritableAndNotWritableFinalMembers.kt deleted file mode 100644 index d9e26ed2eb3..00000000000 --- a/idea/testData/quickfix/override/overridingWritableAndNotWritableFinalMembers.kt +++ /dev/null @@ -1,13 +0,0 @@ -// "class org.jetbrains.kotlin.idea.quickfix.MakeOverriddenMemberOpenFix" "false" -// ERROR: This type is final, so it cannot be inherited from -// ERROR: Cannot access '': it is 'private' in 'E' -// ERROR: 'ordinal' in 'E' is final and cannot be overridden -enum class E {} -interface X { - final val ordinal : Int - get() = 42 -} - -class A : E(), X { - override val ordinal : Int = 24; -} diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 395057551b0..6ccc56a1d6f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -5229,12 +5229,6 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } - @TestMetadata("overridingWritableAndNotWritableFinalMembers.kt") - public void testOverridingWritableAndNotWritableFinalMembers() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/override/overridingWritableAndNotWritableFinalMembers.kt"); - doTest(fileName); - } - @TestMetadata("parameterNameChangedAmbiguousRename.kt") public void testParameterNameChangedAmbiguousRename() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/override/parameterNameChangedAmbiguousRename.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/stubs/ResolveByStubTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/stubs/ResolveByStubTestGenerated.java index 108a9a41cab..4c1ca232000 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/stubs/ResolveByStubTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/stubs/ResolveByStubTestGenerated.java @@ -799,12 +799,6 @@ public class ResolveByStubTestGenerated extends AbstractResolveByStubTest { doTest(fileName); } - @TestMetadata("TraitFinalFun.kt") - public void testTraitFinalFun() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/classFun/TraitFinalFun.kt"); - doTest(fileName); - } - @TestMetadata("TraitOpenFun.kt") public void testTraitOpenFun() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/classFun/TraitOpenFun.kt"); diff --git a/js/js.translator/testData/inlineMultiFile/cases/trait/trait.1.kt b/js/js.translator/testData/inlineMultiFile/cases/trait/trait.1.kt index 58f869213e3..914b858b9df 100644 --- a/js/js.translator/testData/inlineMultiFile/cases/trait/trait.1.kt +++ b/js/js.translator/testData/inlineMultiFile/cases/trait/trait.1.kt @@ -7,8 +7,6 @@ package foo import test.* -// CHECK_CONTAINS_NO_CALLS: testFinalInline -// CHECK_CONTAINS_NO_CALLS: testFinalInline2 // CHECK_CONTAINS_NO_CALLS: testClassObject internal fun testFinalInline(): String { diff --git a/js/js.translator/testData/inlineMultiFile/cases/trait/trait.2.kt b/js/js.translator/testData/inlineMultiFile/cases/trait/trait.2.kt index 63e8b4b656f..53a30323539 100644 --- a/js/js.translator/testData/inlineMultiFile/cases/trait/trait.2.kt +++ b/js/js.translator/testData/inlineMultiFile/cases/trait/trait.2.kt @@ -7,7 +7,7 @@ package test internal interface InlineTrait { - public inline final fun finalInline(s: () -> String): String { + public fun finalInline(s: () -> String): String { return s() }