diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ImportInsertHelper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ImportInsertHelper.kt index e6a1f7a64aa..116c1dc67b6 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ImportInsertHelper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ImportInsertHelper.kt @@ -16,19 +16,18 @@ package org.jetbrains.kotlin.idea.util -import org.jetbrains.kotlin.psi.JetFile -import org.jetbrains.kotlin.psi.JetImportDirective -import org.jetbrains.kotlin.resolve.ImportPath -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor -import com.intellij.openapi.project.Project import com.intellij.openapi.components.ServiceManager +import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.psi.JetFile +import org.jetbrains.kotlin.resolve.ImportPath import java.util.* public abstract class ImportInsertHelper { /*TODO: implementation is not quite correct*/ public abstract fun isImportedWithDefault(importPath: ImportPath, contextFile: JetFile): Boolean - public abstract fun mayImportByCodeStyle(descriptor: DeclarationDescriptor): Boolean + public abstract fun mayImportOnShortenReferences(descriptor: DeclarationDescriptor): Boolean public abstract val importSortComparator: Comparator 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 c1f593a0f54..44b2e075fae 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 @@ -65,7 +65,7 @@ public class ShortenReferences(val options: (JetElement) -> Options = { Options. private fun mayImport(descriptor: DeclarationDescriptor, file: JetFile): Boolean { return descriptor.canBeReferencedViaImport() - && ImportInsertHelper.getInstance(file.getProject()).mayImportByCodeStyle(descriptor) + && ImportInsertHelper.getInstance(file.getProject()).mayImportOnShortenReferences(descriptor) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt index 292c4c131ef..8f46df288d4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt @@ -81,7 +81,7 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert return importPath.isImported(defaultImports) } - override fun mayImportByCodeStyle(descriptor: DeclarationDescriptor): Boolean { + override fun mayImportOnShortenReferences(descriptor: DeclarationDescriptor): Boolean { val importable = descriptor.getImportableDescriptor() return when (importable) { is PackageViewDescriptor -> false // now package cannot be imported @@ -132,10 +132,6 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert val targetFqName = target.importableFqName ?: return ImportDescriptorResult.FAIL if (isAlreadyImported(target, topLevelScope, targetFqName)) return ImportDescriptorResult.ALREADY_IMPORTED - if (!mayImportByCodeStyle(descriptor)) { - return ImportDescriptorResult.FAIL - } - val imports = if (file is JetCodeFragment) file.importsAsImportList()?.getImports() ?: listOf() else diff --git a/idea/testData/addImport/DoNotImportNestedClass.kt b/idea/testData/addImport/DoNotImportNestedClass.kt deleted file mode 100644 index a8315a8b19a..00000000000 --- a/idea/testData/addImport/DoNotImportNestedClass.kt +++ /dev/null @@ -1 +0,0 @@ -// IMPORT: kotlin.Map.Entry diff --git a/idea/testData/addImport/DoNotImportNestedClass.kt.after b/idea/testData/addImport/DoNotImportNestedClass.kt.after deleted file mode 100644 index 81c2e19b906..00000000000 --- a/idea/testData/addImport/DoNotImportNestedClass.kt.after +++ /dev/null @@ -1 +0,0 @@ -Failed to add import diff --git a/idea/testData/addImport/ImportFromObject.dependency.kt b/idea/testData/addImport/ImportFromObject.dependency.kt new file mode 100644 index 00000000000..88cb1689a18 --- /dev/null +++ b/idea/testData/addImport/ImportFromObject.dependency.kt @@ -0,0 +1,5 @@ +package dependency + +object MyObject { + fun someFun(){} +} \ No newline at end of file diff --git a/idea/testData/addImport/ImportFromObject.kt b/idea/testData/addImport/ImportFromObject.kt new file mode 100644 index 00000000000..952d5039b18 --- /dev/null +++ b/idea/testData/addImport/ImportFromObject.kt @@ -0,0 +1,4 @@ +// IMPORT: dependency.MyObject.someFun +fun foo() { + someFun() +} \ No newline at end of file diff --git a/idea/testData/addImport/ImportFromObject.kt.after b/idea/testData/addImport/ImportFromObject.kt.after new file mode 100644 index 00000000000..3fc5a91140f --- /dev/null +++ b/idea/testData/addImport/ImportFromObject.kt.after @@ -0,0 +1,6 @@ +import dependency.MyObject.someFun + +// IMPORT: dependency.MyObject.someFun +fun foo() { + someFun() +} \ No newline at end of file diff --git a/idea/testData/addImport/ImportNestedClass.kt b/idea/testData/addImport/ImportNestedClass.kt index 9f06e411bf9..a8315a8b19a 100644 --- a/idea/testData/addImport/ImportNestedClass.kt +++ b/idea/testData/addImport/ImportNestedClass.kt @@ -1,2 +1 @@ // IMPORT: kotlin.Map.Entry -// IMPORT_NESTED_CLASSES: true diff --git a/idea/testData/addImport/ImportNestedClass.kt.after b/idea/testData/addImport/ImportNestedClass.kt.after index 0f5940edd65..c0eee01156e 100644 --- a/idea/testData/addImport/ImportNestedClass.kt.after +++ b/idea/testData/addImport/ImportNestedClass.kt.after @@ -1,4 +1,3 @@ import kotlin.Map.* // IMPORT: kotlin.Map.Entry -// IMPORT_NESTED_CLASSES: true diff --git a/idea/tests/org/jetbrains/kotlin/addImport/AddImportTestGenerated.java b/idea/tests/org/jetbrains/kotlin/addImport/AddImportTestGenerated.java index 4e8c86a96b8..a1e08751358 100644 --- a/idea/tests/org/jetbrains/kotlin/addImport/AddImportTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/addImport/AddImportTestGenerated.java @@ -155,12 +155,6 @@ public class AddImportTestGenerated extends AbstractAddImportTest { doTest(fileName); } - @TestMetadata("DoNotImportNestedClass.kt") - public void testDoNotImportNestedClass() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/addImport/DoNotImportNestedClass.kt"); - doTest(fileName); - } - @TestMetadata("DropExplicitImports.kt") public void testDropExplicitImports() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/addImport/DropExplicitImports.kt"); @@ -197,6 +191,12 @@ public class AddImportTestGenerated extends AbstractAddImportTest { doTest(fileName); } + @TestMetadata("ImportFromObject.kt") + public void testImportFromObject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/addImport/ImportFromObject.kt"); + doTest(fileName); + } + @TestMetadata("ImportFunctionBug.kt") public void testImportFunctionBug() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/addImport/ImportFunctionBug.kt");