Initial implementation of new optimize imports algorithm

This commit is contained in:
Valentin Kipyatkov
2015-02-13 20:33:30 +03:00
parent 63182a53c6
commit 03f7c265d7
16 changed files with 196 additions and 111 deletions
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.idea.util
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.psi.JetImportDirective
import org.jetbrains.kotlin.resolve.ImportPath
@@ -24,6 +23,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import com.intellij.openapi.project.Project
import com.intellij.openapi.components.ServiceManager
import kotlin.platform.platformStatic
import java.util.*
public abstract class ImportInsertHelper {
@@ -31,10 +31,10 @@ public abstract class ImportInsertHelper {
public abstract fun isImportedWithDefault(importPath: ImportPath, contextFile: JetFile): Boolean
public abstract fun needImport(importPath: ImportPath, file: JetFile, importDirectives: List<JetImportDirective> = file.getImportDirectives()): Boolean
public abstract fun mayImportByCodeStyle(descriptor: DeclarationDescriptor): Boolean
public abstract val importSortComparator: Comparator<ImportPath>
public enum class ImportDescriptorResult {
FAIL
IMPORT_ADDED
@@ -60,8 +60,3 @@ public fun JetType.canBeReferencedViaImport(): Boolean {
val descriptor = getConstructor().getDeclarationDescriptor()
return descriptor != null && descriptor.canBeReferencedViaImport()
}
public fun isInReceiverScope(referenceElement: PsiElement, referencedDescriptor: DeclarationDescriptor): Boolean {
val isExpressionWithReceiver = referenceElement is JetSimpleNameExpression && referenceElement.getReceiverExpression() != null
return isExpressionWithReceiver && !referencedDescriptor.isExtension
}