diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java index ca9a446fa1da..183d08a44e6f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java @@ -479,11 +479,11 @@ public class JavaKeywordCompletion { addKeyword(new OverridableSpace(createKeyword(s), TailType.HUMBLE_SPACE_BEFORE_WORD)); } - PsiExpression expression = PsiTreeUtil.getParentOfType(myPosition, PsiExpression.class, true, PsiMember.class); - if (expression != null && expression.getParent() instanceof PsiExpressionStatement) { + if (psiElement().insideStarting(psiElement(PsiLocalVariable.class, PsiExpressionStatement.class)).accepts(myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.CLASS), TailType.HUMBLE_SPACE_BEFORE_WORD)); } - if (expression == null && PsiTreeUtil.getParentOfType(myPosition, PsiCodeBlock.class, true, PsiMember.class) == null) { + if (PsiTreeUtil.getParentOfType(myPosition, PsiExpression.class, true, PsiMember.class) == null && + PsiTreeUtil.getParentOfType(myPosition, PsiCodeBlock.class, true, PsiMember.class) == null) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.CLASS), TailType.HUMBLE_SPACE_BEFORE_WORD)); addKeyword(new OverridableSpace(createKeyword(PsiKeyword.INTERFACE), TailType.HUMBLE_SPACE_BEFORE_WORD)); if (PsiUtil.isLanguageLevel5OrHigher(myPosition)) { diff --git a/java/java-tests/testData/codeInsight/completion/keywords/classInMethodOvertype.java b/java/java-tests/testData/codeInsight/completion/keywords/classInMethodOvertype.java new file mode 100644 index 000000000000..dd3ed618bff3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/keywords/classInMethodOvertype.java @@ -0,0 +1,6 @@ +public class Util { + void foo() { + class InnerTest { + } + } +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/KeywordCompletionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/KeywordCompletionTest.java index b401dbe1c37f..8698c63bc0a7 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/KeywordCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/KeywordCompletionTest.java @@ -147,6 +147,7 @@ public class KeywordCompletionTest extends LightCompletionTestCase { public void testFinalInLambda() { doTest(2, "final", "float"); } public void testNoFinalAfterTryBody() { doTest(1, "final", "finally"); } public void testClassInMethod() { doTest(2, "class", "char"); } + public void testClassInMethodOvertype() { doTest(2, "class", "char"); } public void testIntInClassArray() { doTest(2, "int", "char", "final"); } public void testIntInClassArray2() { doTest(2, "int", "char", "final"); } public void testIntInClassArray3() { doTest(2, "int", "char", "final"); }