do not propose lambdas if body is not on the line
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Tue, 16 Jun 2015 14:21:22 +0000 (17:21 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Tue, 16 Jun 2015 15:01:59 +0000 (18:01 +0300)
java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java

index 359f61fdf403d4e52b8ddee316946a8b370988fb..8ad0f30c03c09a0143d067dfda51499b235fc7ce 100644 (file)
@@ -63,6 +63,7 @@ import com.intellij.ui.classFilter.ClassFilter;
 import com.intellij.ui.content.Content;
 import com.intellij.unscramble.ThreadDumpPanel;
 import com.intellij.unscramble.ThreadState;
+import com.intellij.util.DocumentUtil;
 import com.intellij.util.SmartList;
 import com.intellij.util.containers.ContainerUtil;
 import com.intellij.xdebugger.XSourcePosition;
@@ -798,7 +799,7 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils {
       return Collections.emptyList();
     }
     PsiElement element = position.getElementAt();
-    final TextRange lineRange = new TextRange(document.getLineStartOffset(line), document.getLineEndOffset(line));
+    final TextRange lineRange = DocumentUtil.getLineTextRange(document, line);
     do {
       PsiElement parent = element.getParent();
       if (parent == null || (parent.getTextOffset() < lineRange.getStartOffset())) {
@@ -813,7 +814,8 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils {
       @Override
       public void visitLambdaExpression(PsiLambdaExpression expression) {
         super.visitLambdaExpression(expression);
-        if (!onlyOnTheLine || lineRange.intersects(expression.getTextRange())) {
+        PsiElement body = expression.getBody();
+        if (!onlyOnTheLine || (body != null && lineRange.intersects(body.getTextRange()))) {
           lambdas.add(expression);
         }
       }