mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 05:10:22 +07:00
[java-intentions] ChangeMethodSignatureFromUsageFix: better handling of annotations
GitOrigin-RevId: b4de4a64ff488b167352bac2172c9df55836b819
This commit is contained in:
committed by
intellij-monorepo-bot
parent
90705bd897
commit
2c3779a08a
@@ -179,19 +179,21 @@ public class ChangeMethodSignatureFromUsageFix implements IntentionAction/*, Hig
|
||||
|
||||
@Override
|
||||
public @NotNull IntentionPreviewInfo generatePreview(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) {
|
||||
ParameterInfoImpl[] parameterInfos = getNewParametersInfo(myExpressions, myTargetMethod, mySubstitutor);
|
||||
HashSet<ParameterInfoImpl> newParams = new HashSet<>();
|
||||
HashSet<ParameterInfoImpl> removedParams = new HashSet<>();
|
||||
HashSet<ParameterInfoImpl> changedParams = new HashSet<>();
|
||||
ParameterInfoImpl[] parameterInfos =
|
||||
getNewParametersInfo(myExpressions, myTargetMethod, mySubstitutor, new StringBuilder(), newParams, removedParams, changedParams);
|
||||
PsiParameterList parameterList = myTargetMethod.getParameterList();
|
||||
PsiParameter[] oldParameters = parameterList.getParameters();
|
||||
if (parameterInfos == null) return IntentionPreviewInfo.EMPTY;
|
||||
String params = "(" + StringUtil.join(parameterInfos, p -> {
|
||||
String modifiers = "";
|
||||
if (p.oldParameterIndex != ParameterInfo.NEW_PARAMETER) {
|
||||
PsiModifierList modifierList = oldParameters[p.oldParameterIndex].getModifierList();
|
||||
if (modifierList != null) {
|
||||
modifiers = modifierList.getText();
|
||||
}
|
||||
if (p.oldParameterIndex != ParameterInfo.NEW_PARAMETER && !changedParams.contains(p)) {
|
||||
PsiParameter parameter = oldParameters[p.oldParameterIndex];
|
||||
PsiRecordComponent component = JavaPsiRecordUtil.getComponentForCanonicalConstructorParameter(parameter);
|
||||
return Objects.requireNonNullElse(component, parameter).getText();
|
||||
}
|
||||
return (modifiers.isEmpty() ? "" : modifiers + " ") + p.getTypeText() + " " + p.getName();
|
||||
return p.getTypeText() + " " + p.getName();
|
||||
}, ", ") + ")";
|
||||
TextRange range;
|
||||
String methodText;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
// "Change 2nd parameter of method 'f' from 'Integer' to 'String'" "true-preview"
|
||||
import java.lang.annotation.*;
|
||||
|
||||
class A {
|
||||
void f(@Anno @Anno2 @Anno3 String s, String i) {}
|
||||
public void foo() {
|
||||
f("s", "x");
|
||||
}
|
||||
|
||||
@Target({ElementType.PARAMETER, ElementType.TYPE_USE})
|
||||
@interface Anno {}
|
||||
|
||||
@Target({ElementType.TYPE_USE})
|
||||
@interface Anno2 {}
|
||||
|
||||
@Target({ElementType.PARAMETER})
|
||||
@interface Anno3 {}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// "Change 2nd parameter of method 'f' from 'Integer' to 'String'" "true-preview"
|
||||
import java.lang.annotation.*;
|
||||
|
||||
class A {
|
||||
void f(@Anno @Anno2 @Anno3 String s, @Anno Integer i) {}
|
||||
public void foo() {
|
||||
<caret>f("s", "x");
|
||||
}
|
||||
|
||||
@Target({ElementType.PARAMETER, ElementType.TYPE_USE})
|
||||
@interface Anno {}
|
||||
|
||||
@Target({ElementType.TYPE_USE})
|
||||
@interface Anno2 {}
|
||||
|
||||
@Target({ElementType.PARAMETER})
|
||||
@interface Anno3 {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
void f(@Anno @Anno2 @Anno3 String s, String i) {}
|
||||
Reference in New Issue
Block a user