diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java index 4cebb6f7b19f..16b6c5c2064a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java @@ -557,6 +557,13 @@ public class JavaCompletionData extends JavaAwareCompletionData{ return; } + final PsiExpressionStatement expressionStatement = PsiTreeUtil.getParentOfType(position, PsiExpressionStatement.class); + if (expressionStatement != null && expressionStatement.getTextRange().getStartOffset() == position.getTextRange().getStartOffset()) { + if (!psiElement().withSuperParent(2, PsiSwitchStatement.class).accepts(expressionStatement)) { + result.addElement(createKeyword(position, PsiKeyword.FINAL)); + } + } + if (SUPER_OR_THIS_PATTERN.accepts(position)) { if (AFTER_DOT.accepts(position) && !isInsideQualifierClass(position)) return; @@ -607,7 +614,7 @@ public class JavaCompletionData extends JavaAwareCompletionData{ if (!PsiKeyword.VOID.equals(primitiveType)) { result.addElement(TailTypeDecorator.withTail(createKeyword(position, primitiveType), TailType.SPACE)); } - result.addElement(TailTypeDecorator.withTail(createKeyword(position, PsiKeyword.FINAL), TailType.SPACE)); + //result.addElement(TailTypeDecorator.withTail(createKeyword(position, PsiKeyword.FINAL), TailType.SPACE)); } } diff --git a/java/java-tests/testData/codeInsight/completion/normal/FinalBeforeMethodCall.java b/java/java-tests/testData/codeInsight/completion/normal/FinalBeforeMethodCall.java new file mode 100644 index 000000000000..c28c3b2dc1d6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/FinalBeforeMethodCall.java @@ -0,0 +1,5 @@ +class A { + A() { + finthis.toString(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java index fd8258dc7b90..5885f56d7787 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java @@ -159,8 +159,17 @@ public class KeywordCompletionTest extends LightCompletionTestCase { public void testExtendsInCastTypeParameters() throws Throwable { doTest(); } public void testExtendsWithRightContextInClassTypeParameters() throws Throwable { doTest(); } - public void testExtraBracketAfterFinally() throws Throwable { doTest(); } - public void testExtraBracketAfterFinally1() throws Throwable { doTest(); } + public void testExtraBracketAfterFinally() throws Throwable { + configureByFile(BASE_PATH + "/" + getTestName(false) + ".java"); + selectItem(myItems[1]); + checkResultByFile(BASE_PATH + "/" + getTestName(false) + "-out.java"); + } + + public void testExtraBracketAfterFinally1() throws Throwable { + configureByFile(BASE_PATH + "/" + getTestName(false) + ".java"); + selectItem(myItems[1]); + checkResultByFile(BASE_PATH + "/" + getTestName(false) + "-out.java"); + } public void testTrueInVariableDeclaration() throws Throwable { doTest(); } public void testNullInIf() throws Throwable { doTest(); } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index 801e4bc10097..968c25cad396 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -393,6 +393,11 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { assertOrderedEquals myFixture.lookupElementStrings, 'Zoooz', 'Zooooo' } + public void testFinalBeforeMethodCall() throws Throwable { + configure() + assertStringItems 'final', 'finalize' + } + public void testMethodParenthesesSpaces() throws Throwable { final settings = CodeStyleSettingsManager.getSettings(getProject()) settings.SPACE_BEFORE_METHOD_CALL_PARENTHESES = true