From 5b4afa140bf8293d57ef63e92a39f5b66d299b96 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 2 Mar 2015 21:04:39 +0300 Subject: [PATCH] Fixed bug in reference shortening related on on the fly import optimization --- .../src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt | 5 ++++- idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt | 5 +++++ .../shortenRefs/imports/ImportsOnTheFlyBug.kt.after | 5 +++++ .../kotlin/shortenRefs/ShortenRefsTestGenerated.java | 6 ++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt create mode 100644 idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt.after diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt index b57a68b9710..a2a63d9168a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ShortenReferences.kt @@ -159,6 +159,10 @@ public class ShortenReferences(val options: (JetElement) -> Options = { Options. for (descriptor in descriptorsToImport) { assert(descriptor !in failedToImportDescriptors) + if (importInserter.optimizeImports()) { + anyChange = true + } + val result = importInserter.addImport(descriptor) if (result != ImportInsertHelper.ImportDescriptorResult.ALREADY_IMPORTED) { anyChange = true @@ -456,7 +460,6 @@ public class ShortenReferences(val options: (JetElement) -> Options = { Options. private val helper = ImportInsertHelper.getInstance(file.getProject()) fun addImport(target: DeclarationDescriptor): ImportInsertHelper.ImportDescriptorResult { - optimizeImports() return helper.importDescriptor(file, target) } diff --git a/idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt b/idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt new file mode 100644 index 00000000000..49111aeb08d --- /dev/null +++ b/idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt @@ -0,0 +1,5 @@ +// OPTIMIZE_IMPORTS: true +// NAME_COUNT_TO_USE_STAR_IMPORT: 1 +import java.util.HashMap + +val v: HashMapjava.util.Date> \ No newline at end of file diff --git a/idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt.after b/idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt.after new file mode 100644 index 00000000000..1c598ceb80f --- /dev/null +++ b/idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt.after @@ -0,0 +1,5 @@ +// OPTIMIZE_IMPORTS: true +// NAME_COUNT_TO_USE_STAR_IMPORT: 1 +import java.util.* + +val v: HashMap \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/shortenRefs/ShortenRefsTestGenerated.java b/idea/tests/org/jetbrains/kotlin/shortenRefs/ShortenRefsTestGenerated.java index 3abd873ad37..992432ca371 100644 --- a/idea/tests/org/jetbrains/kotlin/shortenRefs/ShortenRefsTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/shortenRefs/ShortenRefsTestGenerated.java @@ -186,6 +186,12 @@ public class ShortenRefsTestGenerated extends AbstractShortenRefsTest { doTest(fileName); } + @TestMetadata("ImportsOnTheFlyBug.kt") + public void testImportsOnTheFlyBug() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/shortenRefs/imports/ImportsOnTheFlyBug.kt"); + doTest(fileName); + } + @TestMetadata("leaveQualifiedConstructor.kt") public void testLeaveQualifiedConstructor() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/shortenRefs/imports/leaveQualifiedConstructor.kt");