diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt index 83db61f0736..94aab776e20 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AutoImportFix.kt @@ -23,6 +23,7 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project +import com.intellij.packageDependencies.DependencyValidationManager import com.intellij.psi.PsiFile import com.intellij.psi.util.PsiModificationTracker import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -34,6 +35,7 @@ import org.jetbrains.kotlin.idea.actions.KotlinAddImportAction import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.getResolveScope +import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper import org.jetbrains.kotlin.idea.core.getResolutionScope import org.jetbrains.kotlin.idea.core.isVisible @@ -160,7 +162,19 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction 1) + reduceCandidatesBasedOnDependencyRuleViolation(result, file) + else + result + } + + private fun reduceCandidatesBasedOnDependencyRuleViolation(candidates: Collection, file: PsiFile): Collection { + val project = file.project + val validationManager = DependencyValidationManager.getInstance(project) + return candidates.filter { + val targetFile = DescriptorToSourceUtilsIde.getAnyDeclaration(project, it)?.containingFile ?: return@filter true + validationManager.getViolatorDependencyRules(file, targetFile).isEmpty() + } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt index e6db83c776d..69d365229d8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt @@ -50,7 +50,6 @@ public class KotlinReferenceImporter : ReferenceImporter { companion object { // TODO: use in table cell - // TODO: DependencyValidationManager // TODO: filter out non-top level public fun autoImportReferenceAtCursor(editor: Editor, file: PsiFile, allowCaretNearRef: Boolean): Boolean { if (file !is JetFile) return false