Skip to content

Commit 621fb85

Browse files
cushongoogle-java-format Team
authored andcommitted
Handle modifiers that start with non-
Fixes google#696 PiperOrigin-RevId: 423819018
1 parent 49eba6d commit 621fb85

4 files changed

Lines changed: 30 additions & 9 deletions

File tree

core/src/main/java/com/google/googlejavaformat/java/JavaInputAstVisitor.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2294,7 +2294,7 @@ private ImmutableList<AnnotationTree> visitModifiers(
22942294
? forceBreakList(declarationAnnotationBreak)
22952295
: breakList(declarationAnnotationBreak));
22962296
}
2297-
formatAnnotationOrModifier(declarationModifiers.removeFirst());
2297+
formatAnnotationOrModifier(declarationModifiers);
22982298
first = false;
22992299
lastWasAnnotation = true;
23002300
}
@@ -2317,7 +2317,7 @@ private ImmutableList<AnnotationTree> visitModifiers(
23172317
if (!first) {
23182318
builder.addAll(breakFillList(Optional.empty()));
23192319
}
2320-
formatAnnotationOrModifier(declarationModifiers.removeFirst());
2320+
formatAnnotationOrModifier(declarationModifiers);
23212321
first = false;
23222322
}
23232323
builder.close();
@@ -2452,10 +2452,15 @@ DeclarationModifiersAndTypeAnnotations splitModifiers(
24522452
modifiers.subList(0, idx + 1), typeAnnotations.build().reverse());
24532453
}
24542454

2455-
private void formatAnnotationOrModifier(AnnotationOrModifier modifier) {
2455+
private void formatAnnotationOrModifier(Deque<AnnotationOrModifier> modifiers) {
2456+
AnnotationOrModifier modifier = modifiers.removeFirst();
24562457
switch (modifier.getKind()) {
24572458
case MODIFIER:
24582459
token(modifier.modifier().getText());
2460+
if (modifier.modifier().getText().equals("non")) {
2461+
token(modifiers.removeFirst().modifier().getText());
2462+
token(modifiers.removeFirst().modifier().getText());
2463+
}
24592464
break;
24602465
case ANNOTATION:
24612466
scan(modifier.annotation(), null);
@@ -2471,10 +2476,6 @@ boolean isTypeAnnotation(AnnotationTree annotationTree) {
24712476
return typeAnnotationSimpleNames.contains(((IdentifierTree) annotationType).getName());
24722477
}
24732478

2474-
boolean nextIsModifier() {
2475-
return isModifier(builder.peekToken().get());
2476-
}
2477-
24782479
private static boolean isModifier(String token) {
24792480
switch (token) {
24802481
case "public":
@@ -2490,7 +2491,8 @@ private static boolean isModifier(String token) {
24902491
case "strictfp":
24912492
case "default":
24922493
case "sealed":
2493-
case "non-sealed":
2494+
case "non":
2495+
case "-":
24942496
return true;
24952497
default:
24962498
return false;

core/src/test/java/com/google/googlejavaformat/java/FormatterIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class FormatterIntegrationTest {
5151
.putAll(14, "I477", "Records", "RSLs", "Var", "ExpressionSwitch", "I574", "I594")
5252
.putAll(15, "I603")
5353
.putAll(16, "I588")
54-
.putAll(17, "I683", "I684")
54+
.putAll(17, "I683", "I684", "I696")
5555
.build();
5656

5757
@Parameters(name = "{index}: {0}")
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
public abstract non-sealed class A extends SealedClass {
2+
}
3+
4+
non-sealed class B extends SealedClass {
5+
}
6+
7+
non-sealed @A class B extends SealedClass {
8+
}
9+
10+
@A non-sealed class B extends SealedClass {
11+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
public abstract non-sealed class A extends SealedClass {}
2+
3+
non-sealed class B extends SealedClass {}
4+
5+
non-sealed @A class B extends SealedClass {}
6+
7+
@A
8+
non-sealed class B extends SealedClass {}

0 commit comments

Comments
 (0)