From 7bfd354a7759bc3f13c6b79c3f1857e327bf9a45 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 26 Mar 2020 18:25:51 +0300 Subject: [PATCH] Don't report UNUSED_PARAMETER in main from object #KT-37718 Fixed --- ...FirOldFrontendDiagnosticsTestWithStdlibGenerated.java | 5 +++++ .../kotlin/cfg/ControlFlowInformationProvider.kt | 5 +++++ .../annotations/jvmStatic/mainInObject.kt | 6 ++++++ .../annotations/jvmStatic/mainInObject.txt | 9 +++++++++ .../checkers/DiagnosticsTestWithStdLibGenerated.java | 5 +++++ .../DiagnosticsTestWithStdLibUsingJavacGenerated.java | 5 +++++ 6 files changed, 35 insertions(+) create mode 100644 compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.kt create mode 100644 compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.txt diff --git a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java index 276fe8a7a0b..34cf3febbfa 100644 --- a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java +++ b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java @@ -742,6 +742,11 @@ public class FirOldFrontendDiagnosticsTestWithStdlibGenerated extends AbstractFi runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/localFun_LL13.kt"); } + @TestMetadata("mainInObject.kt") + public void testMainInObject() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.kt"); + } + @TestMetadata("property.kt") public void testProperty() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/property.kt"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt b/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt index 6767dd4846c..7f02b9803c1 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/cfg/ControlFlowInformationProvider.kt @@ -745,6 +745,11 @@ class ControlFlowInformationProvider private constructor( } return } + else -> { + if (owner.containingClassOrObject != null) { + return + } + } } } if (functionDescriptor.isOperator && functionName in OperatorNameConventions.DELEGATED_PROPERTY_OPERATORS) { diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.kt new file mode 100644 index 00000000000..819ff4d26da --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.kt @@ -0,0 +1,6 @@ +// FIR_IDENTICAL +object Test { + @JvmStatic + fun main(args: Array) { + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.txt new file mode 100644 index 00000000000..3ce0a1dfd59 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.txt @@ -0,0 +1,9 @@ +package + +public object Test { + private constructor Test() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + @kotlin.jvm.JvmStatic public final fun main(/*0*/ args: kotlin.Array): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java index 997b69aa844..17d6efbca6d 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java @@ -743,6 +743,11 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/localFun_LL13.kt"); } + @TestMetadata("mainInObject.kt") + public void testMainInObject() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.kt"); + } + @TestMetadata("property.kt") public void testProperty() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/property.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java index 4d44949a4d6..a7f28ecb09d 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java @@ -743,6 +743,11 @@ public class DiagnosticsTestWithStdLibUsingJavacGenerated extends AbstractDiagno runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/localFun_LL13.kt"); } + @TestMetadata("mainInObject.kt") + public void testMainInObject() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/mainInObject.kt"); + } + @TestMetadata("property.kt") public void testProperty() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/annotations/jvmStatic/property.kt");