disable "flip comparison" on deeply broken code

This commit is contained in:
peter
2018-09-07 11:10:16 +02:00
parent 390caa70ad
commit 6fde09c200
2 changed files with 11 additions and 10 deletions

View File

@@ -17,23 +17,17 @@ package com.siyeh.ipp.bool;
import com.intellij.psi.PsiBinaryExpression;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiErrorElement;
import com.intellij.psi.PsiExpression;
import com.siyeh.ig.psiutils.ComparisonUtils;
import com.siyeh.ipp.base.PsiElementPredicate;
import com.siyeh.ipp.psiutils.ErrorUtil;
class ComparisonPredicate implements PsiElementPredicate {
@Override
public boolean satisfiedBy(PsiElement element) {
if (!(element instanceof PsiBinaryExpression)) {
return false;
}
final PsiBinaryExpression expression = (PsiBinaryExpression)element;
if (!ComparisonUtils.isComparison(expression)) {
return false;
}
final PsiExpression rhs = expression.getROperand();
return rhs != null && !(element.getNextSibling() instanceof PsiErrorElement);
return element instanceof PsiBinaryExpression &&
ComparisonUtils.isComparison((PsiExpression)element) &&
!ErrorUtil.containsDeepError(element);
}
}

View File

@@ -42,4 +42,11 @@ public class FlipComparisonIntentionTest extends IPPTestCase {
" {x(HashSet</*_Flip '>' to '<'*/>());}" +
"}");
}
public void testBrokenCode2() {
doTestIntentionNotAvailable("class Builder {\n" +
" Builder b = !(new//simple end comment\n" +
" </*_Flip '>=' to '<='*/> Builder().method( >= caret) >1).method(2);\n" +
"}");
}
}