mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
SplitConditionUtil: disable action for incomplete statement
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
public class SplitCondition {
|
||||
void test(boolean foo) {
|
||||
if(foo && foo &<caret>& ) {}
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user