From b5610eebae2a3d45871d14a333c8aa205053769e Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 17 Nov 2015 19:11:59 +0300 Subject: [PATCH] Diagnostic 'final property in interface' deleted because it's redundant --- .../frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java | 1 - .../kotlin/diagnostics/rendering/DefaultErrorMessages.java | 1 - .../src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java | 3 --- .../testData/diagnostics/tests/declarationChecks/kt2397.kt | 2 +- .../testData/diagnostics/tests/modifiers/privateInInterface.kt | 2 +- .../org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt | 1 - 6 files changed, 2 insertions(+), 8 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index f4718f57695..492cd658f19 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -361,7 +361,6 @@ public interface Errors { DiagnosticFactory0 EXTENSION_PROPERTY_WITH_BACKING_FIELD = DiagnosticFactory0.create(ERROR); DiagnosticFactory0 PROPERTY_INITIALIZER_NO_BACKING_FIELD = DiagnosticFactory0.create(ERROR); DiagnosticFactory0 PROPERTY_INITIALIZER_IN_INTERFACE = DiagnosticFactory0.create(ERROR); - DiagnosticFactory0 FINAL_PROPERTY_IN_INTERFACE = DiagnosticFactory0.create(ERROR, FINAL_MODIFIER); DiagnosticFactory0 PRIVATE_PROPERTY_IN_INTERFACE = DiagnosticFactory0.create(ERROR, PRIVATE_MODIFIER); DiagnosticFactory0 BACKING_FIELD_IN_INTERFACE = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index 3aeead55bc3..795dd615aaf 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -214,7 +214,6 @@ public class DefaultErrorMessages { MAP.put(MUST_BE_INITIALIZED, "Property must be initialized"); MAP.put(MUST_BE_INITIALIZED_OR_BE_ABSTRACT, "Property must be initialized or be abstract"); MAP.put(PROPERTY_INITIALIZER_IN_INTERFACE, "Property initializers are not allowed in interfaces"); - MAP.put(FINAL_PROPERTY_IN_INTERFACE, "Abstract property in an interface cannot be final"); MAP.put(PRIVATE_PROPERTY_IN_INTERFACE, "Abstract property in an interface cannot be private"); MAP.put(EXTENSION_PROPERTY_WITH_BACKING_FIELD, "Extension property cannot be initialized because it has no backing field"); MAP.put(PROPERTY_INITIALIZER_NO_BACKING_FIELD, "Initializer is not allowed here because this property has no backing field"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java index 8cb5f10ae9d..98f6270dd44 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java @@ -683,9 +683,6 @@ public class DeclarationsChecker { if (!error && property.getTypeReference() == null) { trace.report(PROPERTY_WITH_NO_TYPE_NO_INITIALIZER.on(property)); } - if (inTrait && property.hasModifier(KtTokens.FINAL_KEYWORD) && backingFieldRequired) { - trace.report(FINAL_PROPERTY_IN_INTERFACE.on(property)); - } return; } diff --git a/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt b/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt index 5c9757b6b1f..52b959573c5 100644 --- a/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt +++ b/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt @@ -3,7 +3,7 @@ package a interface T { final fun foo() - final val b : Int + final val b : Int final fun bar() {} final val c : Int diff --git a/compiler/testData/diagnostics/tests/modifiers/privateInInterface.kt b/compiler/testData/diagnostics/tests/modifiers/privateInInterface.kt index d288a7fab7a..8cf64c627ae 100644 --- a/compiler/testData/diagnostics/tests/modifiers/privateInInterface.kt +++ b/compiler/testData/diagnostics/tests/modifiers/privateInInterface.kt @@ -3,7 +3,7 @@ interface My { private abstract val xx: Int private val xxx: Int get() = 0 - final val y: Int + final val y: Int final val yy: Int get() = 1 private fun foo(): Int diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt index 3e86698121c..7f4362fde1e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt @@ -79,7 +79,6 @@ public class QuickFixRegistrar : QuickFixContributor { val removeFunctionBodyFactory = RemoveFunctionBodyFix.createFactory() ABSTRACT_FUNCTION_WITH_BODY.registerFactory(removeAbstractModifierFactory, removeFunctionBodyFactory) - FINAL_PROPERTY_IN_INTERFACE.registerFactory(removeFinalModifierFactory) FINAL_FUNCTION_WITH_NO_BODY.registerFactory(removeFinalModifierFactory) val addFunctionBodyFactory = AddFunctionBodyFix.createFactory()