diff --git a/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt b/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt index 02b6cbe4bca3..045ab330e524 100644 --- a/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt +++ b/plugins/kotlin/base/fe10/analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt @@ -135,7 +135,7 @@ object SourceNavigationHelper { private fun Collection.union(): List = if (this.isNotEmpty()) listOf(GlobalSearchScope.union(this)) else emptyList() - private fun haveRenamesInImports(files: Collection) = files.any { file -> file.importDirectives.any { it.aliasName != null } } + private fun haveRenamesInImports(files: Collection) = files.any(KtFile::hasImportAlias) private fun findSpecialProperty(memberName: Name, containingClass: KtClass): KtNamedDeclaration? { // property constructor parameters diff --git a/plugins/kotlin/base/psi/src/org/jetbrains/kotlin/idea/base/psi/KotlinPsiHeuristics.kt b/plugins/kotlin/base/psi/src/org/jetbrains/kotlin/idea/base/psi/KotlinPsiHeuristics.kt index afe1113d221d..7692cb17bf08 100644 --- a/plugins/kotlin/base/psi/src/org/jetbrains/kotlin/idea/base/psi/KotlinPsiHeuristics.kt +++ b/plugins/kotlin/base/psi/src/org/jetbrains/kotlin/idea/base/psi/KotlinPsiHeuristics.kt @@ -23,6 +23,8 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs object KotlinPsiHeuristics { @JvmStatic fun unwrapImportAlias(file: KtFile, aliasName: String): Collection { + if (!file.hasImportAlias()) return emptyList() + return file.aliasImportMap[aliasName] } @@ -34,6 +36,8 @@ object KotlinPsiHeuristics { @JvmStatic fun getImportAliases(file: KtFile, names: Set): Set { + if (!file.hasImportAlias()) return emptySet() + val result = LinkedHashSet() for ((aliasName, name) in file.aliasImportMap.entries()) { if (name in names) { @@ -71,6 +75,7 @@ object KotlinPsiHeuristics { val file = type.containingKotlinFileStub?.psi as? KtFile ?: return false // TODO: support type aliases + if (!file.hasImportAlias()) return false return file.aliasImportMap[referencedName].contains("Nothing") } diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt index 2ece327bbd0d..2ad6fa7bdfb6 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt @@ -97,11 +97,15 @@ class KotlinImportOptimizer : ImportOptimizer { private class CollectUsedDescriptorsVisitor(file: KtFile) : KtVisitorVoid() { private val currentPackageName = file.packageFqName - private val aliases: Map> = file.importDirectives - .asSequence() - .filter { !it.isAllUnder && it.alias != null } - .mapNotNull { it.importPath } - .groupBy(keySelector = { it.fqName }, valueTransform = { it.importedName as Name }) + private val aliases: Map> = if (file.hasImportAlias()) { + file.importDirectives + .asSequence() + .filter { !it.isAllUnder && it.alias != null } + .mapNotNull { it.importPath } + .groupBy(keySelector = { it.fqName }, valueTransform = { it.importedName as Name }) + } else { + emptyMap() + } private val descriptorsToImport = hashSetOf() private val namesToImport = hashMapOf>() diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithImportAliasInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithImportAliasInspection.kt index eef574ecc446..81500e9c8e1d 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithImportAliasInspection.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithImportAliasInspection.kt @@ -35,7 +35,10 @@ class ReplaceWithImportAliasInspection : AbstractKotlinInspection() { private fun KtNameReferenceExpression.aliasNameIdentifier(): PsiElement? { val name = getIdentifier()?.text ?: return null - val imports = containingKtFile.importDirectives.filter { + val ktFile = containingKtFile + if (!ktFile.hasImportAlias()) return null + + val imports = ktFile.importDirectives.filter { !it.isAllUnder && it.alias != null && it.importedFqName?.shortName()?.asString() == name }.ifEmpty { return null } diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/AddFullQualifierIntention.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/AddFullQualifierIntention.kt index efb2c9356b29..32cfd4b00a5e 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/AddFullQualifierIntention.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/AddFullQualifierIntention.kt @@ -61,7 +61,7 @@ class AddFullQualifierIntention : SelfTargetingIntention