Java: introduce PsiArrayInitializerExpression.isEmpty() as well (IJ-CR-176760)

GitOrigin-RevId: 2f0757929d780ff01930cc8001001daf59ec4500
This commit is contained in:
Bas Leijdekkers
2025-09-26 14:02:14 +00:00
committed by intellij-monorepo-bot
parent 5db7b62f2e
commit 1143fea0b7
7 changed files with 18 additions and 6 deletions
@@ -177,7 +177,7 @@ public final class MismatchedArrayReadWriteInspection extends BaseInspection {
return arrayInitializer == null || isZeroSizeArrayExpression(arrayInitializer);
}
if (initializer instanceof PsiArrayInitializerExpression arrayInitializerExpression) {
return arrayInitializerExpression.getInitializerCount() == 0;
return arrayInitializerExpression.isEmpty();
}
return false;
}
@@ -223,7 +223,7 @@ public final class CollectionUtils {
public static boolean isEmptyArray(PsiVariable variable) {
final PsiExpression initializer = variable.getInitializer();
return initializer instanceof PsiArrayInitializerExpression arrayInitializerExpression
? arrayInitializerExpression.getInitializerCount() == 0
? arrayInitializerExpression.isEmpty()
: ConstructionUtils.isEmptyArrayInitializer(initializer);
}
@@ -201,7 +201,7 @@ public final class ConstructionUtils {
final PsiExpression[] dimensions = newExpression.getArrayDimensions();
if (dimensions.length == 0) {
final PsiArrayInitializerExpression arrayInitializer = newExpression.getArrayInitializer();
return arrayInitializer != null && arrayInitializer.getInitializerCount() == 0;
return arrayInitializer != null && arrayInitializer.isEmpty();
}
for (PsiExpression dimension : dimensions) {
if (!ExpressionUtils.isZero(dimension)) return false;
@@ -72,7 +72,7 @@ public final class ZeroLengthArrayInitializationInspection extends BaseInspectio
@Override
public void visitArrayInitializerExpression(@NotNull PsiArrayInitializerExpression expression) {
super.visitArrayInitializerExpression(expression);
if (expression.getInitializerCount() > 0) {
if (!expression.isEmpty()) {
return;
}
if (expression.getParent() instanceof PsiNewExpression) {
@@ -22,4 +22,11 @@ public interface PsiArrayInitializerExpression extends PsiExpression {
default int getInitializerCount() {
return getInitializers().length;
}
/**
* @return {@code true} if this array initializer expression contains no expressions
*/
default boolean isEmpty() {
return getInitializerCount() == 0;
}
}
@@ -27,6 +27,11 @@ public class PsiArrayInitializerExpressionImpl extends ExpressionPsiElement impl
return countChildren(ElementType.EXPRESSION_BIT_SET);
}
@Override
public boolean isEmpty() {
return findChildByType(ElementType.EXPRESSION_BIT_SET) == null;
}
@Override
public PsiType getType(){
if (getTreeParent() instanceof PsiNewExpression){
@@ -1057,7 +1057,7 @@ public class JavaMatchingVisitor extends JavaElementVisitor {
if (!myMatchingVisitor.setResult(myMatchingVisitor.matchSons(initializer1, initializer2))) return;
}
else if (initializer2 != null) {
myMatchingVisitor.setResult(areZeroLiterals(patternExpression.getArrayDimensions()) && initializer2.getInitializerCount() == 0);
myMatchingVisitor.setResult(areZeroLiterals(patternExpression.getArrayDimensions()) && initializer2.isEmpty());
return;
}
@@ -1645,7 +1645,7 @@ public class JavaMatchingVisitor extends JavaElementVisitor {
myMatchingVisitor.setResult(myMatchingVisitor.matchSons(initializer, other));
}
else {
myMatchingVisitor.setResult(((PsiArrayInitializerExpression)other).getInitializerCount() == 0);
myMatchingVisitor.setResult(((PsiArrayInitializerExpression)other).isEmpty());
}
}
return;