diff --git a/src/main/java/org/openrewrite/java/migrate/util/IteratorNext.java b/src/main/java/org/openrewrite/java/migrate/util/IteratorNext.java index 454a9dcd04..632b3156f8 100644 --- a/src/main/java/org/openrewrite/java/migrate/util/IteratorNext.java +++ b/src/main/java/org/openrewrite/java/migrate/util/IteratorNext.java @@ -59,7 +59,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu if (NEXT_MATCHER.matches(nextInvocation) && ITERATOR_MATCHER.matches(nextInvocation.getSelect())) { J.MethodInvocation iteratorInvocation = (J.MethodInvocation) nextInvocation.getSelect(); Expression iteratorSelect = iteratorInvocation.getSelect(); - if (TypeUtils.isAssignableTo("java.util.SequencedCollection", iteratorSelect.getType())) { + if (iteratorSelect != null && TypeUtils.isAssignableTo("java.util.SequencedCollection", iteratorSelect.getType())) { JavaType.Method getFirst = iteratorInvocation.getMethodType().withName("getFirst"); return iteratorInvocation .withName(iteratorInvocation.getName().withSimpleName("getFirst").withType(getFirst)) diff --git a/src/test/java/org/openrewrite/java/migrate/util/IteratorNextTest.java b/src/test/java/org/openrewrite/java/migrate/util/IteratorNextTest.java index 50e53c16de..a987d22352 100644 --- a/src/test/java/org/openrewrite/java/migrate/util/IteratorNextTest.java +++ b/src/test/java/org/openrewrite/java/migrate/util/IteratorNextTest.java @@ -140,4 +140,22 @@ void bar(List collection) { ) ); } + + @Test + void implicitThisIteratorNextUnchanged() { + rewriteRun( + //language=java + java( + """ + import java.util.*; + + class Foo extends ArrayList { + void bar() { + String first = iterator().next(); + } + } + """ + ) + ); + } }