From d60145d3e8a6732db5737d551cbed190ccb4e26c Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 17 Feb 2015 15:35:03 +0300 Subject: [PATCH] Optimize imports: references via aliases are treated correctly --- .../kotlin/idea/imports/KotlinImportOptimizer.kt | 8 ++++++-- .../editor/optimizeImports/AlreadyOptimized.kt.after | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt b/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt index 264da989e72..8bfee3d7152 100644 --- a/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt @@ -181,8 +181,9 @@ public class KotlinImportOptimizer() : ImportOptimizer { override fun visitJetElement(element: JetElement) { val reference = element.getReference() if (reference is JetReference) { + val referencedName = (element as? JetNameReferenceExpression)?.getReferencedNameAsName() //TODO: other types of references + val targets = reference.resolveToDescriptors() - //TODO: check if it's resolved through alias for (target in targets) { if (!target.canBeReferencedViaImport()) continue if (target is PackageViewDescriptor && target.getFqName().parent() == FqName.ROOT) continue // no need to import top-level packages (TODO: is that always true?) @@ -193,9 +194,12 @@ public class KotlinImportOptimizer() : ImportOptimizer { if (element.getReceiverExpression() != null) continue } + val importableDescriptor = target.getImportableDescriptor() + if (referencedName != null && importableDescriptor.getName() != referencedName) continue // resolved via alias + if (isAccessibleAsMember(target, element)) continue - usedDescriptors.add(target.getImportableDescriptor()) + usedDescriptors.add(importableDescriptor) } } diff --git a/idea/testData/editor/optimizeImports/AlreadyOptimized.kt.after b/idea/testData/editor/optimizeImports/AlreadyOptimized.kt.after index e55e48c777f..cbd7711e861 100644 --- a/idea/testData/editor/optimizeImports/AlreadyOptimized.kt.after +++ b/idea/testData/editor/optimizeImports/AlreadyOptimized.kt.after @@ -3,10 +3,10 @@ Comment 1 */ package sometest -import java.io as JavaIO -import java.text.Annotation as TextAnnotation import java.util.ArrayList import java.util.HashSet +import java.io as JavaIO +import java.text.Annotation as TextAnnotation /** Comment 2