EA-69627 - IAE: TextRange.intersects appcode/142.2553 clion/142.2552
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Wed, 17 Jun 2015 16:23:38 +0000 (19:23 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Wed, 17 Jun 2015 16:26:01 +0000 (19:26 +0300)
java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java

index ac4db1dff4e8be0dc154cf898a7105f038804bf0..7bf87785592371a10b140baf24c7e64e6070abdf 100644 (file)
@@ -813,7 +813,7 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils {
       public void visitLambdaExpression(PsiLambdaExpression expression) {
         super.visitLambdaExpression(expression);
         PsiElement body = expression.getBody();
-        if (!onlyOnTheLine || (body != null && lineRange.intersects(body.getTextRange()))) {
+        if (!onlyOnTheLine || (body != null && intersects(lineRange, body))) {
           lambdas.add(expression);
         }
       }
@@ -825,7 +825,7 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils {
       lambdas.add((PsiLambdaExpression)method);
     }
     for (PsiElement sibling = getNextElement(element); sibling != null; sibling = getNextElement(sibling)) {
-      if (!lineRange.intersects(sibling.getTextRange())) {
+      if (!intersects(lineRange, sibling)) {
         break;
       }
       sibling.accept(lambdaCollector);
@@ -833,15 +833,20 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils {
     return lambdas;
   }
 
+  public static boolean intersects(@NotNull TextRange range, @NotNull PsiElement elem) {
+    TextRange elemRange = elem.getTextRange();
+    return elemRange != null && elemRange.intersects(range);
+  }
+
   @Nullable
   public static PsiElement getFirstElementOnTheLine(PsiLambdaExpression lambda, Document document, int line) {
     ApplicationManager.getApplication().assertReadAccessAllowed();
     TextRange lineRange = new TextRange(document.getLineStartOffset(line), document.getLineEndOffset(line));
-    if (!lineRange.intersects(lambda.getTextRange())) return null;
+    if (!intersects(lineRange, lambda)) return null;
     PsiElement body = lambda.getBody();
     if (body instanceof PsiCodeBlock) {
       for (PsiStatement statement : ((PsiCodeBlock)body).getStatements()) {
-        if (lineRange.intersects(statement.getTextRange())) {
+        if (intersects(lineRange, statement)) {
           return statement;
         }
       }