From 4d6c83b5b9c28a6347b5c021f34160f6065701cd Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Wed, 27 Dec 2017 14:55:23 +0300 Subject: [PATCH] Debugger: do not fail if j2k couldn't convert expression creating codeFragment from text --- .../evaluate/KotlinCodeFragmentFactory.kt | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt index a52aa75e319..3fa536dd779 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt @@ -242,21 +242,27 @@ class KotlinCodeFragmentFactory: CodeFragmentFactory() { null } - if (javaExpression != null) { + if (javaExpression != null && !PsiTreeUtil.hasErrorElements(javaExpression)) { var convertedFragment: KtExpressionCodeFragment? = null project.executeWriteCommand("Convert java expression to kotlin in Evaluate Expression") { - val newText = javaExpression.j2kText() - val newImports = importList?.j2kText() - if (newText != null) { - convertedFragment = KtExpressionCodeFragment( - project, - kotlinCodeFragment.name, - newText, - newImports, - kotlinCodeFragment.context - ) + try { + val newText = javaExpression.j2kText() + val newImports = importList?.j2kText() + if (newText != null) { + convertedFragment = KtExpressionCodeFragment( + project, + kotlinCodeFragment.name, + newText, + newImports, + kotlinCodeFragment.context + ) - AfterConversionPass(project, J2kPostProcessor(formatCode = false)).run(convertedFragment!!, range = null) + AfterConversionPass(project, J2kPostProcessor(formatCode = false)).run(convertedFragment!!, range = null) + } + } + catch (e: Throwable) { + // ignored because text can be invalid + LOG.error("Couldn't convert expression:\n`${javaExpression.text}`", e) } } return convertedFragment ?: kotlinCodeFragment