Skip to content

Commit 9ba38b4

Browse files
Add regression test for ReplaceStackWithDeque crash on this argument (#864)
Covers the dataflow crash fixed in openrewrite/rewrite-analysis#95, where the recipe threw `Unable to create DataFlowNode` when a `Stack` variable shared a method with a call that passed `this` as an argument.
1 parent 78afc25 commit 9ba38b4

1 file changed

Lines changed: 39 additions & 0 deletions

File tree

src/test/java/org/openrewrite/staticanalysis/ReplaceStackWithDequeTest.java

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

1818
import org.junit.jupiter.api.Test;
1919
import org.openrewrite.DocumentExample;
20+
import org.openrewrite.Issue;
2021
import org.openrewrite.test.RecipeSpec;
2122
import org.openrewrite.test.RewriteTest;
2223

@@ -83,4 +84,42 @@ Stack<Integer> test() {
8384
);
8485
}
8586

87+
@Issue("https://github.com/openrewrite/rewrite-analysis/pull/95")
88+
@Test
89+
void thisAsArgumentInMethodInvocation() {
90+
rewriteRun(
91+
//language=java
92+
java(
93+
"""
94+
import java.util.Stack;
95+
96+
class Test {
97+
void test(java.util.List<Test> result) {
98+
Stack<Integer> stack = new Stack<>();
99+
stack.add(1);
100+
if (stack.isEmpty()) {
101+
result.add(this);
102+
}
103+
}
104+
}
105+
""",
106+
"""
107+
import java.util.ArrayDeque;
108+
import java.util.Deque;
109+
import java.util.Stack;
110+
111+
class Test {
112+
void test(java.util.List<Test> result) {
113+
Deque<Integer> stack = new ArrayDeque<>();
114+
stack.add(1);
115+
if (stack.isEmpty()) {
116+
result.add(this);
117+
}
118+
}
119+
}
120+
"""
121+
)
122+
);
123+
}
124+
86125
}

0 commit comments

Comments
 (0)