KTIJ-26276 [Analysis API] Do not consider single aliased import from the same package as unused
Even when the aliased import comes from the same package, it cannot be removed, because it will break the code Also, add more tests for the imports coming from the same package ^KTIJ-26276 Fixed
This commit is contained in:
+24
@@ -52,6 +52,12 @@ public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGene
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedAliasedImportFromSamePackage.kt")
|
||||
public void testUnusedAliasedImportFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedAliasedImportFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedAliasedTypeImport.kt")
|
||||
public void testUnusedAliasedTypeImport() throws Exception {
|
||||
@@ -94,6 +100,12 @@ public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGene
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedImportFromObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedImportsFromSamePackage.kt")
|
||||
public void testUnusedImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedInvokeOperatorImport.kt")
|
||||
public void testUnusedInvokeOperatorImport() throws Exception {
|
||||
@@ -106,12 +118,24 @@ public class Fe10IdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGene
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedStaticFunctionImportFromJavaChildClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedAndRegularImportsFromSamePackage.kt")
|
||||
public void testUsedAliasedAndRegularImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedAndRegularImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedFunctionReference.kt")
|
||||
public void testUsedAliasedFunctionReference() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedFunctionReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedImportsFromSamePackage.kt")
|
||||
public void testUsedAliasedImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedTypeImport.kt")
|
||||
public void testUsedAliasedTypeImport() throws Exception {
|
||||
|
||||
+4
-2
@@ -67,8 +67,10 @@ internal class KtFirImportOptimizer(
|
||||
|
||||
val referencesEntities = usedImports
|
||||
.filterNot { (fqName, referencedByNames) ->
|
||||
// when referenced by more than one name, we need to keep the imports with same package
|
||||
fqName.parentOrNull() == file.packageFqName && referencedByNames.size == 1
|
||||
val fromCurrentPackage = fqName.parentOrNull() == file.packageFqName
|
||||
val noAliasedImports = referencedByNames.singleOrNull() == fqName.shortName()
|
||||
|
||||
fromCurrentPackage && noAliasedImports
|
||||
}
|
||||
|
||||
val requiredStarImports = referencesEntities.keys
|
||||
|
||||
+24
@@ -52,6 +52,12 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGener
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedAliasedImportFromSamePackage.kt")
|
||||
public void testUnusedAliasedImportFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedAliasedImportFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedAliasedTypeImport.kt")
|
||||
public void testUnusedAliasedTypeImport() throws Exception {
|
||||
@@ -94,6 +100,12 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGener
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedImportFromObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedImportsFromSamePackage.kt")
|
||||
public void testUnusedImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedInvokeOperatorImport.kt")
|
||||
public void testUnusedInvokeOperatorImport() throws Exception {
|
||||
@@ -106,12 +118,24 @@ public class FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGener
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedStaticFunctionImportFromJavaChildClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedAndRegularImportsFromSamePackage.kt")
|
||||
public void testUsedAliasedAndRegularImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedAndRegularImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedFunctionReference.kt")
|
||||
public void testUsedAliasedFunctionReference() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedFunctionReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedImportsFromSamePackage.kt")
|
||||
public void testUsedAliasedImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedTypeImport.kt")
|
||||
public void testUsedAliasedTypeImport() throws Exception {
|
||||
|
||||
+24
@@ -52,6 +52,12 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTe
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unsedObjectWithExtensionFromObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedAliasedImportFromSamePackage.kt")
|
||||
public void testUnusedAliasedImportFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedAliasedImportFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedAliasedTypeImport.kt")
|
||||
public void testUnusedAliasedTypeImport() throws Exception {
|
||||
@@ -94,6 +100,12 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTe
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedImportFromObject.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedImportsFromSamePackage.kt")
|
||||
public void testUnusedImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unusedInvokeOperatorImport.kt")
|
||||
public void testUnusedInvokeOperatorImport() throws Exception {
|
||||
@@ -106,12 +118,24 @@ public class FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTe
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/unusedStaticFunctionImportFromJavaChildClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedAndRegularImportsFromSamePackage.kt")
|
||||
public void testUsedAliasedAndRegularImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedAndRegularImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedFunctionReference.kt")
|
||||
public void testUsedAliasedFunctionReference() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedFunctionReference.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedImportsFromSamePackage.kt")
|
||||
public void testUsedAliasedImportsFromSamePackage() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedAliasedImportsFromSamePackage.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("usedAliasedTypeImport.kt")
|
||||
public void testUsedAliasedTypeImport() throws Exception {
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
test.SamePackage as Aliased
|
||||
test.samePackage as aliased
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package test
|
||||
|
||||
import test.SamePackage as Aliased
|
||||
import test.samePackage as aliased
|
||||
|
||||
class SamePackage
|
||||
|
||||
fun samePackage() {}
|
||||
|
||||
fun usage(a: SamePackage) {
|
||||
samePackage()
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
test.SamePackage
|
||||
test.samePackage
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// FILE: main.kt
|
||||
|
||||
package test
|
||||
|
||||
import test.SamePackage
|
||||
import test.samePackage
|
||||
|
||||
fun usage(a: SamePackage) {
|
||||
samePackage()
|
||||
}
|
||||
|
||||
// FILE: dependency.kt
|
||||
package test
|
||||
|
||||
class SamePackage
|
||||
|
||||
fun samePackage() {}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// FILE: main.kt
|
||||
|
||||
package test
|
||||
|
||||
import test.SamePackage
|
||||
import test.SamePackage as Aliased
|
||||
import test.samePackage
|
||||
import test.samePackage as aliased
|
||||
|
||||
fun usage(a: Aliased, b: SamePackage) {
|
||||
aliased()
|
||||
samePackage()
|
||||
}
|
||||
|
||||
// FILE: dependency.kt
|
||||
package test
|
||||
|
||||
class SamePackage
|
||||
|
||||
fun samePackage() {}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// FILE: main.kt
|
||||
package test
|
||||
|
||||
import test.SamePackage as Aliased
|
||||
import test.samePackage as aliased
|
||||
|
||||
fun usage(a: Aliased) {
|
||||
aliased()
|
||||
}
|
||||
|
||||
// FILE: dependency.kt
|
||||
package test
|
||||
|
||||
class SamePackage
|
||||
|
||||
fun samePackage() {}
|
||||
Reference in New Issue
Block a user