do not propose lambdas if body is not on the line

This commit is contained in:
Egor.Ushakov
2015-06-16 18:01:59 +03:00
parent 5589d1992f
commit e033bc3ac1
@@ -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);
}
}