mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
change signature: java: store typed modifiers
This commit is contained in:
+35
-1
@@ -26,6 +26,7 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.util.CanonicalTypes;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -155,6 +156,7 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec
|
||||
|
||||
private static class MyJavaChangeInfo extends JavaChangeInfoImpl {
|
||||
private PsiMethod mySuperMethod;
|
||||
private String[] myModifiers;
|
||||
private MyJavaChangeInfo(String newVisibility,
|
||||
PsiMethod method,
|
||||
CanonicalTypes.Type newType,
|
||||
@@ -164,6 +166,16 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec
|
||||
super(newVisibility, method, method.getName(), newType, newParms, newExceptions, false,
|
||||
new HashSet<PsiMethod>(),
|
||||
new HashSet<PsiMethod>(), oldName);
|
||||
final PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
myModifiers = new String[parameters.length];
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
PsiParameter parameter = parameters[i];
|
||||
final PsiModifierList modifierList = parameter.getModifierList();
|
||||
if (modifierList != null) {
|
||||
final String text = modifierList.getText();
|
||||
myModifiers[i] = text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -181,6 +193,10 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec
|
||||
public void setSuperMethod(PsiMethod superMethod) {
|
||||
mySuperMethod = superMethod;
|
||||
}
|
||||
|
||||
public String[] getModifiers() {
|
||||
return myModifiers;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -254,7 +270,25 @@ public class JavaChangeSignatureDetector implements LanguageChangeSignatureDetec
|
||||
oldParameterNames = info.getOldParameterNames();
|
||||
oldParameterTypes = info.getOldParameterTypes();
|
||||
}
|
||||
});
|
||||
}) {
|
||||
@Override
|
||||
protected void performRefactoring(UsageInfo[] usages) {
|
||||
super.performRefactoring(usages);
|
||||
final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(method.getProject());
|
||||
final PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
for (int i = 0; i < info.getModifiers().length; i++) {
|
||||
final String modifier = info.getModifiers()[i];
|
||||
final PsiModifierList modifierList = parameters[i].getModifierList();
|
||||
if (modifierList != null && !Comparing.strEqual(modifier, modifierList.getText())) {
|
||||
final PsiModifierList newModifierList =
|
||||
elementFactory.createParameterFromText(modifier + " type name", method).getModifierList();
|
||||
if (newModifierList != null) {
|
||||
modifierList.replace(newModifierList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user