Skip to content

Commit 6f09e24

Browse files
Jenson3210Jente Sondervorst
and
Jente Sondervorst
authored
Import get inserted at correct index with newline space (#4242)
Closes: #4241 Co-authored-by: Jente Sondervorst <[email protected]>
1 parent 28e7b12 commit 6f09e24

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

rewrite-java/src/main/java/org/openrewrite/java/style/ImportLayoutStyle.java

+1
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ public List<JRightPadded<J.Import>> addImport(List<JRightPadded<J.Import>> origi
151151
// Find the import in the original list to establish insertion position.
152152
for (int j = 0; j < originalImports.size(); j++) {
153153
if (after != null && after.getElement().equals(originalImports.get(j).getElement()) && addToBlock.accept(after)) {
154+
insertPosition = j;
154155
break;
155156
} else if (before.getElement().equals(originalImports.get(j).getElement())) {
156157
insertPosition = j + 1;

rewrite-java/src/test/java/org/openrewrite/java/style/ImportLayoutStyleTest.java

+46
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,50 @@ void addImportInPresenceOfDuplicateOtherImport() {
121121
.containsExactlyInAnyOrder(
122122
import1, import1, new JRightPadded<>(importToAdd, Space.EMPTY, Markers.EMPTY));
123123
}
124+
125+
@Test
126+
@Issue("https://github.com/openrewrite/rewrite/issues/4241")
127+
void addImportWithNewLineInUnsortedImportList() {
128+
ImportLayoutStyle style = new ImportLayoutStyle(
129+
Integer.MAX_VALUE, Integer.MAX_VALUE, Collections.emptyList(), Collections.emptyList());
130+
JRightPadded<J.Import> import0 = new JRightPadded<>(
131+
new J.Import(
132+
randomId(),
133+
Space.EMPTY,
134+
Markers.EMPTY,
135+
new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY),
136+
TypeTree.build("pkg.AAA.MEMBER_0").withPrefix(Space.SINGLE_SPACE),
137+
null),
138+
Space.EMPTY,
139+
Markers.EMPTY);
140+
JRightPadded<J.Import> import1 = new JRightPadded<>(
141+
new J.Import(
142+
randomId(),
143+
Space.EMPTY,
144+
Markers.EMPTY,
145+
new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY),
146+
TypeTree.build("pkg.Clazz.MEMBER_3").withPrefix(Space.SINGLE_SPACE),
147+
null),
148+
Space.EMPTY,
149+
Markers.EMPTY);
150+
JRightPadded<J.Import> import3 = new JRightPadded<>(
151+
new J.Import(
152+
randomId(),
153+
Space.EMPTY,
154+
Markers.EMPTY,
155+
new JLeftPadded<>(Space.SINGLE_SPACE, true, Markers.EMPTY),
156+
TypeTree.build("pkg.Clazz.MEMBER_1").withPrefix(Space.SINGLE_SPACE),
157+
null),
158+
Space.EMPTY,
159+
Markers.EMPTY);
160+
J.Import importToAdd = new J.Import(
161+
randomId(),
162+
Space.EMPTY,
163+
Markers.EMPTY,
164+
new JLeftPadded<>(Space.EMPTY, true, Markers.EMPTY),
165+
TypeTree.build("pkg.Clazz.MEMBER_2").withPrefix(Space.SINGLE_SPACE),
166+
null);
167+
168+
assertThat(style.addImport(List.of(import0, import1, import3), importToAdd, null, Collections.emptyList()).get(1).getElement().getPrefix()).isEqualTo(Space.format("\n"));
169+
}
124170
}

0 commit comments

Comments
 (0)