Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a49c4d0

Browse files
authored
Allow J.Empty type parameters in SemanticallyEqual (openrewrite#4266)
* Allow J.Empty type parameters in SemanticallyEqual * Expand tests for generics just to show type is checked
1 parent 0e35478 commit a49c4d0

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

rewrite-java-test/src/test/java/org/openrewrite/java/search/SemanticallyEqualTest.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import org.intellij.lang.annotations.Language;
1919
import org.junit.jupiter.api.Test;
20+
import org.junit.jupiter.api.Nested;
2021
import org.junitpioneer.jupiter.ExpectedToFail;
2122
import org.junitpioneer.jupiter.cartesian.CartesianTest;
2223
import org.openrewrite.java.JavaIsoVisitor;
@@ -298,6 +299,61 @@ class T {
298299
);
299300
}
300301

302+
@Nested
303+
class Generics {
304+
@Test
305+
void firstEmpty() {
306+
assertExpressionsEqual(
307+
"""
308+
import java.util.List;
309+
class T {
310+
List<String> a = new java.util.ArrayList<String>();
311+
List<String> b = new java.util.ArrayList<>();
312+
}
313+
"""
314+
);
315+
}
316+
317+
@Test
318+
void secondEmpty() {
319+
assertExpressionsEqual(
320+
"""
321+
import java.util.List;
322+
class T {
323+
List<String> a = new java.util.ArrayList<>();
324+
List<String> b = new java.util.ArrayList<String>();
325+
}
326+
"""
327+
);
328+
}
329+
330+
@Test
331+
void bothEmpty() {
332+
assertExpressionsEqual(
333+
"""
334+
import java.util.List;
335+
class T {
336+
List<String> a = new java.util.ArrayList<>();
337+
List<String> b = new java.util.ArrayList<>();
338+
}
339+
"""
340+
);
341+
}
342+
343+
@Test
344+
void bothEmptyButDifferent() {
345+
assertExpressionsNotEqual(
346+
"""
347+
import java.util.List;
348+
class T {
349+
List<String> a = new java.util.ArrayList<>();
350+
List<Integer> b = new java.util.ArrayList<>();
351+
}
352+
"""
353+
);
354+
}
355+
}
356+
301357
private void assertEqualToSelf(@Language("java") String a) {
302358
assertEqual(a, a);
303359
}

rewrite-java/src/main/java/org/openrewrite/java/search/SemanticallyEqual.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1088,7 +1088,9 @@ public J.ParameterizedType visitParameterizedType(J.ParameterizedType type, J j)
10881088
return type;
10891089
}
10901090

1091-
this.visitList(type.getTypeParameters(), compareTo.getTypeParameters());
1091+
if (!(type.getTypeParameters().get(0) instanceof J.Empty || compareTo.getTypeParameters().get(0) instanceof J.Empty)) {
1092+
this.visitList(type.getTypeParameters(), compareTo.getTypeParameters());
1093+
}
10921094
}
10931095
return type;
10941096
}

0 commit comments

Comments
 (0)