diff --git a/rewrite-java-test/src/test/java/org/openrewrite/java/DeleteMethodArgumentTest.java b/rewrite-java-test/src/test/java/org/openrewrite/java/DeleteMethodArgumentTest.java index 8003e0ee0ce..6949a868520 100644 --- a/rewrite-java-test/src/test/java/org/openrewrite/java/DeleteMethodArgumentTest.java +++ b/rewrite-java-test/src/test/java/org/openrewrite/java/DeleteMethodArgumentTest.java @@ -37,8 +37,7 @@ public B(int n) {} @Test void deleteMiddleArgumentDeclarative() { rewriteRun( - spec -> spec.recipe(new DeleteMethodArgument("B foo(int, int, int)", 1)) - .cycles(1).expectedCyclesThatMakeChanges(1), + spec -> spec.recipes(new DeleteMethodArgument("B foo(int, int, int)", 1)), java(b), java( "public class A {{ B.foo(0, 1, 2); }}", @@ -50,8 +49,7 @@ void deleteMiddleArgumentDeclarative() { @Test void deleteMiddleArgument() { rewriteRun( - spec -> spec.recipe(new DeleteMethodArgument("B foo(int, int, int)", 1)) - .cycles(1).expectedCyclesThatMakeChanges(1), + spec -> spec.recipe(new DeleteMethodArgument("B foo(int, int, int)", 1)), java(b), java( "public class A {{ B.foo(0, 1, 2); }}", @@ -65,7 +63,7 @@ void deleteArgumentsConsecutively() { rewriteRun( spec -> spec.recipes( new DeleteMethodArgument("B foo(int, int, int)", 1), - new DeleteMethodArgument("B foo(int, int, int)", 1) + new DeleteMethodArgument("B foo(int, int)", 1) ), java(b), java("public class A {{ B.foo(0, 1, 2); }}", @@ -98,8 +96,7 @@ void insertEmptyWhenLastArgumentIsDeleted() { @Test void deleteConstructorArgument() { rewriteRun( - spec -> spec.recipe(new DeleteMethodArgument("B (int)", 0)) - .cycles(1).expectedCyclesThatMakeChanges(1), + spec -> spec.recipe(new DeleteMethodArgument("B (int)", 0)), java(b), java( "public class A { B b = new B(0); }", diff --git a/rewrite-java/src/main/java/org/openrewrite/java/DeleteMethodArgument.java b/rewrite-java/src/main/java/org/openrewrite/java/DeleteMethodArgument.java index 1d69fce01f9..fbcd44a2c44 100644 --- a/rewrite-java/src/main/java/org/openrewrite/java/DeleteMethodArgument.java +++ b/rewrite-java/src/main/java/org/openrewrite/java/DeleteMethodArgument.java @@ -19,10 +19,7 @@ import lombok.Value; import org.openrewrite.*; import org.openrewrite.java.search.UsesMethod; -import org.openrewrite.java.tree.Expression; -import org.openrewrite.java.tree.J; -import org.openrewrite.java.tree.MethodCall; -import org.openrewrite.java.tree.Space; +import org.openrewrite.java.tree.*; import org.openrewrite.marker.Markers; import java.util.ArrayList; @@ -104,6 +101,18 @@ private MethodCall visitMethodCall(MethodCall methodCall) { } m = m.withArguments(args); + + JavaType.Method methodType = m.getMethodType(); + if (methodType != null) { + List parameterNames = new ArrayList<>(methodType.getParameterNames()); + parameterNames.remove(argumentIndex); + List parameterTypes = new ArrayList<>(methodType.getParameterTypes()); + parameterTypes.remove(argumentIndex); + + m = m.withMethodType(methodType + .withParameterNames(parameterNames) + .withParameterTypes(parameterTypes)); + } } return m; }