mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
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:
@@ -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);
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
class A {
|
||||
{
|
||||
tes<caret>
|
||||
}
|
||||
|
||||
void test2(int a);
|
||||
void test1(int a);
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
class A {
|
||||
{
|
||||
test2(2)<caret>;
|
||||
}
|
||||
|
||||
void test2(int a);
|
||||
void test1(int a);
|
||||
}
|
||||
+15
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user