mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
create switch intention: disable in for update IDEA-173690
This commit is contained in:
@@ -34,7 +34,7 @@ public class CreateSwitchIntention extends BaseElementAtCaretIntentionAction {
|
||||
|
||||
@Override
|
||||
public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException {
|
||||
PsiExpressionStatement expressionStatement = resolveExpressionStatement(element);
|
||||
PsiExpressionStatement expressionStatement = PsiTreeUtil.getParentOfType(element, PsiExpressionStatement.class, false);
|
||||
PsiElementFactory elementFactory = JavaPsiFacade.getInstance(project).getElementFactory();
|
||||
String valueToSwitch = expressionStatement.getExpression().getText();
|
||||
PsiSwitchStatement switchStatement = (PsiSwitchStatement)elementFactory.createStatementFromText("switch (" + valueToSwitch + ") {}", null);
|
||||
@@ -47,17 +47,10 @@ public class CreateSwitchIntention extends BaseElementAtCaretIntentionAction {
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) {
|
||||
PsiExpressionStatement expressionStatement = resolveExpressionStatement(element);
|
||||
return expressionStatement != null && isValidTypeForSwitch(expressionStatement.getExpression().getType(), expressionStatement);
|
||||
}
|
||||
|
||||
private static PsiExpressionStatement resolveExpressionStatement(PsiElement element) {
|
||||
if (element instanceof PsiExpressionStatement) {
|
||||
return (PsiExpressionStatement)element;
|
||||
} else {
|
||||
PsiStatement psiStatement = PsiTreeUtil.getParentOfType(element, PsiStatement.class);
|
||||
return psiStatement instanceof PsiExpressionStatement ? (PsiExpressionStatement)psiStatement : null;
|
||||
}
|
||||
PsiExpressionStatement expressionStatement = PsiTreeUtil.getParentOfType(element, PsiExpressionStatement.class, false);
|
||||
return expressionStatement != null &&
|
||||
expressionStatement.getParent() instanceof PsiCodeBlock &&
|
||||
isValidTypeForSwitch(expressionStatement.getExpression().getType(), expressionStatement);
|
||||
}
|
||||
|
||||
private static boolean isValidTypeForSwitch(@Nullable PsiType type, PsiElement context) {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class Test {
|
||||
void m(int[] array) {
|
||||
for (int i = 1; i < array.length; <caret>i++) { }
|
||||
}
|
||||
}
|
||||
@@ -55,6 +55,10 @@ public class CreateSwitchTest extends JavaCodeInsightFixtureTestCase {
|
||||
doTestNotAvailable();
|
||||
}
|
||||
|
||||
public void testNotAvailableInForUpdate() {
|
||||
doTestNotAvailable();
|
||||
}
|
||||
|
||||
private void doTestString() {
|
||||
final LanguageLevelProjectExtension languageLevelProjectExtension = LanguageLevelProjectExtension.getInstance(getProject());
|
||||
final LanguageLevel oldLanguageLevel = languageLevelProjectExtension.getLanguageLevel();
|
||||
|
||||
Reference in New Issue
Block a user