Create Test: Postpone J2K conversion until smart mode (matters if the user decides to add library in the Create Test dialog)

This commit is contained in:
Alexey Sedunov
2015-10-22 21:17:26 +03:00
committed by Alexey Sedunov
parent b6c01c0f94
commit 3ba55914c1
2 changed files with 28 additions and 23 deletions
@@ -31,3 +31,7 @@ public fun <T> Project.runWithAlternativeResolveEnabled(action: () -> T): T {
@Suppress("USELESS_CAST") @Suppress("USELESS_CAST")
return result as T return result as T
} }
public fun Project.runWhenSmart(action: () -> Unit) {
DumbService.getInstance(this).runWhenSmart(action)
}
@@ -43,6 +43,7 @@ import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingRangeIntention
import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.idea.util.application.executeCommand
import org.jetbrains.kotlin.idea.util.runWithAlternativeResolveEnabled import org.jetbrains.kotlin.idea.util.runWithAlternativeResolveEnabled
import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.idea.util.runWhenSmart
import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtEnumEntry import org.jetbrains.kotlin.psi.KtEnumEntry
@@ -133,9 +134,8 @@ class KotlinCreateTestIntention : JetSelfTargetingRangeIntention<KtClassOrObject
} }
} as? PsiClass ?: return } as? PsiClass ?: return
project.runWhenSmart {
val generatedFile = generatedClass.containingFile as? PsiJavaFile ?: return@runWhenSmart
val generatedFile = generatedClass.containingFile as? PsiJavaFile ?: return
if (generatedClass.language == JavaLanguage.INSTANCE) { if (generatedClass.language == JavaLanguage.INSTANCE) {
project.executeCommand("Convert class '${generatedClass.name}' to Kotlin", this) { project.executeCommand("Convert class '${generatedClass.name}' to Kotlin", this) {
@@ -163,6 +163,7 @@ class KotlinCreateTestIntention : JetSelfTargetingRangeIntention<KtClassOrObject
} }
} }
} }
}
}.invoke(element.project, editor, element.toLightClass()!!) }.invoke(element.project, editor, element.toLightClass()!!)
} }
} }