ensure sort order as chooser preserves user's selection order

(EA-47464 - AIOOBE: DelegateWithDefaultParamValueIntentionAction.generateMethodPrototype)
This commit is contained in:
Anna Kozlova
2015-08-24 20:00:22 +03:00
parent 09655f5d76
commit aa77b2e88f
@@ -43,6 +43,7 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
/**
@@ -91,9 +92,18 @@ public class DelegateWithDefaultParamValueIntentionAction extends PsiElementBase
prototype.getModifierList().setModifierProperty(PsiModifier.DEFAULT, true);
}
for (int i = params.length - 1; i >= 0; i--) {
PsiParameter param = params[i];
final int parameterIndex = method.getParameterList().getParameterIndex(param);
final PsiParameterList parameterList = method.getParameterList();
Arrays.sort(params, new Comparator<PsiParameter>() {
@Override
public int compare(PsiParameter p1, PsiParameter p2) {
final int parameterIndex1 = parameterList.getParameterIndex(p1);
final int parameterIndex2 = parameterList.getParameterIndex(p2);
return parameterIndex1 > parameterIndex2 ? -1 : 1;
}
});
for (PsiParameter param : params) {
final int parameterIndex = parameterList.getParameterIndex(param);
prototype.getParameterList().getParameters()[parameterIndex].delete();
}
return prototype;