fix collecting completion stats for methods with argument suggestions

ensure that we don't change the tracked document range when starting live template
This commit is contained in:
peter
2017-02-01 11:57:32 +01:00
parent e58f41d54c
commit 67bd507337
5 changed files with 35 additions and 3 deletions
@@ -210,7 +210,6 @@ public class JavaMethodCallElement extends LookupItem<PsiMethod> 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<PsiMethod> 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);
@@ -0,0 +1,8 @@
class A {
{
tes<caret>
}
void test2(int a);
void test1(int a);
}
@@ -0,0 +1,8 @@
class A {
{
test2(2)<caret>;
}
void test2(int a);
void test1(int a);
}
@@ -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'
}
}
@@ -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
}