IDEA-179934 Action "Complete current statement" introduces incorrect code

This commit is contained in:
peter
2017-10-12 12:38:23 +02:00
parent ae87aafbfb
commit 6551b38303
4 changed files with 16 additions and 1 deletions

View File

@@ -20,6 +20,7 @@ import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.patterns.PsiJavaPatterns;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.impl.source.tree.ElementType;
@@ -94,7 +95,7 @@ public class SemicolonFixer implements Fixer {
psiElement instanceof PsiContinueStatement ||
psiElement instanceof PsiAssertStatement ||
psiElement instanceof PsiPackageStatement ||
psiElement instanceof PsiField && !(psiElement instanceof PsiEnumConstant) ||
isStandaloneField(psiElement) ||
psiElement instanceof PsiMethod && ((PsiMethod)psiElement).getBody() == null && !MissingMethodBodyFixer.shouldHaveBody((PsiMethod)psiElement) ||
psiElement instanceof PsiRequiresStatement ||
psiElement instanceof PsiPackageAccessibilityStatement ||
@@ -144,4 +145,10 @@ public class SemicolonFixer implements Fixer {
return false;
}
private static boolean isStandaloneField(@Nullable PsiElement psiElement) {
return psiElement instanceof PsiField &&
!(psiElement instanceof PsiEnumConstant) &&
!PsiJavaPatterns.psiElement().beforeLeaf(PsiJavaPatterns.psiElement().withText(",")).accepts(psiElement);
}
}

View File

@@ -0,0 +1,3 @@
class Test {
private St<caret>ring oldtest, youndtest;
}

View File

@@ -0,0 +1,4 @@
class Test {
private String oldtest, youndtest;
<caret>
}

View File

@@ -182,6 +182,7 @@ public class CompleteStatementTest extends EditorActionTestCase {
public void testReturnInLambda() { doTest(); }
public void testSemicolonAfterLambda() { doTest(); }
public void testModuleInfo() { doTest(); }
public void testDoubleFieldDeclaration() { doTest(); }
private void doTestBracesNextLineStyle() {
myJavaSettings.BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;