diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 053fc7220065..e2050a458438 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -654,11 +654,11 @@ public class JavaCompletionUtil { assert document != null; document.replaceString(startOffset, endOffset, name); - final RangeMarker toDelete = insertTemporary(startOffset + name.length(), document, " "); + int newEndOffset = startOffset + name.length(); + final RangeMarker toDelete = insertTemporary(newEndOffset, document, " "); documentManager.commitAllDocuments(); - int newEndOffset = endOffset; PsiElement element = file.findElementAt(startOffset); if (element instanceof PsiIdentifier) { PsiElement parent = element.getParent(); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateMethodFromUsageTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateMethodFromUsageTest.groovy new file mode 100644 index 000000000000..07267ea55e86 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateMethodFromUsageTest.groovy @@ -0,0 +1,77 @@ +package com.intellij.codeInsight.daemon.quickFix +import com.intellij.codeInsight.lookup.LookupManager +import com.intellij.codeInsight.template.TemplateManager +import com.intellij.codeInsight.template.impl.TemplateManagerImpl +import com.intellij.ide.DataManager +import com.intellij.openapi.actionSystem.DataContext +import com.intellij.openapi.actionSystem.IdeActions +import com.intellij.openapi.editor.actionSystem.EditorActionManager + +/** + * @author ven + */ +public class CreateMethodFromUsageTest extends LightQuickFixTestCase { + public void test() throws Exception { doAllTests(); } + + public void testTemplateAssertions() throws Exception { + configureFromFileText "a.java", """ +class SomeOuterClassWithLongName { + void foo(PropertyDescriptorWithVeryLongName.Group group, PropertyDescriptorWithVeryLongName.Group child) { + group.addSubGroup(child); + } + static class PropertyDescriptorWithVeryLongName { + static class Group { + + } + } +} +""" + ((TemplateManagerImpl)TemplateManager.getInstance(getProject())).setTemplateTesting(true); + doAction("Create Method 'addSubGroup'") + def state = TemplateManagerImpl.getTemplateState(getEditor()) + //skip void return type + state.nextTab() + + // parameter type + assert LookupManager.getActiveLookup(editor)?.currentItem?.lookupString?.endsWith('Group') + + EditorActionManager actionManager = EditorActionManager.getInstance(); + final DataContext dataContext = DataManager.getInstance().getDataContext(); + actionManager.getActionHandler(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM).execute(getEditor(), dataContext); + + // parameter name, skip it + assert LookupManager.getActiveLookup(editor)?.currentItem?.lookupString == 'child' + state.nextTab() + + assert state.finished + + checkResultByText """ +class SomeOuterClassWithLongName { + void foo(PropertyDescriptorWithVeryLongName.Group group, PropertyDescriptorWithVeryLongName.Group child) { + group.addSubGroup(child); + } + static class PropertyDescriptorWithVeryLongName { + static class Group { + + public void addSubGroup(Group child) { + //To change body of created methods use File | Settings | File Templates. + } + } + } +} +""" + + } + + @Override + protected void tearDown() throws Exception { + ((TemplateManagerImpl)TemplateManager.getInstance(getProject())).setTemplateTesting(true); + super.tearDown() + } + + @Override + protected String getBasePath() { + return "/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage"; + } + +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateMethodFromUsageTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateMethodFromUsageTest.java deleted file mode 100644 index 393f5208cbb9..000000000000 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateMethodFromUsageTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.intellij.codeInsight.daemon.quickFix; - -/** - * @author ven - */ -public class CreateMethodFromUsageTest extends LightQuickFixTestCase { - public void test() throws Exception { doAllTests(); } - - @Override - protected String getBasePath() { - return "/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage"; - } - -}