Fix deadlock in J2K
#KT-17230 fixed
This commit is contained in:
@@ -106,9 +106,7 @@ class JavaToKotlinAction : AnAction() {
|
|||||||
|
|
||||||
|
|
||||||
if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
||||||
{
|
::convert,
|
||||||
runReadAction(::convert)
|
|
||||||
},
|
|
||||||
title,
|
title,
|
||||||
true,
|
true,
|
||||||
project)) return emptyList()
|
project)) return emptyList()
|
||||||
|
|||||||
@@ -17,10 +17,12 @@
|
|||||||
package org.jetbrains.kotlin.j2k
|
package org.jetbrains.kotlin.j2k
|
||||||
|
|
||||||
import com.intellij.lang.java.JavaLanguage
|
import com.intellij.lang.java.JavaLanguage
|
||||||
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.editor.RangeMarker
|
import com.intellij.openapi.editor.RangeMarker
|
||||||
import com.intellij.openapi.progress.*
|
import com.intellij.openapi.progress.*
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.util.Computable
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.impl.source.DummyHolder
|
import com.intellij.psi.impl.source.DummyHolder
|
||||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||||
@@ -64,15 +66,19 @@ class JavaToKotlinConverter(
|
|||||||
|
|
||||||
fun filesToKotlin(files: List<PsiJavaFile>, postProcessor: PostProcessor, progress: ProgressIndicator = EmptyProgressIndicator()): FilesResult {
|
fun filesToKotlin(files: List<PsiJavaFile>, postProcessor: PostProcessor, progress: ProgressIndicator = EmptyProgressIndicator()): FilesResult {
|
||||||
val withProgressProcessor = WithProgressProcessor(progress, files)
|
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 texts = withProgressProcessor.processItems(0.5, results.withIndex()) { pair ->
|
||||||
val (i, result) = pair
|
val (i, result) = pair
|
||||||
try {
|
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)
|
AfterConversionPass(project, postProcessor).run(kotlinFile, range = null)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user