mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
SortContentAction: being consistent when expression is composite
This commit is contained in:
@@ -714,7 +714,7 @@ public class SortContentAction extends PsiElementBaseIntentionAction {
|
||||
PsiParameter last = ArrayUtil.getLastElement(parameters);
|
||||
if (last == null) return null;
|
||||
if (!last.isVarArgs()) return null;
|
||||
PsiExpression closestExpression = getClosestExpression(originElement);
|
||||
PsiExpression closestExpression = getTopmostExpression(getClosestExpression(originElement));
|
||||
if (closestExpression == null) return null;
|
||||
int indexOfCurrent = Arrays.asList(arguments).indexOf(closestExpression);
|
||||
if (-1 == indexOfCurrent) return null;
|
||||
@@ -723,6 +723,18 @@ public class SortContentAction extends PsiElementBaseIntentionAction {
|
||||
return Arrays.copyOfRange(arguments, parameters.length - 1, arguments.length);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PsiExpression getTopmostExpression(@Nullable final PsiExpression expression) {
|
||||
if (expression == null) return null;
|
||||
@NotNull PsiExpression current = expression;
|
||||
while (true) {
|
||||
PsiExpression parentExpr = tryCast(current.getParent(), PsiExpression.class);
|
||||
if (parentExpr == null) break;
|
||||
current = parentExpr;
|
||||
}
|
||||
return current;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PsiExpression getClosestExpression(@NotNull PsiElement element) {
|
||||
while (element != null) {
|
||||
|
||||
Reference in New Issue
Block a user