From ca2a46e42fbd5058cd5c326de39dbdda163d92f4 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 21 Jan 2015 16:31:11 +0300 Subject: [PATCH] Auto-import popup to work for ambiguous class name --- .../jetbrains/kotlin/idea/actions/JetAddImportAction.kt | 3 ++- .../org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt | 1 - .../quickfix/autoImports/ambiguousClassName.after.kt | 9 +++++++++ .../autoImports/ambiguousClassName.before.Main.kt | 8 ++++++++ .../autoImports/ambiguousClassName.before.data.Sample.kt | 3 +++ .../idea/quickfix/QuickFixMultiFileTestGenerated.java | 6 ++++++ 6 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 idea/testData/quickfix/autoImports/ambiguousClassName.after.kt create mode 100644 idea/testData/quickfix/autoImports/ambiguousClassName.before.Main.kt create mode 100644 idea/testData/quickfix/autoImports/ambiguousClassName.before.data.Sample.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/JetAddImportAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/JetAddImportAction.kt index 1726aa44ebb..477c1bea67e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/JetAddImportAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/JetAddImportAction.kt @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.idea.quickfix.ImportInsertHelper import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetSimpleNameExpression +import org.jetbrains.kotlin.resolve.ImportPath /** * Automatically adds import directive to the file for resolving reference. @@ -114,7 +115,7 @@ public class JetAddImportAction( override fun run() { ApplicationManager.getApplication().runWriteAction { val file = element.getContainingFile() as JetFile - ImportInsertHelper.getInstance().addImportDirectiveIfNeeded(selectedImport, file) + ImportInsertHelper.getInstance().writeImportToFile(ImportPath(selectedImport, false), file) } } }, QuickFixBundle.message("add.import"), null) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt index 2df343601c5..8528624073c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt @@ -156,7 +156,6 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction) { +} diff --git a/idea/testData/quickfix/autoImports/ambiguousClassName.before.Main.kt b/idea/testData/quickfix/autoImports/ambiguousClassName.before.Main.kt new file mode 100644 index 00000000000..fa60d00165f --- /dev/null +++ b/idea/testData/quickfix/autoImports/ambiguousClassName.before.Main.kt @@ -0,0 +1,8 @@ +// "Import" "true" +// ERROR: Unresolved reference: Date + +import java.util.* +import dependency.* + +fun foo(d: Date) { +} diff --git a/idea/testData/quickfix/autoImports/ambiguousClassName.before.data.Sample.kt b/idea/testData/quickfix/autoImports/ambiguousClassName.before.data.Sample.kt new file mode 100644 index 00000000000..226f43311c7 --- /dev/null +++ b/idea/testData/quickfix/autoImports/ambiguousClassName.before.data.Sample.kt @@ -0,0 +1,3 @@ +package dependency + +class Date \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java index b5eac979353..9b9cf6e4b01 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java @@ -56,6 +56,12 @@ public class QuickFixMultiFileTestGenerated extends AbstractQuickFixMultiFileTes JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/autoImports"), Pattern.compile("^(\\w+)\\.before\\.Main\\.kt$"), true); } + @TestMetadata("ambiguousClassName.before.Main.kt") + public void testAmbiguousClassName() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/ambiguousClassName.before.Main.kt"); + doTestWithExtraFile(fileName); + } + @TestMetadata("classImport.before.Main.kt") public void testClassImport() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/classImport.before.Main.kt");