Exclude alias imported names from all-under imported packages when determining whether a type has been imported for completion.
#KT-13447 Fixed
This commit is contained in:
@@ -2,3 +2,4 @@ package ppp1
|
|||||||
|
|
||||||
class MyClass1
|
class MyClass1
|
||||||
class MyClass2
|
class MyClass2
|
||||||
|
class MyClass7
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import ppp1.*
|
import ppp1.*
|
||||||
import ppp3.MyClass6
|
import ppp3.MyClass6
|
||||||
|
import ppp1.MyClass7 as AnotherClass7
|
||||||
|
|
||||||
val v = My<caret>
|
val v = My<caret>
|
||||||
|
|
||||||
@@ -22,3 +23,6 @@ val v = My<caret>
|
|||||||
|
|
||||||
/* not imported */
|
/* not imported */
|
||||||
// ORDER: MyClass4
|
// ORDER: MyClass4
|
||||||
|
|
||||||
|
/* not imported */
|
||||||
|
// ORDER: MyClass7
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ class ImportableFqNameClassifier(private val file: KtFile) {
|
|||||||
private val preciseImports = HashSet<FqName>()
|
private val preciseImports = HashSet<FqName>()
|
||||||
private val preciseImportPackages = HashSet<FqName>()
|
private val preciseImportPackages = HashSet<FqName>()
|
||||||
private val allUnderImports = HashSet<FqName>()
|
private val allUnderImports = HashSet<FqName>()
|
||||||
|
private val excludedImports = HashSet<FqName>()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
for (import in file.importDirectives) {
|
for (import in file.importDirectives) {
|
||||||
@@ -37,9 +38,12 @@ class ImportableFqNameClassifier(private val file: KtFile) {
|
|||||||
if (importPath.isAllUnder) {
|
if (importPath.isAllUnder) {
|
||||||
allUnderImports.add(fqName)
|
allUnderImports.add(fqName)
|
||||||
}
|
}
|
||||||
else {
|
else if (!importPath.hasAlias()) {
|
||||||
preciseImports.add(fqName)
|
preciseImports.add(fqName)
|
||||||
preciseImportPackages.add(fqName.parent())
|
preciseImportPackages.add(fqName.parent())
|
||||||
|
} else {
|
||||||
|
excludedImports.add(fqName)
|
||||||
|
// TODO: support aliased imports in completion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -84,7 +88,7 @@ class ImportableFqNameClassifier(private val file: KtFile) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isImportedWithPreciseImport(name: FqName) = name in preciseImports
|
private fun isImportedWithPreciseImport(name: FqName) = name in preciseImports
|
||||||
private fun isImportedWithAllUnderImport(name: FqName) = name.parent() in allUnderImports
|
private fun isImportedWithAllUnderImport(name: FqName) = name.parent() in allUnderImports && name !in excludedImports
|
||||||
private fun hasPreciseImportFromPackage(packageName: FqName) = packageName in preciseImportPackages
|
private fun hasPreciseImportFromPackage(packageName: FqName) = packageName in preciseImportPackages
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user