From 98da75c768aa6a38e07ff687b7464f43f8c583b7 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Tue, 14 Jul 2015 12:48:39 +0300 Subject: [PATCH] Debugger: check that file isn't shorter than breakpoint line (ex. after deleting some lines in file during debug) --- .../idea/debugger/evaluate/KotlinEvaluationBuilder.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt index 2e6c1e4e08e..8c023a01e53 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt @@ -30,6 +30,7 @@ import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.CharsetToolkit import com.intellij.psi.JavaPsiFacade +import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiElement import com.intellij.psi.PsiFileFactory import com.intellij.psi.impl.PsiFileFactoryImpl @@ -101,6 +102,13 @@ object KotlinEvaluationBuilder: EvaluatorBuilder { throw EvaluateExceptionUtil.createEvaluateException("Couldn't evaluate kotlin expression at $position") } + val document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file) + if (document == null || document.getLineCount() < position.getLine()) { + throw EvaluateExceptionUtil.createEvaluateException( + "Couldn't evaluate kotlin expression: breakpoint is placed outside the file. " + + "It may happen when you've changed source file after starting a debug process.") + } + if (codeFragment.getContext() !is JetElement) { val attachments = arrayOf(attachmentByPsiFile(position.getFile()), attachmentByPsiFile(codeFragment),