From 42119b311dcf8b7462b346593138bcf6267d4e18 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Wed, 2 Dec 2015 17:53:12 +0300 Subject: [PATCH] Skip whitespaces as context elements of codeFragmnets #KT-10171 Fixed --- .../debugger/evaluate/KotlinCodeFragmentFactory.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt index 6a7f6283b25..d366ff6cd42 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt @@ -151,9 +151,16 @@ class KotlinCodeFragmentFactory: CodeFragmentFactory() { val containingFile = elementAt.containingFile if (containingFile !is KtFile) return null - var result = PsiTreeUtil.findElementOfClassAtOffset(containingFile, elementAt.textOffset, javaClass(), false) + // elementAt can be PsiWhiteSpace when codeFragment is created from line start offset (in case of first opening EE window) + val lineStartOffset = if (elementAt is PsiWhiteSpace || elementAt is PsiComment) { + PsiTreeUtil.skipSiblingsForward(elementAt, PsiWhiteSpace::class.java, PsiComment::class.java)?.textOffset ?: elementAt.textOffset + } else { + elementAt.textOffset + } + + var result = PsiTreeUtil.findElementOfClassAtOffset(containingFile, lineStartOffset, javaClass(), false) if (result.check()) { - return CodeInsightUtils.getTopmostElementAtOffset(result!!, result.textOffset, KtExpression::class.java) + return CodeInsightUtils.getTopmostElementAtOffset(result!!, lineStartOffset, KtExpression::class.java) } result = KotlinEditorTextProvider.findExpressionInner(elementAt, true)