mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
disable "create switch" intention on red code
which otherwise would lead to exceptions in the intention
This commit is contained in:
@@ -50,6 +50,7 @@ public class CreateSwitchIntention extends BaseElementAtCaretIntentionAction {
|
||||
PsiExpressionStatement expressionStatement = PsiTreeUtil.getParentOfType(element, PsiExpressionStatement.class, false);
|
||||
return expressionStatement != null &&
|
||||
expressionStatement.getParent() instanceof PsiCodeBlock &&
|
||||
PsiTreeUtil.findChildOfType(expressionStatement.getExpression(), PsiErrorElement.class) == null &&
|
||||
isValidTypeForSwitch(expressionStatement.getExpression().getType(), expressionStatement);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class Test {
|
||||
void m() {
|
||||
toS<caret>tring(foo() (String) o);
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ public class CreateSwitchTest extends JavaCodeInsightFixtureTestCase {
|
||||
}
|
||||
|
||||
public void testString() {
|
||||
doTestString();
|
||||
withJava7(this::doTest);
|
||||
}
|
||||
|
||||
public void testPrimitive() {
|
||||
@@ -58,13 +58,17 @@ public class CreateSwitchTest extends JavaCodeInsightFixtureTestCase {
|
||||
public void testNotAvailableInForUpdate() {
|
||||
doTestNotAvailable();
|
||||
}
|
||||
|
||||
public void testNotAvailableOnRedCode() {
|
||||
withJava7(this::doTestNotAvailable);
|
||||
}
|
||||
|
||||
private void doTestString() {
|
||||
private void withJava7(Runnable runnable) {
|
||||
final LanguageLevelProjectExtension languageLevelProjectExtension = LanguageLevelProjectExtension.getInstance(getProject());
|
||||
final LanguageLevel oldLanguageLevel = languageLevelProjectExtension.getLanguageLevel();
|
||||
languageLevelProjectExtension.setLanguageLevel(LanguageLevel.JDK_1_7);
|
||||
try {
|
||||
doTest();
|
||||
runnable.run();
|
||||
}
|
||||
finally {
|
||||
languageLevelProjectExtension.setLanguageLevel(oldLanguageLevel);
|
||||
|
||||
Reference in New Issue
Block a user