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 com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.jet.lang.psi.JetFile import org.jetbrains.jet.lang.psi.JetFile
import org.jetbrains.jet.lang.resolve.BindingContext import org.jetbrains.jet.lang.resolve.BindingContext
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.progress.ProcessCanceledException
public trait ConversionScope { public trait ConversionScope {
public fun contains(element: PsiElement): Boolean public fun contains(element: PsiElement): Boolean
@@ -68,6 +70,8 @@ public class Converter private(val project: Project,
val annotationConverter = AnnotationConverter(this) val annotationConverter = AnnotationConverter(this)
class object { 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 { 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) val state = State(null, { ExpressionVisitor(it) }, { StatementVisitor(it) }, null, null, null)
return Converter(project, settings, conversionScope, referenceSearcher, postProcessor, state) return Converter(project, settings, conversionScope, referenceSearcher, postProcessor, state)
@@ -105,7 +109,16 @@ public class Converter private(val project: Project,
builder.append(converted) builder.append(converted)
if (postProcessor != null) { 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 { else {
return builder.result return builder.result