No nested classes auto-import
This commit is contained in:
@@ -23,6 +23,7 @@ import com.intellij.openapi.command.CommandProcessor
|
|||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.util.TextRange
|
import com.intellij.openapi.util.TextRange
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.idea.actions.KotlinAddImportAction
|
import org.jetbrains.kotlin.idea.actions.KotlinAddImportAction
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
import org.jetbrains.kotlin.idea.core.targetDescriptors
|
import org.jetbrains.kotlin.idea.core.targetDescriptors
|
||||||
@@ -50,7 +51,6 @@ public class KotlinReferenceImporter : ReferenceImporter {
|
|||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
// TODO: use in table cell
|
// TODO: use in table cell
|
||||||
// TODO: filter out non-top level
|
|
||||||
public fun autoImportReferenceAtCursor(editor: Editor, file: PsiFile, allowCaretNearRef: Boolean): Boolean {
|
public fun autoImportReferenceAtCursor(editor: Editor, file: PsiFile, allowCaretNearRef: Boolean): Boolean {
|
||||||
if (file !is JetFile) return false
|
if (file !is JetFile) return false
|
||||||
|
|
||||||
@@ -87,10 +87,13 @@ public class KotlinReferenceImporter : ReferenceImporter {
|
|||||||
val bindingContext = analyze(BodyResolveMode.PARTIAL)
|
val bindingContext = analyze(BodyResolveMode.PARTIAL)
|
||||||
if (mainReference.resolveToDescriptors(bindingContext).isNotEmpty()) return false
|
if (mainReference.resolveToDescriptors(bindingContext).isNotEmpty()) return false
|
||||||
|
|
||||||
val suggestions = AutoImportFix.computeSuggestions(this)
|
var suggestions = AutoImportFix.computeSuggestions(this)
|
||||||
|
|
||||||
if (suggestions.distinctBy { it.importableFqName!! }.size() != 1) return false
|
if (suggestions.distinctBy { it.importableFqName!! }.size() != 1) return false
|
||||||
|
|
||||||
|
// we do not auto-import nested classes because this will probably add qualification into the text and this will confuse the user
|
||||||
|
if (suggestions.any { it is ClassDescriptor && it.containingDeclaration is ClassDescriptor }) return false
|
||||||
|
|
||||||
var result = false
|
var result = false
|
||||||
CommandProcessor.getInstance().runUndoTransparentAction {
|
CommandProcessor.getInstance().runUndoTransparentAction {
|
||||||
result = KotlinAddImportAction(project, editor, this, suggestions).execute()
|
result = KotlinAddImportAction(project, editor, this, suggestions).execute()
|
||||||
|
|||||||
Reference in New Issue
Block a user