Get rid of IndexNotReadyException in CreateActualFix
Related to KT-19586
This commit is contained in:
@@ -20,6 +20,7 @@ import com.intellij.codeInsight.intention.IntentionAction
|
|||||||
import com.intellij.ide.util.EditorHelper
|
import com.intellij.ide.util.EditorHelper
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
|
import com.intellij.openapi.project.DumbService
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.JavaDirectoryService
|
import com.intellij.psi.JavaDirectoryService
|
||||||
import com.intellij.psi.codeStyle.CodeStyleManager
|
import com.intellij.psi.codeStyle.CodeStyleManager
|
||||||
@@ -40,6 +41,7 @@ import org.jetbrains.kotlin.idea.quickfix.KotlinSingleIntentionActionFactory
|
|||||||
import org.jetbrains.kotlin.idea.refactoring.createKotlinFile
|
import org.jetbrains.kotlin.idea.refactoring.createKotlinFile
|
||||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||||
import org.jetbrains.kotlin.idea.util.actualsForExpected
|
import org.jetbrains.kotlin.idea.util.actualsForExpected
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -71,9 +73,10 @@ sealed class CreateActualFix<out D : KtNamedDeclaration>(
|
|||||||
val factory = KtPsiFactory(project)
|
val factory = KtPsiFactory(project)
|
||||||
|
|
||||||
val actualFile = getOrCreateImplementationFile() ?: return
|
val actualFile = getOrCreateImplementationFile() ?: return
|
||||||
val generated = factory.generateIt(project, element) ?: return
|
DumbService.getInstance(project).runWhenSmart {
|
||||||
|
val generated = factory.generateIt(project, element) ?: return@runWhenSmart
|
||||||
|
|
||||||
runWriteAction {
|
project.executeWriteCommand("Create actual declaration") {
|
||||||
if (actualFile.packageDirective?.fqName != file.packageDirective?.fqName &&
|
if (actualFile.packageDirective?.fqName != file.packageDirective?.fqName &&
|
||||||
actualFile.declarations.isEmpty()
|
actualFile.declarations.isEmpty()
|
||||||
) {
|
) {
|
||||||
@@ -94,6 +97,7 @@ sealed class CreateActualFix<out D : KtNamedDeclaration>(
|
|||||||
EditorHelper.openInEditor(shortened)?.caretModel?.moveToOffset(shortened.textRange.startOffset)
|
EditorHelper.openInEditor(shortened)?.caretModel?.moveToOffset(shortened.textRange.startOffset)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun getOrCreateImplementationFile(): KtFile? {
|
private fun getOrCreateImplementationFile(): KtFile? {
|
||||||
val declaration = element as? KtNamedDeclaration ?: return null
|
val declaration = element as? KtNamedDeclaration ?: return null
|
||||||
|
|||||||
Reference in New Issue
Block a user