AtomicConversionRule: use ExpressionUtils#getArrayFromLengthExpression

This commit is contained in:
Tagir Valeev
2018-08-16 17:56:03 +07:00
parent b10b076a70
commit 439b0de70a

View File

@@ -27,8 +27,6 @@ import com.intellij.refactoring.typeMigration.TypeConversionDescriptor;
import com.intellij.refactoring.typeMigration.TypeConversionDescriptorBase;
import com.intellij.refactoring.typeMigration.TypeEvaluator;
import com.intellij.refactoring.typeMigration.TypeMigrationLabeler;
import com.intellij.util.ObjectUtils;
import com.siyeh.HardcodedMethodConstants;
import com.siyeh.ig.psiutils.ExpressionUtils;
import com.siyeh.ig.psiutils.ParenthesesUtils;
import org.jetbrains.annotations.NotNull;
@@ -286,7 +284,7 @@ public class AtomicConversionRule extends TypeConversionRule {
final PsiElement parent = context.getParent();
final PsiElement parentParent = parent.getParent();
if (context instanceof PsiReferenceExpression && isReferenceToLengthField((PsiReferenceExpression)context)) {
if (context instanceof PsiReferenceExpression && ExpressionUtils.getArrayFromLengthExpression((PsiReferenceExpression)context) != null) {
return new TypeConversionDescriptor("$qualifier$.length", "$qualifier$.length()");
}
if (parent instanceof PsiAssignmentExpression) {
@@ -442,14 +440,4 @@ public class AtomicConversionRule extends TypeConversionRule {
}
return null;
}
private static boolean isReferenceToLengthField(@NotNull PsiReferenceExpression refExpr) {
if (!"length".equals(refExpr.getReferenceName())) {
return false;
}
PsiClass aClass = JavaPsiFacade.getElementFactory(refExpr.getProject()).getArrayClass(PsiUtil.getLanguageLevel(refExpr));
PsiField lengthField = ObjectUtils.notNull(aClass.findFieldByName(HardcodedMethodConstants.LENGTH, false));
return refExpr.isReferenceTo(lengthField);
}
}