ExpressionUtils#getCallForQualifier extracted

This commit is contained in:
Tagir Valeev
2016-12-09 15:17:25 +07:00
parent 7dfcf14575
commit ae273b6c24
2 changed files with 25 additions and 5 deletions
@@ -362,11 +362,9 @@ public class StringConcatenationInLoopsInspection extends BaseInspection {
if(assignment.getOperationTokenType().equals(JavaTokenType.PLUSEQ)) return;
}
}
if(parent instanceof PsiReferenceExpression &&
((PsiReferenceExpression)parent).getQualifierExpression() == ref &&
parent.getParent() instanceof PsiMethodCallExpression) {
PsiMethodCallExpression call = (PsiMethodCallExpression)parent.getParent();
replaceInCallQualifier(variable, results, call, ct);
PsiMethodCallExpression methodCallExpression = ExpressionUtils.getCallForQualifier(ref);
if(methodCallExpression != null) {
replaceInCallQualifier(variable, results, methodCallExpression, ct);
return;
}
if(parent instanceof PsiExpressionList && parent.getParent() instanceof PsiMethodCallExpression) {
@@ -841,4 +841,26 @@ public class ExpressionUtils {
expression = PsiUtil.skipParenthesizedExprDown(expression);
return expression instanceof PsiReferenceExpression && ((PsiReferenceExpression)expression).isReferenceTo(variable);
}
/**
* Returns a method call expression for the supplied qualifier
*
* @param qualifier for method call
* @return a method call expression or null if the supplied expression is not a method call qualifier
*/
@Contract(value = "null -> null", pure = true)
public static PsiMethodCallExpression getCallForQualifier(PsiExpression qualifier) {
if(qualifier == null) return null;
PsiElement parent = PsiUtil.skipParenthesizedExprUp(qualifier.getParent());
if(parent instanceof PsiReferenceExpression) {
PsiReferenceExpression methodExpression = (PsiReferenceExpression)parent;
if(PsiTreeUtil.isAncestor(methodExpression.getQualifierExpression(), qualifier, false)) {
PsiElement gParent = methodExpression.getParent();
if (gParent instanceof PsiMethodCallExpression) {
return (PsiMethodCallExpression)gParent;
}
}
}
return null;
}
}