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 89a08f670a49..80894c903314 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaMethodCallElement.java @@ -210,7 +210,6 @@ public class JavaMethodCallElement extends LookupItem implements Type PsiExpressionList argList, TextRange argRange) { Template template = TemplateManager.getInstance(method.getProject()).createTemplate("", ""); - template.addTextSegment(argList.getText().substring(0, caretOffset - argRange.getStartOffset())); PsiParameter[] parameters = method.getParameterList().getParameters(); for (int i = 0; i < parameters.length; i++) { if (i > 0) { @@ -254,7 +253,7 @@ public class JavaMethodCallElement extends LookupItem implements Type Template template = createArgTemplate(method, caretOffset, argList, argRange); - context.getDocument().deleteString(argRange.getStartOffset(), argRange.getEndOffset()); + context.getDocument().deleteString(caretOffset, argRange.getEndOffset()); TemplateManager.getInstance(method.getProject()).startTemplate(editor, template); TemplateState templateState = TemplateManagerImpl.getTemplateState(editor); diff --git a/java/java-tests/testData/codeInsight/completion/signature/CollectStatisticsOnMethods.java b/java/java-tests/testData/codeInsight/completion/signature/CollectStatisticsOnMethods.java new file mode 100644 index 000000000000..5180e64181a7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/signature/CollectStatisticsOnMethods.java @@ -0,0 +1,8 @@ +class A { + { + tes + } + + void test2(int a); + void test1(int a); +} diff --git a/java/java-tests/testData/codeInsight/completion/signature/CollectStatisticsOnMethods_after.java b/java/java-tests/testData/codeInsight/completion/signature/CollectStatisticsOnMethods_after.java new file mode 100644 index 000000000000..7f8b6233d491 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/signature/CollectStatisticsOnMethods_after.java @@ -0,0 +1,8 @@ +class A { + { + test2(2); + } + + void test2(int a); + void test1(int a); +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SignatureCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SignatureCompletionTest.groovy index 3914cad4eacf..87730acb996c 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SignatureCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SignatureCompletionTest.groovy @@ -19,6 +19,9 @@ import com.intellij.JavaTestUtil import com.intellij.codeInsight.template.impl.TemplateManagerImpl import com.intellij.openapi.util.registry.Registry import com.intellij.psi.PsiMethod +import com.intellij.psi.statistics.StatisticsManager +import com.intellij.psi.statistics.impl.StatisticsManagerImpl + /** * @author peter */ @@ -84,4 +87,16 @@ class SignatureCompletionTest extends LightFixtureCompletionTestCase { checkResult() } + void testCollectStatisticsOnMethods() { + ((StatisticsManagerImpl)StatisticsManager.instance).enableStatistics(testRootDisposable) + configureByTestName() + myFixture.assertPreferredCompletionItems 0, 'test1', 'test2' + myFixture.lookup.currentItem = myFixture.lookupElements[1] + myFixture.type('\n2\n') + checkResult() + myFixture.type(';\ntes') + myFixture.completeBasic() + myFixture.assertPreferredCompletionItems 0, 'test2', 'test1' + } + } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/StatisticsUpdate.kt b/platform/lang-impl/src/com/intellij/codeInsight/completion/StatisticsUpdate.kt index 949572bb0ee2..2c9ae8814eee 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/StatisticsUpdate.kt +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/StatisticsUpdate.kt @@ -70,7 +70,9 @@ class StatisticsUpdate val document = context.document val startOffset = context.startOffset - val tailOffset = context.editor.caretModel.offset + val tailOffset = + if (context.editor.selectionModel.hasSelection()) context.editor.selectionModel.selectionStart + else context.editor.caretModel.offset if (startOffset < 0 || tailOffset <= startOffset) { return }