Converter should not fail completely if some error occured in the after conversion pass

This commit is contained in:
Valentin Kipyatkov
2014-10-08 11:23:14 +04:00
parent 5008682bef
commit a7a1227390
+14 -1
View File
@@ -27,6 +27,8 @@ import com.intellij.psi.util.PsiMethodUtil
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.jet.lang.psi.JetFile
import org.jetbrains.jet.lang.resolve.BindingContext
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.progress.ProcessCanceledException
public trait ConversionScope {
public fun contains(element: PsiElement): Boolean
@@ -68,6 +70,8 @@ public class Converter private(val project: Project,
val annotationConverter = AnnotationConverter(this)
class object {
private val LOG = Logger.getInstance("#org.jetbrains.jet.j2k.Converter")
public fun create(project: Project, settings: ConverterSettings, conversionScope: ConversionScope, referenceSearcher: ReferenceSearcher, postProcessor: PostProcessor?): Converter {
val state = State(null, { ExpressionVisitor(it) }, { StatementVisitor(it) }, null, null, null)
return Converter(project, settings, conversionScope, referenceSearcher, postProcessor, state)
@@ -105,7 +109,16 @@ public class Converter private(val project: Project,
builder.append(converted)
if (postProcessor != null) {
return AfterConversionPass(project, postProcessor).run(builder.result)
try {
return AfterConversionPass(project, postProcessor).run(builder.result)
}
catch(e: ProcessCanceledException) {
throw e
}
catch(t: Throwable) {
LOG.error(t)
return builder.result
}
}
else {
return builder.result