Final in interfaces: deprecation ---> error + relevant test fixes

This commit is contained in:
Mikhail Glukhikh
2015-11-17 19:08:07 +03:00
parent 56af3a0af4
commit cd1b58f2eb
16 changed files with 13 additions and 79 deletions
@@ -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<KtModifierKeywordToken, Set<KotlinTarget>>(
// Deprecated in M15
FINAL_KEYWORD to EnumSet.of(INTERFACE),
PROTECTED_KEYWORD to EnumSet.of(OBJECT)
)
-9
View File
@@ -1,9 +0,0 @@
//KT-2382
interface T {
final fun foo() = "OK"
}
class S : T { }
fun box(): String = S().foo()
+1 -1
View File
@@ -2,7 +2,7 @@ package test
interface InlineTrait {
inline final fun finalInline(s: () -> String): String {
fun finalInline(s: () -> String): String {
return s()
}
@@ -1,5 +1,5 @@
interface T {
<!DEPRECATED_MODIFIER_CONTAINING_DECLARATION!>final<!> fun component1(): Int = 42
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> fun component1(): Int = 42
}
<!DATA_CLASS_OVERRIDE_CONFLICT!>data<!> class A(val x: Int) : T
@@ -2,14 +2,14 @@
package a
interface T {
<!FINAL_FUNCTION_WITH_NO_BODY, DEPRECATED_MODIFIER_CONTAINING_DECLARATION!>final<!> fun foo()
<!FINAL_PROPERTY_IN_INTERFACE, DEPRECATED_MODIFIER_CONTAINING_DECLARATION!>final<!> val b : Int
<!FINAL_FUNCTION_WITH_NO_BODY, WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> fun foo()
<!FINAL_PROPERTY_IN_INTERFACE, WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> val b : Int
<!DEPRECATED_MODIFIER_CONTAINING_DECLARATION!>final<!> fun bar() {}
<!DEPRECATED_MODIFIER_CONTAINING_DECLARATION!>final<!> val c : Int
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> fun bar() {}
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> val c : Int
get() = 42
<!DEPRECATED_MODIFIER_CONTAINING_DECLARATION!>final<!> val d = <!PROPERTY_INITIALIZER_IN_INTERFACE!>1<!>
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> val d = <!PROPERTY_INITIALIZER_IN_INTERFACE!>1<!>
}
class A {
@@ -3,8 +3,8 @@ interface My {
<!INCOMPATIBLE_MODIFIERS!>private<!> <!ABSTRACT_MODIFIER_IN_INTERFACE, INCOMPATIBLE_MODIFIERS!>abstract<!> val xx: Int
private val xxx: Int
get() = 0
<!FINAL_PROPERTY_IN_INTERFACE, DEPRECATED_MODIFIER_CONTAINING_DECLARATION!>final<!> val y: Int
<!DEPRECATED_MODIFIER_CONTAINING_DECLARATION!>final<!> val yy: Int
<!FINAL_PROPERTY_IN_INTERFACE, WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> val y: Int
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>final<!> val yy: Int
get() = 1
<!PRIVATE_FUNCTION_WITH_NO_BODY!>private<!> fun foo(): Int
// ok
@@ -1,7 +0,0 @@
// KT-2228
package test
interface A {
final fun f(): String = "test"
}
@@ -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");
@@ -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");
@@ -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");
@@ -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");
@@ -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 '<init>': 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<caret> val ordinal : Int = 24;
}
@@ -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");
@@ -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");
@@ -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 {
@@ -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()
}