KT-19278 Optimize imports on the fly should not remove incomplete import while it's being typed

#KT-19278 Fixed
This commit is contained in:
Valentin Kipyatkov
2017-08-07 13:01:42 +03:00
parent 8a17e6c1c9
commit ca418c727e
@@ -37,11 +37,14 @@ import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.progress.util.ProgressWrapper
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiDocumentManager
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiWhiteSpace
import com.intellij.psi.util.PsiUtilBase
import com.intellij.util.DocumentUtil
import org.jetbrains.kotlin.idea.core.targetDescriptors
import org.jetbrains.kotlin.idea.editor.fixers.end
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
import org.jetbrains.kotlin.idea.imports.OptimizedImportsBuilder
import org.jetbrains.kotlin.idea.imports.importableFqName
@@ -50,6 +53,7 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtCodeFragment
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtImportDirective
import org.jetbrains.kotlin.psi.psiUtil.siblings
import org.jetbrains.kotlin.resolve.ImportPath
import java.util.*
@@ -180,8 +184,11 @@ class KotlinUnusedImportInspection : AbstractKotlinInspection() {
// if we stand inside import statements, do not optimize
val importList = file.importList ?: return false
if (importList)
val importsRange = importList?.textRange ?: return false
val leftSpace = importList.siblings(forward = false, withItself = false).firstOrNull() as? PsiWhiteSpace
val rightSpace = importList.siblings(forward = true, withItself = false).firstOrNull() as? PsiWhiteSpace
val left = leftSpace ?: importList
val right = rightSpace ?: importList
val importsRange = TextRange(left.textRange.startOffset, right.textRange.endOffset)
if (importsRange.containsOffset(editor.caretModel.offset)) return false
val codeAnalyzer = DaemonCodeAnalyzerEx.getInstanceEx(project)