From 19ef29e96cb4b2d11e7c8f42540a991b0c03b97c Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 7 Sep 2016 19:36:16 +0300 Subject: [PATCH] KT-12949 Type aliases are not considered for import when there is an unresolved reference #KT-12949 Fixed --- idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt | 2 ++ .../quickfix/autoImports/typeAliasImport.after.kt | 8 ++++++++ .../autoImports/typeAliasImport.before.Dependency.kt | 3 +++ .../quickfix/autoImports/typeAliasImport.before.Main.kt | 6 ++++++ .../idea/quickfix/QuickFixMultiFileTestGenerated.java | 6 ++++++ 5 files changed, 25 insertions(+) create mode 100644 idea/testData/quickfix/autoImports/typeAliasImport.after.kt create mode 100644 idea/testData/quickfix/autoImports/typeAliasImport.before.Dependency.kt create mode 100644 idea/testData/quickfix/autoImports/typeAliasImport.before.Main.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt index 6b58d84f7d7..69b1a8f9bc8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt @@ -197,6 +197,8 @@ internal abstract class OrdinaryImportFixBase(expression: T) : indicesHelper.getJvmClassesByName(name).filterTo(result, filterByCallType) } + indicesHelper.getTopLevelTypeAliases { it == name }.filterTo(result, filterByCallType) + indicesHelper.getTopLevelCallablesByName(name).filterTo(result, filterByCallType) } } diff --git a/idea/testData/quickfix/autoImports/typeAliasImport.after.kt b/idea/testData/quickfix/autoImports/typeAliasImport.after.kt new file mode 100644 index 00000000000..c1868c121b1 --- /dev/null +++ b/idea/testData/quickfix/autoImports/typeAliasImport.after.kt @@ -0,0 +1,8 @@ +import dependency.TestAlias + +// "Import" "true" +// ERROR: Unresolved reference: TestAlias + +fun test() { + val a = TestAlias +} diff --git a/idea/testData/quickfix/autoImports/typeAliasImport.before.Dependency.kt b/idea/testData/quickfix/autoImports/typeAliasImport.before.Dependency.kt new file mode 100644 index 00000000000..b4b628f4aff --- /dev/null +++ b/idea/testData/quickfix/autoImports/typeAliasImport.before.Dependency.kt @@ -0,0 +1,3 @@ +package dependency + +typealias TestAlias = () -> Unit \ No newline at end of file diff --git a/idea/testData/quickfix/autoImports/typeAliasImport.before.Main.kt b/idea/testData/quickfix/autoImports/typeAliasImport.before.Main.kt new file mode 100644 index 00000000000..34116ab4525 --- /dev/null +++ b/idea/testData/quickfix/autoImports/typeAliasImport.before.Main.kt @@ -0,0 +1,6 @@ +// "Import" "true" +// ERROR: Unresolved reference: TestAlias + +fun test() { + val a = TestAlias +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java index 11eb51432f5..80ace1f0d65 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java @@ -473,6 +473,12 @@ public class QuickFixMultiFileTestGenerated extends AbstractQuickFixMultiFileTes doTestWithExtraFile(fileName); } + @TestMetadata("typeAliasImport.before.Main.kt") + public void testTypeAliasImport() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/typeAliasImport.before.Main.kt"); + doTestWithExtraFile(fileName); + } + @TestMetadata("unaryMinusOperator.before.Main.kt") public void testUnaryMinusOperator() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/unaryMinusOperator.before.Main.kt");