Skip to content

Commit 84d6677

Browse files
committed
No need to extract unused empty type parameters
1 parent 810f0a5 commit 84d6677

File tree

1 file changed

+9
-21
lines changed

1 file changed

+9
-21
lines changed

src/main/java/org/openrewrite/java/migrate/lang/var/UseVarForGenericMethodInvocations.java

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@
2828
import org.openrewrite.java.tree.JavaType;
2929
import org.openrewrite.java.tree.TypeTree;
3030

31-
import java.util.ArrayList;
3231
import java.util.List;
3332

33+
import static java.util.Objects.requireNonNull;
34+
3435
public class UseVarForGenericMethodInvocations extends Recipe {
3536
@Override
3637
public String getDisplayName() {
@@ -103,8 +104,7 @@ private J.MethodInvocation makeNestedGenericsExplicit(J.MethodInvocation mi, J.V
103104
return mi;
104105
}
105106

106-
J.ParameterizedType leftType = (J.ParameterizedType) vd.getTypeExpression();
107-
List<Expression> leftTypeParams = leftType.getTypeParameters();
107+
List<Expression> leftTypeParams = ((J.ParameterizedType) vd.getTypeExpression()).getTypeParameters();
108108
if (leftTypeParams == null || leftTypeParams.isEmpty()) {
109109
return mi;
110110
}
@@ -113,41 +113,29 @@ private J.MethodInvocation makeNestedGenericsExplicit(J.MethodInvocation mi, J.V
113113
return mi.withArguments(ListUtils.map(mi.getArguments(), arg -> {
114114
if (arg instanceof J.NewClass) {
115115
J.NewClass newClass = (J.NewClass) arg;
116-
List<JavaType> rightTypeParams = extractJavaTypes(newClass);
117116
// Check if using diamond operator (rightTypeParams is empty)
118-
if (rightTypeParams != null && rightTypeParams.isEmpty() && newClass.getClazz() instanceof J.ParameterizedType) {
117+
if (!hasTypeParams(newClass.getClazz())) {
119118
// Copy type parameters from left side to right side
120119
J.ParameterizedType rightType = (J.ParameterizedType) newClass.getClazz();
121-
return newClass.withClazz(
122-
rightType.withTypeParameters(leftTypeParams)
123-
);
120+
return newClass.withClazz(requireNonNull(rightType).withTypeParameters(leftTypeParams));
124121
}
125122
}
126123
return arg;
127124
}));
128125
}
129126

130-
/**
131-
* Extract JavaTypes from a NewClass expression's type parameters.
132-
*
133-
* @return null if not a parameterized type, or an empty list for diamond operator.
134-
*/
135-
private @Nullable List<JavaType> extractJavaTypes(J.NewClass newClass) {
136-
TypeTree clazz = newClass.getClazz();
127+
private static boolean hasTypeParams(@Nullable TypeTree clazz) {
137128
if (clazz instanceof J.ParameterizedType) {
138129
List<Expression> typeParameters = ((J.ParameterizedType) clazz).getTypeParameters();
139-
List<JavaType> params = new ArrayList<>();
140130
if (typeParameters != null) {
141131
for (Expression curType : typeParameters) {
142-
JavaType type = curType.getType();
143-
if (type != null) {
144-
params.add(type);
132+
if (curType.getType() != null) {
133+
return true;
145134
}
146135
}
147136
}
148-
return params;
149137
}
150-
return null;
138+
return false;
151139
}
152140

153141
private static boolean allArgumentsEmpty(J.MethodInvocation invocation) {

0 commit comments

Comments
 (0)