From ef01d133bc6d226fbbfe1fb7e78149731ef6b5e9 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Tue, 17 Jul 2018 14:49:39 +0300 Subject: [PATCH] IDEA-195668 Do not show completion hints in improper context --- .../codeInsight/completion/JavaMethodCallElement.java | 9 ++++++++- .../java/codeInsight/completion/CompletionHintsTest.java | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java index 44d603aefdf0..86ea31d2ee47 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java @@ -310,11 +310,18 @@ public class JavaMethodCallElement extends LookupItem implements Type CaretModel caretModel = editor.getCaretModel(); int offset = caretModel.getOffset(); + + int afterParenOffset = offset + 1; + if (afterParenOffset < document.getTextLength() && + Character.isJavaIdentifierPart(document.getImmutableCharSequence().charAt(afterParenOffset))) { + return; + } + int braceOffset = offset - 1; int numberOfParametersToDisplay = parametersCount > 1 && PsiImplUtil.isVarArgs(method) ? parametersCount - 1 : parametersCount; int numberOfCommas = Math.min(numberOfParametersToDisplay, limit) - 1; String commas = Registry.is("editor.completion.hints.virtual.comma") ? "" : StringUtil.repeat(", ", numberOfCommas); - editor.getDocument().insertString(offset, commas); + document.insertString(offset, commas); PsiDocumentManager.getInstance(project).commitDocument(document); MethodParameterInfoHandler handler = new MethodParameterInfoHandler(); diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java index d26a90eaa30c..57c16765562d 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java @@ -1369,7 +1369,7 @@ public class CompletionHintsTest extends AbstractParameterInfoTestCase { "}"); } - public void testCaretMovementOverVirtualComma() throws Exception { + public void testCaretMovementOverVirtualComma() { enableVirtualComma(); configureJava("class C { void m() { System.getPro } }"); @@ -1380,6 +1380,12 @@ public class CompletionHintsTest extends AbstractParameterInfoTestCase { checkResultWithInlays("class C { void m() { System.getProperty(, ) } }"); } + public void testHintsAreNotShownInImproperContext() { + configureJava("class C { void m() { int a = Math.ma5; } }"); + complete("max(int a, int b)"); + checkResult("class C { void m() { int a = Math.max()5; } }"); + } + private void checkResultWithInlays(String text) { myFixture.checkResultWithInlays(text); }