From 68dec99ad7d365fcc0f79e48d99a752189d8a6b7 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 15 Jul 2015 13:13:43 +0300 Subject: [PATCH] KT-8389 Meaningless self-import insterted on "optimize imports" #KT-8389 Fixed --- .../kotlin/idea/imports/KotlinImportOptimizer.kt | 7 ++++++- .../optimizeImports/ClassFromSameFileImportAddedBug.kt | 8 ++++++++ .../ClassFromSameFileImportAddedBug.kt.after | 8 ++++++++ .../kotlin/idea/imports/OptimizeImportsTestGenerated.java | 6 ++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt create mode 100644 idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt b/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt index f13c09ff6a5..c3b161502f8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt @@ -90,9 +90,14 @@ public class KotlinImportOptimizer() : ImportOptimizer { for (descriptor in descriptorsToImport) { val fqName = descriptor.importableFqNameSafe val parentFqName = fqName.parent() - if (descriptor is PackageViewDescriptor || parentFqName.isRoot()) { + if (descriptor is PackageViewDescriptor) { importsToGenerate.add(ImportPath(fqName, false)) } + else if (parentFqName.isRoot()) { + if (!currentPackageName.isRoot()) { + importsToGenerate.add(ImportPath(fqName, false)) + } + } else { descriptorsByPackages.put(parentFqName, descriptor) } diff --git a/idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt b/idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt new file mode 100644 index 00000000000..84541f2df02 --- /dev/null +++ b/idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt @@ -0,0 +1,8 @@ +import java.io.Serializable + +public class Test : Serializable { + companion object { + val clazz = javaClass() + } + +} \ No newline at end of file diff --git a/idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt.after b/idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt.after new file mode 100644 index 00000000000..84541f2df02 --- /dev/null +++ b/idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt.after @@ -0,0 +1,8 @@ +import java.io.Serializable + +public class Test : Serializable { + companion object { + val clazz = javaClass() + } + +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/imports/OptimizeImportsTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/imports/OptimizeImportsTestGenerated.java index 7e49854f9b6..64265504cc6 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/imports/OptimizeImportsTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/imports/OptimizeImportsTestGenerated.java @@ -47,6 +47,12 @@ public class OptimizeImportsTestGenerated extends AbstractOptimizeImportsTest { doTest(fileName); } + @TestMetadata("ClassFromSameFileImportAddedBug.kt") + public void testClassFromSameFileImportAddedBug() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt"); + doTest(fileName); + } + @TestMetadata("ClassMemberImported.kt") public void testClassMemberImported() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/ClassMemberImported.kt");