From c84b22396b429f49b52d9bc7834cb29de3809cb1 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 17 Nov 2015 19:15:00 +0300 Subject: [PATCH] Diagnostic 'final function with no body' 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 --- .../resolve/diagnostics/SuppressDiagnosticsByAnnotations.kt | 2 +- .../testData/diagnostics/tests/declarationChecks/kt2397.kt | 2 +- .../org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt | 3 --- 6 files changed, 2 insertions(+), 10 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 492cd658f19..99d72308945 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -381,7 +381,6 @@ public interface Errors { DiagnosticFactory1 ABSTRACT_FUNCTION_WITH_BODY = DiagnosticFactory1.create(ERROR, ABSTRACT_MODIFIER); DiagnosticFactory1 NON_ABSTRACT_FUNCTION_WITH_NO_BODY = DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE); - DiagnosticFactory1 FINAL_FUNCTION_WITH_NO_BODY = DiagnosticFactory1.create(ERROR, FINAL_MODIFIER); DiagnosticFactory1 PRIVATE_FUNCTION_WITH_NO_BODY = DiagnosticFactory1.create(ERROR, PRIVATE_MODIFIER); DiagnosticFactory1 NON_MEMBER_FUNCTION_NO_BODY = 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 795dd615aaf..6f16cd66ebb 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -221,7 +221,6 @@ public class DefaultErrorMessages { MAP.put(ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS, "Abstract function ''{0}'' in non-abstract class ''{1}''", STRING, NAME); MAP.put(ABSTRACT_FUNCTION_WITH_BODY, "A function ''{0}'' with body cannot be abstract", NAME); MAP.put(NON_ABSTRACT_FUNCTION_WITH_NO_BODY, "Function ''{0}'' without a body must be abstract", NAME); - MAP.put(FINAL_FUNCTION_WITH_NO_BODY, "Function ''{0}'' without body cannot be final", NAME); MAP.put(PRIVATE_FUNCTION_WITH_NO_BODY, "Function ''{0}'' without body cannot be private", NAME); MAP.put(NON_MEMBER_FUNCTION_NO_BODY, "Function ''{0}'' must have a body", NAME); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java index 98f6270dd44..5d6a00fb47a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java @@ -751,9 +751,6 @@ public class DeclarationsChecker { trace.report(ABSTRACT_FUNCTION_WITH_BODY.on(function, functionDescriptor)); } if (!hasBody && inTrait) { - if (function.hasModifier(KtTokens.FINAL_KEYWORD) && !hasExternalModifier) { - trace.report(FINAL_FUNCTION_WITH_NO_BODY.on(function, functionDescriptor)); - } if (function.hasModifier(KtTokens.PRIVATE_KEYWORD)) { trace.report(PRIVATE_FUNCTION_WITH_NO_BODY.on(function, functionDescriptor)); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/SuppressDiagnosticsByAnnotations.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/SuppressDiagnosticsByAnnotations.kt index a427a46088c..e55ec97f37f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/SuppressDiagnosticsByAnnotations.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/SuppressDiagnosticsByAnnotations.kt @@ -29,7 +29,7 @@ import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.diagnostics.DiagnosticFactory0 public val FUNCTION_NO_BODY_ERRORS: List> = - listOf(Errors.NON_ABSTRACT_FUNCTION_WITH_NO_BODY, Errors.NON_MEMBER_FUNCTION_NO_BODY, Errors.FINAL_FUNCTION_WITH_NO_BODY) + listOf(Errors.NON_ABSTRACT_FUNCTION_WITH_NO_BODY, Errors.NON_MEMBER_FUNCTION_NO_BODY) public val PROPERTY_NOT_INITIALIZED_ERRORS: List> = listOf(Errors.MUST_BE_INITIALIZED, Errors.MUST_BE_INITIALIZED_OR_BE_ABSTRACT) diff --git a/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt b/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt index 52b959573c5..a7e8aabcda4 100644 --- a/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt +++ b/compiler/testData/diagnostics/tests/declarationChecks/kt2397.kt @@ -2,7 +2,7 @@ package a interface T { - final fun foo() + final fun foo() final val b : Int final fun bar() {} diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt index 7f4362fde1e..5c6241eafdd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt @@ -70,7 +70,6 @@ public class QuickFixRegistrar : QuickFixContributor { MUST_BE_INITIALIZED_OR_BE_ABSTRACT.registerFactory(InitializePropertyQuickFixFactory) MUST_BE_INITIALIZED.registerFactory(InitializePropertyQuickFixFactory) - val removeFinalModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(FINAL_KEYWORD) val addAbstractToClassFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD, javaClass()) ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS.registerFactory(removeAbstractModifierFactory, addAbstractToClassFactory) @@ -79,8 +78,6 @@ public class QuickFixRegistrar : QuickFixContributor { val removeFunctionBodyFactory = RemoveFunctionBodyFix.createFactory() ABSTRACT_FUNCTION_WITH_BODY.registerFactory(removeAbstractModifierFactory, removeFunctionBodyFactory) - FINAL_FUNCTION_WITH_NO_BODY.registerFactory(removeFinalModifierFactory) - val addFunctionBodyFactory = AddFunctionBodyFix.createFactory() NON_ABSTRACT_FUNCTION_WITH_NO_BODY.registerFactory(addAbstractModifierFactory, addFunctionBodyFactory)