New J2K: do not fail conversion if some of post-processings throws exception

This commit is contained in:
Ilya Kirillov
2019-06-27 13:24:09 +03:00
parent a9865e5d7b
commit 9d6338afb2
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.nj2k.postProcessing
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.ModalityState import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.command.CommandProcessor
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.editor.RangeMarker import com.intellij.openapi.editor.RangeMarker
import com.intellij.openapi.progress.ProcessCanceledException
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
@@ -35,6 +37,9 @@ import org.jetbrains.kotlin.nj2k.postProcessing.processings.*
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
class NewJ2kPostProcessor : PostProcessor { class NewJ2kPostProcessor : PostProcessor {
@Suppress("PrivatePropertyName")
private val LOG = Logger.getInstance("@org.jetbrains.kotlin.nj2k.postProcessing.NewJ2kPostProcessor")
override fun insertImport(file: KtFile, fqName: FqName) { override fun insertImport(file: KtFile, fqName: FqName) {
ApplicationManager.getApplication().invokeAndWait { ApplicationManager.getApplication().invokeAndWait {
runWriteAction { runWriteAction {
@@ -56,8 +61,15 @@ class NewJ2kPostProcessor : PostProcessor {
for ((i, group) in processings.withIndex()) { for ((i, group) in processings.withIndex()) {
onPhaseChanged?.invoke(i + 1, group.description) onPhaseChanged?.invoke(i + 1, group.description)
for (processing in group.processings) { for (processing in group.processings) {
processing.runProcessing(file, rangeMarker, converterContext as NewJ2kConverterContext) try {
commitFile(file) processing.runProcessing(file, rangeMarker, converterContext as NewJ2kConverterContext)
} catch (e: ProcessCanceledException) {
throw e
} catch (t: Throwable) {
LOG.error(t)
} finally {
commitFile(file)
}
} }
} }
} }