From 4d19120d84fcd1620aecf24fe55a980cfb663f7b Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 28 Feb 2019 19:25:59 +0300 Subject: [PATCH] Don't report "main parameter not necessary" in objects #KT-29414 Fixed --- .../jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt | 5 ++++- .../inspectionsLocal/unusedMainParameter/object.kt | 7 +++++++ .../idea/inspections/LocalInspectionTestGenerated.java | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 idea/testData/inspectionsLocal/unusedMainParameter/object.kt diff --git a/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt b/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt index 5f0aef8951f..3c7be47280f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.diagnostics.Errors.* import org.jetbrains.kotlin.idea.MainFunctionDetector import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.BindingContext.* import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsExpression @@ -736,7 +737,9 @@ class ControlFlowInformationProvider private constructor( return } !languageVersionSettings.supportsFeature(LanguageFeature.WarningOnMainUnusedParameter) -> { - trace.record(UNUSED_MAIN_PARAMETER, element) + if (owner.containingClassOrObject == null) { + trace.record(UNUSED_MAIN_PARAMETER, element) + } return } } diff --git a/idea/testData/inspectionsLocal/unusedMainParameter/object.kt b/idea/testData/inspectionsLocal/unusedMainParameter/object.kt new file mode 100644 index 00000000000..8593b580d56 --- /dev/null +++ b/idea/testData/inspectionsLocal/unusedMainParameter/object.kt @@ -0,0 +1,7 @@ +// LANGUAGE_VERSION: 1.3 +// WITH_RUNTIME +// PROBLEM: none + +object SomeMain { + @JvmStatic fun main(args: Array) {} +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index ebc0e96be06..f767641f153 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -8136,6 +8136,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/unusedMainParameter/legacy.kt"); } + @TestMetadata("object.kt") + public void testObject() throws Exception { + runTest("idea/testData/inspectionsLocal/unusedMainParameter/object.kt"); + } + @TestMetadata("simple.kt") public void testSimple() throws Exception { runTest("idea/testData/inspectionsLocal/unusedMainParameter/simple.kt");