diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/JavaRenameActionCommandProvider.kt b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/JavaRenameActionCommandProvider.kt index 82285c7c7a32..daff9c8f7d04 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/JavaRenameActionCommandProvider.kt +++ b/java/java-impl/src/com/intellij/codeInsight/completion/commands/impl/JavaRenameActionCommandProvider.kt @@ -27,8 +27,7 @@ class JavaRenameActionCommandProvider: AbstractRenameActionCommandProvider() { //<..> place to call 'rename' val method = element.parentOfType() if (method != null && - (method.identifyingElement?.textRange?.startOffset ?: Int.MAX_VALUE) < currentOffset && - ((!method.parameterList.textRange.contains(currentOffset) && (method.body?.lBrace?.textRange?.startOffset ?: 0) >= currentOffset) || + (method.identifyingElement?.textRange?.endOffset == currentOffset || method.parameterList.textRange.endOffset == currentOffset || method.body?.rBrace?.textRange?.endOffset == currentOffset)) return method.identifyingElement?.textRange?.endOffset diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/commands/JavaCommandsCompletionTest.kt b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/commands/JavaCommandsCompletionTest.kt index 9eff937729ae..c845d244f230 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/commands/JavaCommandsCompletionTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/commands/JavaCommandsCompletionTest.kt @@ -443,7 +443,11 @@ class JavaCommandsCompletionTest : LightFixtureCompletionTestCase() { } }""".trimIndent()) val elements = myFixture.completeBasic() - assertTrue(elements.any { element -> element.lookupString.contains("Rename", ignoreCase = true) }) + val lookupElement = elements + .firstOrNull { element -> element.lookupString.contains("rename", ignoreCase = true) } + ?.`as`(CommandCompletionLookupElement::class.java) + assertNotNull(lookupElement) + assertEquals(TextRange(19, 22), (lookupElement as CommandCompletionLookupElement).highlighting?.range) } fun testRenameMethod2() { @@ -456,7 +460,28 @@ class JavaCommandsCompletionTest : LightFixtureCompletionTestCase() { }. }""".trimIndent()) val elements = myFixture.completeBasic() - assertTrue(elements.any { element -> element.lookupString.contains("Rename", ignoreCase = true) }) + val lookupElement = elements + .firstOrNull { element -> element.lookupString.contains("rename", ignoreCase = true) } + ?.`as`(CommandCompletionLookupElement::class.java) + assertNotNull(lookupElement) + assertEquals(TextRange(19, 22), (lookupElement as CommandCompletionLookupElement).highlighting?.range) + } + + fun testRenameMethod3() { + Registry.get("ide.completion.command.force.enabled").setValue(true, getTestRootDisposable()) + myFixture.configureByText(JavaFileType.INSTANCE, """ + class A { + void foo.() { + String y = "1"; + System.out.println(y); + } + }""".trimIndent()) + val elements = myFixture.completeBasic() + val lookupElement = elements + .firstOrNull { element -> element.lookupString.contains("rename", ignoreCase = true) } + ?.`as`(CommandCompletionLookupElement::class.java) + assertNotNull(lookupElement) + assertEquals(TextRange(19, 22), (lookupElement as CommandCompletionLookupElement).highlighting?.range) } fun testParameterRename() {