diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/refactoring/fqName/fqNameUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/refactoring/fqName/fqNameUtil.kt index e0e496a0fc4..49a0279cb45 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/refactoring/fqName/fqNameUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/refactoring/fqName/fqNameUtil.kt @@ -54,4 +54,8 @@ fun ImportPath.isImported(alreadyImported: ImportPath): Boolean { return if (isAllUnder || hasAlias()) this == alreadyImported else fqnPart().isImported(alreadyImported) } -fun ImportPath.isImported(imports: Iterable): Boolean = imports.any { isImported(it) } +private fun ImportPath.isImported(imports: Iterable): Boolean = imports.any { isImported(it) } + +fun ImportPath.isImported(imports: Iterable, excludedFqNames: Iterable): Boolean { + return isImported(imports) && (isAllUnder || this.fqnPart() !in excludedFqNames) +} diff --git a/idea/idea-completion/testData/basic/java/StandardKotlinTypeAliasFirst.kt b/idea/idea-completion/testData/basic/java/StandardKotlinTypeAliasFirst.kt new file mode 100644 index 00000000000..39af925666b --- /dev/null +++ b/idea/idea-completion/testData/basic/java/StandardKotlinTypeAliasFirst.kt @@ -0,0 +1,7 @@ +fun some(e: IllegalArgumentException) { +} + +// INVOCATION_COUNT: 2 +// WITH_ORDER +// EXIST: { lookupString:"IllegalArgumentException", typeText:"public typealias IllegalArgumentException = IllegalArgumentException defined in kotlin" } +// EXIST: { lookupString:"IllegalArgumentException", tailText:" (java.lang)" } diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java index 12f1509442f..99ac71c9d84 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java @@ -2755,6 +2755,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("StandardKotlinTypeAliasFirst.kt") + public void testStandardKotlinTypeAliasFirst() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/java/StandardKotlinTypeAliasFirst.kt"); + doTest(fileName); + } + @TestMetadata("TopLevelFromStandardLibrary.kt") public void testTopLevelFromStandardLibrary() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/java/TopLevelFromStandardLibrary.kt"); diff --git a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt index f7f0888fdb2..b67059c7bd8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt @@ -57,8 +57,8 @@ class ImportInsertHelperImpl(private val project: Project) : ImportInsertHelper( get() = ImportPathComparator override fun isImportedWithDefault(importPath: ImportPath, contextFile: KtFile): Boolean { - val defaultImports = contextFile.platform.defaultModuleParameters.defaultImports - return importPath.isImported(defaultImports) + val moduleParameters = contextFile.platform.defaultModuleParameters + return importPath.isImported(moduleParameters.defaultImports, moduleParameters.excludedImports) } override fun mayImportOnShortenReferences(descriptor: DeclarationDescriptor): Boolean {