mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
[java-inspections] AddMethodQualifierFix: preserve existing arguments
GitOrigin-RevId: 4631d490d89ef9f3c65789d0eb8e0a9840a88ec7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
27bb38c800
commit
7ba5b8972a
@@ -47,7 +47,7 @@ public class AddMethodQualifierFix extends PsiBasedModCommandAction<PsiMethodCal
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<PsiVariable> findCandidates(@NotNull PsiMethodCallExpression methodCallElement, @NotNull SearchMode mode) {
|
||||
private static List<PsiVariable> findCandidates(@NotNull PsiMethodCallExpression methodCallElement, @NotNull SearchMode mode) {
|
||||
String methodName = methodCallElement.getMethodExpression().getReferenceName();
|
||||
if (methodName == null) {
|
||||
return Collections.emptyList();
|
||||
@@ -88,20 +88,20 @@ public class AddMethodQualifierFix extends PsiBasedModCommandAction<PsiMethodCal
|
||||
@NotNull
|
||||
private static ModCommandAction createAction(PsiVariable candidate, SmartPsiElementPointer<PsiMethodCallExpression> pointer) {
|
||||
return ModCommands.psiUpdateStep(
|
||||
candidate, requireNonNullElse(candidate.getName(), ""), (var, updater) -> {
|
||||
PsiMethodCallExpression call = updater.getWritable(pointer.getElement());
|
||||
if (call == null) return;
|
||||
PsiElement replacedExpression = replaceWithQualifier(var, call);
|
||||
updater.moveTo(replacedExpression.getTextOffset() + replacedExpression.getTextLength());
|
||||
}, var -> requireNonNullElse(var.getNameIdentifier(), var).getTextRange())
|
||||
candidate, requireNonNullElse(candidate.getName(), ""), (var, updater) -> {
|
||||
PsiMethodCallExpression call = updater.getWritable(pointer.getElement());
|
||||
if (call == null) return;
|
||||
replaceWithQualifier(var, call);
|
||||
updater.moveTo(call.getTextOffset() + call.getTextLength());
|
||||
}, var -> requireNonNullElse(var.getNameIdentifier(), var).getTextRange())
|
||||
.withPresentation(p -> p.withIcon(candidate.getIcon(0)));
|
||||
}
|
||||
|
||||
private static PsiElement replaceWithQualifier(@NotNull PsiVariable qualifier, @NotNull PsiMethodCallExpression oldExpression) {
|
||||
private static void replaceWithQualifier(@NotNull PsiVariable qualifier, @NotNull PsiMethodCallExpression oldExpression) {
|
||||
String qualifierPresentableText = qualifier.getName();
|
||||
PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(qualifier.getProject());
|
||||
PsiExpression expression = elementFactory
|
||||
PsiMethodCallExpression expression = (PsiMethodCallExpression)elementFactory
|
||||
.createExpressionFromText(qualifierPresentableText + "." + oldExpression.getMethodExpression().getReferenceName() + "()", null);
|
||||
return oldExpression.replace(expression);
|
||||
oldExpression.getMethodExpression().replace(expression.getMethodExpression());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
public class A {
|
||||
void test(String s) {
|
||||
<caret>equalsIgnoreCase("hello")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
public class A {
|
||||
void test(String s) {
|
||||
s.equalsIgnoreCase("hello")<caret>
|
||||
}
|
||||
}
|
||||
@@ -45,6 +45,10 @@ public class AddMethodQualifierTest extends JavaCodeInsightFixtureTestCase {
|
||||
doTestFix();
|
||||
}
|
||||
|
||||
public void testFixArguments() {
|
||||
doTestFix();
|
||||
}
|
||||
|
||||
public void testNotAvailableIfQualifierExists() {
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
assertNull(getQuickFix());
|
||||
|
||||
Reference in New Issue
Block a user