diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java index 0af22d369e76..a5b28cb663bd 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java @@ -274,10 +274,15 @@ public class JavaSmartEnterProcessor extends SmartEnterProcessor { @Override @Nullable protected PsiElement getStatementAtCaret(Editor editor, PsiFile psiFile) { - final PsiElement atCaret = super.getStatementAtCaret(editor, psiFile); + PsiElement atCaret = super.getStatementAtCaret(editor, psiFile); if (atCaret instanceof PsiWhiteSpace) return null; - if (atCaret instanceof PsiJavaToken && "}".equals(atCaret.getText()) && !(atCaret.getParent() instanceof PsiArrayInitializerExpression)) return null; + if (atCaret instanceof PsiJavaToken && "}".equals(atCaret.getText())) { + atCaret = atCaret.getParent(); + if (!(atCaret instanceof PsiAnonymousClass || atCaret instanceof PsiArrayInitializerExpression)) { + return null; + } + } PsiElement statementAtCaret = PsiTreeUtil.getParentOfType(atCaret, PsiStatement.class, diff --git a/java/java-tests/testData/codeInsight/completeStatement/AddMissingSemicolonAfterAnonymous.java b/java/java-tests/testData/codeInsight/completeStatement/AddMissingSemicolonAfterAnonymous.java new file mode 100644 index 000000000000..f9be4ba5b79a --- /dev/null +++ b/java/java-tests/testData/codeInsight/completeStatement/AddMissingSemicolonAfterAnonymous.java @@ -0,0 +1,10 @@ +class Foo { + void a() { + Runnable r = new Runnable() { + @Override + public void run() { + + } + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completeStatement/AddMissingSemicolonAfterAnonymous_after.java b/java/java-tests/testData/codeInsight/completeStatement/AddMissingSemicolonAfterAnonymous_after.java new file mode 100644 index 000000000000..ac1418a603f0 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completeStatement/AddMissingSemicolonAfterAnonymous_after.java @@ -0,0 +1,10 @@ +class Foo { + void a() { + Runnable r = new Runnable() { + @Override + public void run() { + + } + }; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/CompleteStatementTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/CompleteStatementTest.java index b39819de6490..5741767274c8 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/CompleteStatementTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/CompleteStatementTest.java @@ -33,6 +33,8 @@ public class CompleteStatementTest extends EditorActionTestCase { public void testAddMissingSemicolonToPackageStatement() { doTest(); } + public void testAddMissingSemicolonAfterAnonymous() { doTest(); } + public void testAddMissingParen() throws Exception { doTest(); } public void testCompleteIf() throws Exception { doTest(); }