Fix deadlock in J2K

#KT-17230 fixed
This commit is contained in:
Simon Ogorodnik
2017-04-03 18:27:36 +03:00
parent 6bf23d5e02
commit 86137e1f65
2 changed files with 10 additions and 6 deletions
@@ -106,9 +106,7 @@ class JavaToKotlinAction : AnAction() {
if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(
{
runReadAction(::convert)
},
::convert,
title,
true,
project)) return emptyList()
@@ -17,10 +17,12 @@
package org.jetbrains.kotlin.j2k
import com.intellij.lang.java.JavaLanguage
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.editor.RangeMarker
import com.intellij.openapi.progress.*
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Computable
import com.intellij.psi.*
import com.intellij.psi.impl.source.DummyHolder
import org.jetbrains.kotlin.idea.KotlinLanguage
@@ -64,15 +66,19 @@ class JavaToKotlinConverter(
fun filesToKotlin(files: List<PsiJavaFile>, postProcessor: PostProcessor, progress: ProgressIndicator = EmptyProgressIndicator()): FilesResult {
val withProgressProcessor = WithProgressProcessor(progress, files)
val (results, externalCodeProcessing) = ApplicationManager.getApplication().runReadAction(Computable {
elementsToKotlin(files, withProgressProcessor)
})
val (results, externalCodeProcessing) = elementsToKotlin(files, withProgressProcessor)
val texts = withProgressProcessor.processItems(0.5, results.withIndex()) { pair ->
val (i, result) = pair
try {
val kotlinFile = KtPsiFactory(project).createAnalyzableFile("dummy.kt", result!!.text, files[i])
val kotlinFile = ApplicationManager.getApplication().runReadAction(Computable {
KtPsiFactory(project).createAnalyzableFile("dummy.kt", result!!.text, files[i])
})
result.importsToAdd.forEach { postProcessor.insertImport(kotlinFile, it) }
result!!.importsToAdd.forEach { postProcessor.insertImport(kotlinFile, it) }
AfterConversionPass(project, postProcessor).run(kotlinFile, range = null)