Skip to content

Commit 29c8a36

Browse files
authored
Fix print inequality around modifiers with whitespace (#6579)
1 parent 7e486bf commit 29c8a36

6 files changed

Lines changed: 60 additions & 10 deletions

File tree

rewrite-java-11/src/main/java/org/openrewrite/java/isolated/ReloadableJava11ParserVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2180,7 +2180,7 @@ private ReloadableJava11ModifierResults sortedModifiersAndAnnotations(ModifiersT
21802180

21812181
if (inMultilineComment && c == '/' && source.charAt(i - 1) == '*') {
21822182
inMultilineComment = false;
2183-
} else if (inComment && c == '\n' || c == '\r') {
2183+
} else if (inComment && (c == '\n' || c == '\r')) {
21842184
inComment = false;
21852185
} else if (!inMultilineComment && !inComment) {
21862186
// Check: char is whitespace OR next char is an `@` (which is an annotation preceded by modifier/annotation without space)
@@ -2207,6 +2207,7 @@ private ReloadableJava11ModifierResults sortedModifiersAndAnnotations(ModifiersT
22072207
currentAnnotations = new ArrayList<>();
22082208
word.set("");
22092209
afterLastModifierPosition = cursor;
2210+
i = cursor - 1;
22102211
}
22112212
}
22122213
} else {
@@ -2304,7 +2305,7 @@ private List<J.Annotation> collectAnnotations(Map<Integer, JCAnnotation> annotat
23042305

23052306
if (inMultilineComment && c == '/' && i > 0 && source.charAt(i - 1) == '*') {
23062307
inMultilineComment = false;
2307-
} else if (inComment && c == '\n' || c == '\r') {
2308+
} else if (inComment && (c == '\n' || c == '\r')) {
23082309
inComment = false;
23092310
} else if (!inMultilineComment && !inComment) {
23102311
if (!Character.isWhitespace(c)) {

rewrite-java-17/src/main/java/org/openrewrite/java/isolated/ReloadableJava17ParserVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2318,7 +2318,7 @@ private ReloadableJava17ModifierResults sortedModifiersAndAnnotations(ModifiersT
23182318

23192319
if (inMultilineComment && c == '/' && source.charAt(i - 1) == '*') {
23202320
inMultilineComment = false;
2321-
} else if (inComment && c == '\n' || c == '\r') {
2321+
} else if (inComment && (c == '\n' || c == '\r')) {
23222322
inComment = false;
23232323
} else if (!inMultilineComment && !inComment) {
23242324
// Check: char is whitespace OR next char is an `@` (which is an annotation preceded by modifier/annotation without space)
@@ -2335,6 +2335,7 @@ private ReloadableJava17ModifierResults sortedModifiersAndAnnotations(ModifiersT
23352335
afterFirstModifier = true;
23362336
currentAnnotations = new ArrayList<>(2);
23372337
afterLastModifierPosition = cursor;
2338+
i = cursor - 1;
23382339
}
23392340
}
23402341
} else if (keywordStartIdx == -1) {
@@ -2438,7 +2439,7 @@ private List<J.Annotation> collectAnnotations(Map<Integer, JCAnnotation> annotat
24382439

24392440
if (inMultilineComment && c == '/' && i > 0 && source.charAt(i - 1) == '*') {
24402441
inMultilineComment = false;
2441-
} else if (inComment && c == '\n' || c == '\r') {
2442+
} else if (inComment && (c == '\n' || c == '\r')) {
24422443
inComment = false;
24432444
} else if (!inMultilineComment && !inComment) {
24442445
if (!Character.isWhitespace(c)) {

rewrite-java-21/src/main/java/org/openrewrite/java/isolated/ReloadableJava21ParserVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2347,7 +2347,7 @@ private ReloadableJava21ModifierResults sortedModifiersAndAnnotations(ModifiersT
23472347

23482348
if (inMultilineComment && c == '/' && source.charAt(i - 1) == '*') {
23492349
inMultilineComment = false;
2350-
} else if (inComment && c == '\n' || c == '\r') {
2350+
} else if (inComment && (c == '\n' || c == '\r')) {
23512351
inComment = false;
23522352
} else if (!inMultilineComment && !inComment) {
23532353
// Check: char is whitespace OR next char is an `@` (which is an annotation preceded by modifier/annotation without space)
@@ -2364,6 +2364,7 @@ private ReloadableJava21ModifierResults sortedModifiersAndAnnotations(ModifiersT
23642364
afterFirstModifier = true;
23652365
currentAnnotations = new ArrayList<>(2);
23662366
afterLastModifierPosition = cursor;
2367+
i = cursor - 1;
23672368
}
23682369
}
23692370
} else if (keywordStartIdx == -1) {
@@ -2467,7 +2468,7 @@ private List<J.Annotation> collectAnnotations(Map<Integer, JCAnnotation> annotat
24672468

24682469
if (inMultilineComment && c == '/' && i > 0 && source.charAt(i - 1) == '*') {
24692470
inMultilineComment = false;
2470-
} else if (inComment && c == '\n' || c == '\r') {
2471+
} else if (inComment && (c == '\n' || c == '\r')) {
24712472
inComment = false;
24722473
} else if (!inMultilineComment && !inComment) {
24732474
if (!Character.isWhitespace(c)) {

rewrite-java-25/src/main/java/org/openrewrite/java/isolated/ReloadableJava25ParserVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2384,7 +2384,7 @@ private ReloadableJava25ModifierResults sortedModifiersAndAnnotations(ModifiersT
23842384

23852385
if (inMultilineComment && c == '/' && source.charAt(i - 1) == '*') {
23862386
inMultilineComment = false;
2387-
} else if (inComment && c == '\n' || c == '\r') {
2387+
} else if (inComment && (c == '\n' || c == '\r')) {
23882388
inComment = false;
23892389
} else if (!inMultilineComment && !inComment) {
23902390
// Check: char is whitespace OR next char is an `@` (which is an annotation preceded by modifier/annotation without space)
@@ -2401,6 +2401,7 @@ private ReloadableJava25ModifierResults sortedModifiersAndAnnotations(ModifiersT
24012401
afterFirstModifier = true;
24022402
currentAnnotations = new ArrayList<>(2);
24032403
afterLastModifierPosition = cursor;
2404+
i = cursor - 1;
24042405
}
24052406
}
24062407
} else if (keywordStartIdx == -1) {
@@ -2504,7 +2505,7 @@ private List<J.Annotation> collectAnnotations(Map<Integer, JCAnnotation> annotat
25042505

25052506
if (inMultilineComment && c == '/' && i > 0 && source.charAt(i - 1) == '*') {
25062507
inMultilineComment = false;
2507-
} else if (inComment && c == '\n' || c == '\r') {
2508+
} else if (inComment && (c == '\n' || c == '\r')) {
25082509
inComment = false;
25092510
} else if (!inMultilineComment && !inComment) {
25102511
if (!Character.isWhitespace(c)) {

rewrite-java-8/src/main/java/org/openrewrite/java/ReloadableJava8ParserVisitor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2164,7 +2164,7 @@ private Java8ModifierResults sortedModifiersAndAnnotations(ModifiersTree modifie
21642164

21652165
if (inMultilineComment && c == '/' && source.charAt(i - 1) == '*') {
21662166
inMultilineComment = false;
2167-
} else if (inComment && c == '\n' || c == '\r') {
2167+
} else if (inComment && (c == '\n' || c == '\r')) {
21682168
inComment = false;
21692169
} else if (!inMultilineComment && !inComment) {
21702170
// Check: char is whitespace OR next char is an `@` (which is an annotation preceded by modifier/annotation without space)
@@ -2191,6 +2191,7 @@ private Java8ModifierResults sortedModifiersAndAnnotations(ModifiersTree modifie
21912191
currentAnnotations = new ArrayList<>();
21922192
word.set("");
21932193
afterLastModifierPosition = cursor;
2194+
i = cursor - 1;
21942195
}
21952196
}
21962197
} else {
@@ -2288,7 +2289,7 @@ private List<J.Annotation> collectAnnotations(Map<Integer, JCAnnotation> annotat
22882289

22892290
if (inMultilineComment && c == '/' && i > 0 && source.charAt(i - 1) == '*') {
22902291
inMultilineComment = false;
2291-
} else if (inComment && c == '\n' || c == '\r') {
2292+
} else if (inComment && (c == '\n' || c == '\r')) {
22922293
inComment = false;
22932294
} else if (!inMultilineComment && !inComment) {
22942295
if (!Character.isWhitespace(c)) {

rewrite-java-tck/src/main/java/org/openrewrite/java/tree/VariableDeclarationsTest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,4 +357,49 @@ void main() {
357357
)
358358
);
359359
}
360+
361+
@Issue("https://github.com/openrewrite/rewrite/issues/6577")
362+
@Test
363+
void finalModifierWithNewlineBeforeType() {
364+
rewriteRun(
365+
java(
366+
"""
367+
class Test {
368+
void method(final
369+
String param) {
370+
}
371+
}
372+
"""
373+
)
374+
);
375+
}
376+
377+
@Issue("https://github.com/openrewrite/rewrite/issues/6577")
378+
@Test
379+
void finalModifierWithCRLFBeforeType() {
380+
rewriteRun(
381+
java(
382+
"class Test {\r\n" +
383+
" void method(final\r\n" +
384+
" String param) {\r\n" +
385+
" }\r\n" +
386+
"}"
387+
)
388+
);
389+
}
390+
391+
@Issue("https://github.com/openrewrite/rewrite/issues/6577")
392+
@Test
393+
void multipleModifiersWithNewline() {
394+
rewriteRun(
395+
java(
396+
"""
397+
class Test {
398+
public static final
399+
String field = "";
400+
}
401+
"""
402+
)
403+
);
404+
}
360405
}

0 commit comments

Comments
 (0)