Skip to content

Commit 2186b2e

Browse files
cushongoogle-java-format Team
authored andcommitted
Migrate google-java-format to expression switches
PiperOrigin-RevId: 811435570
1 parent 7e72422 commit 2186b2e

File tree

13 files changed

+248
-462
lines changed

13 files changed

+248
-462
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,16 @@ public static String guessLineSeparator(String text) {
7373
for (int i = 0; i < text.length(); i++) {
7474
char c = text.charAt(i);
7575
switch (c) {
76-
case '\r':
76+
case '\r' -> {
7777
if (i + 1 < text.length() && text.charAt(i + 1) == '\n') {
7878
return "\r\n";
7979
}
8080
return "\r";
81-
case '\n':
81+
}
82+
case '\n' -> {
8283
return "\n";
83-
default:
84-
break;
84+
}
85+
default -> {}
8586
}
8687
}
8788
return "\n";

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

Lines changed: 28 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -66,72 +66,25 @@ static CommandLineOptions parse(Iterable<String> options) {
6666
}
6767
// NOTE: update usage information in UsageException when new flags are added
6868
switch (flag) {
69-
case "-i":
70-
case "-r":
71-
case "-replace":
72-
case "--replace":
73-
optionsBuilder.inPlace(true);
74-
break;
75-
case "--lines":
76-
case "-lines":
77-
case "--line":
78-
case "-line":
79-
parseRangeSet(linesBuilder, getValue(flag, it, value));
80-
break;
81-
case "--offset":
82-
case "-offset":
83-
optionsBuilder.addOffset(parseInteger(it, flag, value));
84-
break;
85-
case "--length":
86-
case "-length":
87-
optionsBuilder.addLength(parseInteger(it, flag, value));
88-
break;
89-
case "--aosp":
90-
case "-aosp":
91-
case "-a":
92-
optionsBuilder.aosp(true);
93-
break;
94-
case "--version":
95-
case "-version":
96-
case "-v":
97-
optionsBuilder.version(true);
98-
break;
99-
case "--help":
100-
case "-help":
101-
case "-h":
102-
optionsBuilder.help(true);
103-
break;
104-
case "--fix-imports-only":
105-
optionsBuilder.fixImportsOnly(true);
106-
break;
107-
case "--skip-sorting-imports":
108-
optionsBuilder.sortImports(false);
109-
break;
110-
case "--skip-removing-unused-imports":
111-
optionsBuilder.removeUnusedImports(false);
112-
break;
113-
case "--skip-reflowing-long-strings":
114-
optionsBuilder.reflowLongStrings(false);
115-
break;
116-
case "--skip-javadoc-formatting":
117-
optionsBuilder.formatJavadoc(false);
118-
break;
119-
case "-":
120-
optionsBuilder.stdin(true);
121-
break;
122-
case "-n":
123-
case "--dry-run":
124-
optionsBuilder.dryRun(true);
125-
break;
126-
case "--set-exit-if-changed":
127-
optionsBuilder.setExitIfChanged(true);
128-
break;
129-
case "-assume-filename":
130-
case "--assume-filename":
131-
optionsBuilder.assumeFilename(getValue(flag, it, value));
132-
break;
133-
default:
134-
throw new IllegalArgumentException("unexpected flag: " + flag);
69+
case "-i", "-r", "-replace", "--replace" -> optionsBuilder.inPlace(true);
70+
case "--lines", "-lines", "--line", "-line" ->
71+
parseRangeSet(linesBuilder, getValue(flag, it, value));
72+
case "--offset", "-offset" -> optionsBuilder.addOffset(parseInteger(it, flag, value));
73+
case "--length", "-length" -> optionsBuilder.addLength(parseInteger(it, flag, value));
74+
case "--aosp", "-aosp", "-a" -> optionsBuilder.aosp(true);
75+
case "--version", "-version", "-v" -> optionsBuilder.version(true);
76+
case "--help", "-help", "-h" -> optionsBuilder.help(true);
77+
case "--fix-imports-only" -> optionsBuilder.fixImportsOnly(true);
78+
case "--skip-sorting-imports" -> optionsBuilder.sortImports(false);
79+
case "--skip-removing-unused-imports" -> optionsBuilder.removeUnusedImports(false);
80+
case "--skip-reflowing-long-strings" -> optionsBuilder.reflowLongStrings(false);
81+
case "--skip-javadoc-formatting" -> optionsBuilder.formatJavadoc(false);
82+
case "-" -> optionsBuilder.stdin(true);
83+
case "-n", "--dry-run" -> optionsBuilder.dryRun(true);
84+
case "--set-exit-if-changed" -> optionsBuilder.setExitIfChanged(true);
85+
case "-assume-filename", "--assume-filename" ->
86+
optionsBuilder.assumeFilename(getValue(flag, it, value));
87+
default -> throw new IllegalArgumentException("unexpected flag: " + flag);
13588
}
13689
}
13790
optionsBuilder.lines(ImmutableRangeSet.copyOf(linesBuilder));
@@ -175,17 +128,18 @@ private static void parseRangeSet(RangeSet<Integer> result, String ranges) {
175128
*/
176129
private static Range<Integer> parseRange(String arg) {
177130
List<String> args = COLON_SPLITTER.splitToList(arg);
178-
switch (args.size()) {
179-
case 1:
131+
return switch (args.size()) {
132+
case 1 -> {
180133
int line = Integer.parseInt(args.get(0)) - 1;
181-
return Range.closedOpen(line, line + 1);
182-
case 2:
134+
yield Range.closedOpen(line, line + 1);
135+
}
136+
case 2 -> {
183137
int line0 = Integer.parseInt(args.get(0)) - 1;
184138
int line1 = Integer.parseInt(args.get(1)) - 1;
185-
return Range.closedOpen(line0, line1 + 1);
186-
default:
187-
throw new IllegalArgumentException(arg);
188-
}
139+
yield Range.closedOpen(line0, line1 + 1);
140+
}
141+
default -> throw new IllegalArgumentException(arg);
142+
};
189143
}
190144

191145
/**

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,18 @@ private static Iterable<List<AnnotationTree>> reorderBySourcePosition(
106106
* int}.
107107
*/
108108
private static Tree extractDims(Deque<List<AnnotationTree>> dims, Tree node) {
109-
switch (node.getKind()) {
110-
case ARRAY_TYPE:
111-
return extractDims(dims, ((ArrayTypeTree) node).getType());
112-
case ANNOTATED_TYPE:
109+
return switch (node.getKind()) {
110+
case ARRAY_TYPE -> extractDims(dims, ((ArrayTypeTree) node).getType());
111+
case ANNOTATED_TYPE -> {
113112
AnnotatedTypeTree annotatedTypeTree = (AnnotatedTypeTree) node;
114113
if (annotatedTypeTree.getUnderlyingType().getKind() != Tree.Kind.ARRAY_TYPE) {
115-
return node;
114+
yield node;
116115
}
117116
node = extractDims(dims, annotatedTypeTree.getUnderlyingType());
118117
dims.addFirst(ImmutableList.copyOf(annotatedTypeTree.getAnnotations()));
119-
return node;
120-
default:
121-
return node;
122-
}
118+
yield node;
119+
}
120+
default -> node;
121+
};
123122
}
124123
}

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

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,9 @@ static boolean errorDiagnostic(Diagnostic<?> input) {
164164
if (input.getKind() != Diagnostic.Kind.ERROR) {
165165
return false;
166166
}
167-
switch (input.getCode()) {
168-
case "compiler.err.invalid.meth.decl.ret.type.req":
169-
// accept constructor-like method declarations that don't match the name of their
170-
// enclosing class
171-
return false;
172-
default:
173-
break;
174-
}
175-
return true;
167+
// accept constructor-like method declarations that don't match the name of their
168+
// enclosing class
169+
return !input.getCode().equals("compiler.err.invalid.meth.decl.ret.type.req");
176170
}
177171

178172
/**

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -218,13 +218,10 @@ boolean isAndroid() {
218218

219219
/** True if this is a Java import per AOSP style. */
220220
boolean isJava() {
221-
switch (topLevel()) {
222-
case "java":
223-
case "javax":
224-
return true;
225-
default:
226-
return false;
227-
}
221+
return switch (topLevel()) {
222+
case "java", "javax" -> true;
223+
default -> false;
224+
};
228225
}
229226

230227
/**

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -561,20 +561,18 @@ private static ImmutableList<Token> buildTokens(List<Tok> toks) {
561561
// TODO(cushon): find a better strategy.
562562
if (toks.get(k).isSlashStarComment()) {
563563
switch (tok.getText()) {
564-
case "(":
565-
case "<":
566-
case ".":
564+
case "(", "<", "." -> {
567565
break OUTER;
568-
default:
569-
break;
566+
}
567+
default -> {}
570568
}
571569
}
572570
if (toks.get(k).isJavadocComment()) {
573571
switch (tok.getText()) {
574-
case ";":
572+
case ";" -> {
575573
break OUTER;
576-
default:
577-
break;
574+
}
575+
default -> {}
578576
}
579577
}
580578
if (isParamComment(toks.get(k))) {

0 commit comments

Comments
 (0)