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 MyClass2
|
||||
class MyClass7
|
||||
@@ -1,5 +1,6 @@
|
||||
import ppp1.*
|
||||
import ppp3.MyClass6
|
||||
import ppp1.MyClass7 as AnotherClass7
|
||||
|
||||
val v = My<caret>
|
||||
|
||||
@@ -22,3 +23,6 @@ val v = My<caret>
|
||||
|
||||
/* not imported */
|
||||
// ORDER: MyClass4
|
||||
|
||||
/* not imported */
|
||||
// ORDER: MyClass7
|
||||
|
||||
@@ -29,6 +29,7 @@ class ImportableFqNameClassifier(private val file: KtFile) {
|
||||
private val preciseImports = HashSet<FqName>()
|
||||
private val preciseImportPackages = HashSet<FqName>()
|
||||
private val allUnderImports = HashSet<FqName>()
|
||||
private val excludedImports = HashSet<FqName>()
|
||||
|
||||
init {
|
||||
for (import in file.importDirectives) {
|
||||
@@ -37,9 +38,12 @@ class ImportableFqNameClassifier(private val file: KtFile) {
|
||||
if (importPath.isAllUnder) {
|
||||
allUnderImports.add(fqName)
|
||||
}
|
||||
else {
|
||||
else if (!importPath.hasAlias()) {
|
||||
preciseImports.add(fqName)
|
||||
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 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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user