You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What is the smallest, simplest way to reproduce the problem?
This testcase throws an IndexOutOfBoundsException:
@TestvoidnoGuavaImmutableOfException() {
rewriteRun(
spec -> spec.recipe(newNoGuavaJava21()),
java(
""" package com.helloworld; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import java.util.Map; import java.util.Set; public class Main { public Map<String, Set<String>> getMap() { return ImmutableMap.of("key", ImmutableSet.of("value1", "value2")); } }""",
""" package com.helloworld; import java.util.Map; import java.util.Set; public class Main { public Map<String, Set<String>> getMap() { return Map.of("key", Set.of("value1", "value2")); } }""",
src -> src.markers(javaVersion(21))));
}
I stumbled across this while trying to reproduce an issue where our rewrites would leave an unexpected marker in the output, something along the lines of:
What is the full stack trace of any errors you encountered?
java.lang.AssertionError:
at org.openrewrite.test.RewriteTest.lambda$defaultExecutionContext$15(RewriteTest.java:632)
at org.openrewrite.scheduling.RecipeRunCycle.handleError(RecipeRunCycle.java:242)
at org.openrewrite.scheduling.RecipeRunCycle.lambda$editSources$6(RecipeRunCycle.java:184)
at org.openrewrite.scheduling.RecipeStack.reduce(RecipeStack.java:57)
at org.openrewrite.scheduling.RecipeRunCycle.lambda$editSources$7(RecipeRunCycle.java:134)
at org.openrewrite.internal.InMemoryLargeSourceSet.lambda$edit$0(InMemoryLargeSourceSet.java:66)
at org.openrewrite.internal.ListUtils.map(ListUtils.java:176)
at org.openrewrite.internal.InMemoryLargeSourceSet.edit(InMemoryLargeSourceSet.java:65)
at org.openrewrite.scheduling.RecipeRunCycle.editSources(RecipeRunCycle.java:133)
at org.openrewrite.RecipeScheduler.runRecipeCycles(RecipeScheduler.java:86)
at org.openrewrite.RecipeScheduler.scheduleRun(RecipeScheduler.java:41)
at org.openrewrite.Recipe.run(Recipe.java:376)
at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:374)
at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:132)
at com.spotify.[...] <-- our testclass
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.openrewrite.internal.RecipeRunException: java.lang.IndexOutOfBoundsException: Index: 1
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:287)
at org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:317)
at org.openrewrite.java.JavaVisitor.visitRightPadded(JavaVisitor.java:1365)
at org.openrewrite.java.JavaVisitor.lambda$visitContainer$37(JavaVisitor.java:1415)
at org.openrewrite.internal.ListUtils.map(ListUtils.java:176)
at org.openrewrite.java.JavaVisitor.visitContainer(JavaVisitor.java:1415)
at org.openrewrite.java.JavaVisitor.visitMethodInvocation(JavaVisitor.java:918)
at org.openrewrite.java.migrate.guava.AbstractNoGuavaImmutableOf$1.visitMethodInvocation(AbstractNoGuavaImmutableOf.java:115)
at org.openrewrite.java.migrate.guava.AbstractNoGuavaImmutableOf$1.visitMethodInvocation(AbstractNoGuavaImmutableOf.java:68)
at org.openrewrite.java.tree.J$MethodInvocation.acceptJava(J.java:3912)
at org.openrewrite.java.tree.J.accept(J.java:59)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:317)
at org.openrewrite.java.JavaVisitor.visitReturn(JavaVisitor.java:1098)
at org.openrewrite.java.tree.J$Return.acceptJava(J.java:4977)
at org.openrewrite.java.tree.J.accept(J.java:59)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:317)
at org.openrewrite.java.JavaVisitor.visitRightPadded(JavaVisitor.java:1365)
at org.openrewrite.java.JavaVisitor.lambda$visitBlock$4(JavaVisitor.java:397)
at org.openrewrite.internal.ListUtils.map(ListUtils.java:176)
at org.openrewrite.java.JavaVisitor.visitBlock(JavaVisitor.java:396)
at org.openrewrite.java.tree.J$Block.acceptJava(J.java:838)
at org.openrewrite.java.tree.J.accept(J.java:59)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:317)
at org.openrewrite.java.JavaVisitor.visitMethodDeclaration(JavaVisitor.java:879)
at org.openrewrite.java.tree.J$MethodDeclaration.acceptJava(J.java:3658)
at org.openrewrite.java.tree.J.accept(J.java:59)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:317)
at org.openrewrite.java.JavaVisitor.visitRightPadded(JavaVisitor.java:1365)
at org.openrewrite.java.JavaVisitor.lambda$visitBlock$4(JavaVisitor.java:397)
at org.openrewrite.internal.ListUtils.map(ListUtils.java:176)
at org.openrewrite.java.JavaVisitor.visitBlock(JavaVisitor.java:396)
at org.openrewrite.java.tree.J$Block.acceptJava(J.java:838)
at org.openrewrite.java.tree.J.accept(J.java:59)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:317)
at org.openrewrite.java.JavaVisitor.visitClassDeclaration(JavaVisitor.java:484)
at org.openrewrite.java.tree.J$ClassDeclaration.acceptJava(J.java:1280)
at org.openrewrite.java.tree.J.accept(J.java:59)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visitAndCast(TreeVisitor.java:317)
at org.openrewrite.java.JavaVisitor.lambda$visitCompilationUnit$10(JavaVisitor.java:497)
at org.openrewrite.internal.ListUtils.map(ListUtils.java:176)
at org.openrewrite.java.JavaVisitor.visitCompilationUnit(JavaVisitor.java:497)
at org.openrewrite.java.tree.J$CompilationUnit.acceptJava(J.java:1551)
at org.openrewrite.java.tree.J.accept(J.java:59)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:147)
at org.openrewrite.Preconditions$Check.visit(Preconditions.java:175)
at org.openrewrite.Preconditions$Check.visit(Preconditions.java:145)
at org.openrewrite.scheduling.RecipeRunCycle.lambda$editSources$5(RecipeRunCycle.java:164)
at io.micrometer.core.instrument.AbstractTimer.recordCallable(AbstractTimer.java:175)
at org.openrewrite.table.RecipeRunStats.recordEdit(RecipeRunStats.java:67)
at org.openrewrite.scheduling.RecipeRunCycle.lambda$editSources$6(RecipeRunCycle.java:161)
... 15 more
Caused by: java.lang.IndexOutOfBoundsException: Index: 1
at java.base/java.util.Collections$EmptyList.get(Collections.java:4807)
at org.openrewrite.java.migrate.guava.AbstractNoGuavaImmutableOf$1.isParentTypeDownCast(AbstractNoGuavaImmutableOf.java:149)
at org.openrewrite.java.migrate.guava.AbstractNoGuavaImmutableOf$1.visitMethodInvocation(AbstractNoGuavaImmutableOf.java:71)
at org.openrewrite.java.migrate.guava.AbstractNoGuavaImmutableOf$1.visitMethodInvocation(AbstractNoGuavaImmutableOf.java:68)
at org.openrewrite.java.tree.J$MethodInvocation.acceptJava(J.java:3912)
at org.openrewrite.java.tree.J.accept(J.java:59)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
... 71 more
What version of OpenRewrite are you using?
rewrite-migrate-java 2.20.0
What is the smallest, simplest way to reproduce the problem?
This testcase throws an IndexOutOfBoundsException:
I stumbled across this while trying to reproduce an issue where our rewrites would leave an unexpected marker in the output, something along the lines of:
My assumption is that those are related?
What is the full stack trace of any errors you encountered?
Are you interested in contributing a fix to OpenRewrite?
Short on time at the moment, possibly later.
The text was updated successfully, but these errors were encountered: