SplitConditionUtil: disable action for incomplete statement

This commit is contained in:
Tagir Valeev
2018-12-01 17:57:56 +07:00
parent 61569c5e12
commit 1318c26754
3 changed files with 16 additions and 0 deletions

View File

@@ -22,6 +22,7 @@ import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.siyeh.ig.psiutils.CommentTracker;
import com.siyeh.ig.psiutils.ControlFlowUtils;
import com.siyeh.ipp.psiutils.ErrorUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -46,6 +47,10 @@ public class SplitConditionUtil {
boolean isAndExpression = acceptAnd && expression.getOperationTokenType() == JavaTokenType.ANDAND;
boolean isOrExpression = acceptOr && expression.getOperationTokenType() == JavaTokenType.OROR;
if (!isAndExpression && !isOrExpression) return null;
if (ErrorUtil.containsError(expression)) {
// Incomplete expression like "something &&"
return null;
}
while (expression.getParent() instanceof PsiPolyadicExpression) {
expression = (PsiPolyadicExpression)expression.getParent();

View File

@@ -0,0 +1,5 @@
public class SplitCondition {
void test(boolean foo) {
if(foo && foo &<caret>& ) {}
}
}

View File

@@ -76,6 +76,12 @@ public class SplitIfActionTest extends LightCodeInsightTestCase {
public void testWithoutSpaces() {
doTest();
}
public void testIncomplete() {
configureByFile("/codeInsight/splitIfAction/before" + getTestName(false) + ".java");
SplitIfAction action = new SplitIfAction();
assertFalse(action.isAvailable(getProject(), getEditor(), getFile()));
}
private void doTest() {
configureByFile("/codeInsight/splitIfAction/before" + getTestName(false)+ ".java");