mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 21:41:24 +07:00
IDEA-179934 Action "Complete current statement" introduces incorrect code
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class Test {
|
||||
private St<caret>ring oldtest, youndtest;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
class Test {
|
||||
private String oldtest, youndtest;
|
||||
<caret>
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user