CreateSwitchIntention shouldn't throw on malformed strings

This commit is contained in:
peter
2018-07-24 22:02:00 +02:00
parent 2c01f288f5
commit b52aba08d7
4 changed files with 17 additions and 2 deletions

View File

@@ -41,8 +41,11 @@ public class CreateSwitchIntention extends BaseElementAtCaretIntentionAction imp
PsiSwitchStatement switchStatement = (PsiSwitchStatement)new CommentTracker().replaceAndRestoreComments(expressionStatement, "switch (" + valueToSwitch + ") {}");
CodeStyleManager.getInstance(project).reformat(switchStatement);
PsiJavaToken lBrace = switchStatement.getBody().getLBrace();
editor.getCaretModel().moveToOffset(lBrace.getTextOffset() + lBrace.getTextLength());
PsiCodeBlock body = switchStatement.getBody();
PsiJavaToken lBrace = body == null ? null : body.getLBrace();
if (lBrace != null) {
editor.getCaretModel().moveToOffset(lBrace.getTextRange().getEndOffset());
}
}
@Override

View File

@@ -0,0 +1,5 @@
class Test {
void m() {
<caret>"\"
}
}

View File

@@ -0,0 +1,5 @@
class Test {
void m() {
<caret>switch ("\") {}
}
}

View File

@@ -63,6 +63,8 @@ public class CreateSwitchTest extends JavaCodeInsightFixtureTestCase {
withJava7(this::doTestNotAvailable);
}
public void testNotFailingOnBadEscapes() { withJava7(this::doTest); }
private void withJava7(Runnable runnable) {
final LanguageLevelProjectExtension languageLevelProjectExtension = LanguageLevelProjectExtension.getInstance(getProject());
final LanguageLevel oldLanguageLevel = languageLevelProjectExtension.getLanguageLevel();