diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/importOptimizer/Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/importOptimizer/Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java index 73a3c6eecdd..96bf87b8c3f 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/importOptimizer/Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/importOptimizer/Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java @@ -136,6 +136,18 @@ public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGene runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedTypeAsVarargType.kt"); } + @Test + @TestMetadata("unusedType_underscoreNameInCatchSection.kt") + public void testUnusedType_underscoreNameInCatchSection() throws Exception { + runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.kt"); + } + + @Test + @TestMetadata("unusedType_underscoreVariableInDestructuringDeclaration.kt") + public void testUnusedType_underscoreVariableInDestructuringDeclaration() throws Exception { + runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.kt"); + } + @Test @TestMetadata("usedAliasedAndRegularImportsFromSamePackage.kt") public void testUsedAliasedAndRegularImportsFromSamePackage() throws Exception { diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt index 5fa21f32ebd..d192e829e9e 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt @@ -132,11 +132,6 @@ internal class KtFirImportOptimizer( super.visitImplicitInvokeCall(implicitInvokeCall) } - override fun visitProperty(property: FirProperty) { - if (property.name == SpecialNames.UNDERSCORE_FOR_UNUSED_VAR) return - super.visitProperty(property) - } - override fun visitComponentCall(componentCall: FirComponentCall) { processFunctionCall(componentCall) super.visitComponentCall(componentCall) diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java index da7020ed5a8..c7531051772 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java @@ -136,6 +136,18 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGener runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedTypeAsVarargType.kt"); } + @Test + @TestMetadata("unusedType_underscoreNameInCatchSection.kt") + public void testUnusedType_underscoreNameInCatchSection() throws Exception { + runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.kt"); + } + + @Test + @TestMetadata("unusedType_underscoreVariableInDestructuringDeclaration.kt") + public void testUnusedType_underscoreVariableInDestructuringDeclaration() throws Exception { + runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.kt"); + } + @Test @TestMetadata("usedAliasedAndRegularImportsFromSamePackage.kt") public void testUsedAliasedAndRegularImportsFromSamePackage() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java index 3b1bede42a7..0ec2e56e6e5 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java @@ -136,6 +136,18 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTe runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedTypeAsVarargType.kt"); } + @Test + @TestMetadata("unusedType_underscoreNameInCatchSection.kt") + public void testUnusedType_underscoreNameInCatchSection() throws Exception { + runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.kt"); + } + + @Test + @TestMetadata("unusedType_underscoreVariableInDestructuringDeclaration.kt") + public void testUnusedType_underscoreVariableInDestructuringDeclaration() throws Exception { + runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.kt"); + } + @Test @TestMetadata("usedAliasedAndRegularImportsFromSamePackage.kt") public void testUsedAliasedAndRegularImportsFromSamePackage() throws Exception { diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedExtensionFunction_componentOperator.descriptors.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedExtensionFunction_componentOperator.descriptors.imports deleted file mode 100644 index 82445bc5675..00000000000 --- a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedExtensionFunction_componentOperator.descriptors.imports +++ /dev/null @@ -1 +0,0 @@ -dependency.component3 diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedExtensionFunction_componentOperator.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedExtensionFunction_componentOperator.imports index 2f072d9eaff..82445bc5675 100644 --- a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedExtensionFunction_componentOperator.imports +++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedExtensionFunction_componentOperator.imports @@ -1,2 +1 @@ -dependency.component2 -dependency.component3 \ No newline at end of file +dependency.component3 diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.imports new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.imports @@ -0,0 +1 @@ + diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.kt new file mode 100644 index 00000000000..1fa22aa9a43 --- /dev/null +++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreNameInCatchSection.kt @@ -0,0 +1,13 @@ +// FILE: main.kt +package test + +import dependency.MyException + +fun usage() { + try {} catch (_: MyException) {} +} + +// FILE: dependency.kt +package dependency + +class MyException : RuntimeException() \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.imports new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.imports @@ -0,0 +1 @@ + diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.kt new file mode 100644 index 00000000000..88d67f5be7c --- /dev/null +++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedType_underscoreVariableInDestructuringDeclaration.kt @@ -0,0 +1,16 @@ +// FILE: main.kt +package test + +import dependency.MyClass +import dependency.Holder + +fun usage(holder: Holder) { + val (one, _: MyClass) = holder +} + +// FILE: dependency.kt +package dependency + +class MyClass + +data class Holder(val one: MyClass, val two: MyClass)