Fix template generation to preserve statements when adding before/after coordinates #5914
+144
−18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What's changed?
This PR fixes an issue where the template generator incorrectly modified statements when using JavaCoordinates to add statements before or after existing code, rather than replacing them.
What's your motivation?
When using JavaTemplate to add a statement before an existing method invocation (e.g., using
firstStatement()
coordinates), the template generator would incorrectly prefix the new statement with variable declarations likeObject o =
. This happened because the generator didn't distinguish between REPLACEMENT mode (where such prefixes ensure valid compilation) and addition modes (BEFORE/AFTER) where the statement should remain unmodified.For example, when adding
String newLine = "test";
beforeo.get();
, the generator would produce the invalid statement:Object o = String newLine = "test";
Solution