Skip to content

Commit ea512f0

Browse files
eamonnmcmanusgoogle-java-format Team
authored andcommitted
Use type patterns more widely.
No functional change is intended. PiperOrigin-RevId: 890952666
1 parent e6a7af7 commit ea512f0

File tree

2 files changed

+58
-56
lines changed

2 files changed

+58
-56
lines changed

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

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,9 +1233,11 @@ private void checkForTypeAnnotation(ImportTree node) {
12331233
}
12341234

12351235
private static Name getSimpleName(ImportTree importTree) {
1236-
return importTree.getQualifiedIdentifier() instanceof IdentifierTree
1237-
? ((IdentifierTree) importTree.getQualifiedIdentifier()).getName()
1238-
: ((MemberSelectTree) importTree.getQualifiedIdentifier()).getIdentifier();
1236+
return switch (importTree.getQualifiedIdentifier()) {
1237+
case IdentifierTree identifierTree -> identifierTree.getName();
1238+
case MemberSelectTree memberSelectTree -> memberSelectTree.getIdentifier();
1239+
case Tree tree -> throw new AssertionError(tree);
1240+
};
12391241
}
12401242

12411243
@Override
@@ -1343,14 +1345,14 @@ public Void visitLambdaExpression(LambdaExpressionTree node, Void unused) {
13431345
} else {
13441346
builder.breakOp(" ");
13451347
}
1346-
if (node.getBody().getKind() == Tree.Kind.BLOCK) {
1347-
visitBlock(
1348-
(BlockTree) node.getBody(),
1349-
CollapseEmptyOrNot.YES,
1350-
AllowLeadingBlankLine.NO,
1351-
AllowTrailingBlankLine.NO);
1352-
} else {
1353-
scan(node.getBody(), null);
1348+
switch (node.getBody()) {
1349+
case BlockTree blockTree ->
1350+
visitBlock(
1351+
blockTree,
1352+
CollapseEmptyOrNot.YES,
1353+
AllowLeadingBlankLine.NO,
1354+
AllowTrailingBlankLine.NO);
1355+
case Tree expressionTree -> scan(expressionTree, null);
13541356
}
13551357
builder.close();
13561358
return null;
@@ -1433,20 +1435,20 @@ private void visitAnnotationArgument(AssignmentTree node) {
14331435
@Override
14341436
public Void visitAnnotatedType(AnnotatedTypeTree node, Void unused) {
14351437
sync(node);
1436-
ExpressionTree base = node.getUnderlyingType();
1437-
if (base instanceof MemberSelectTree selectTree) {
1438-
1439-
scan(selectTree.getExpression(), null);
1440-
token(".");
1441-
visitAnnotations(node.getAnnotations(), BreakOrNot.NO, BreakOrNot.NO);
1442-
builder.breakToFill(" ");
1443-
visit(selectTree.getIdentifier());
1444-
} else if (base instanceof ArrayTypeTree) {
1445-
visitAnnotatedArrayType(node);
1446-
} else {
1447-
visitAnnotations(node.getAnnotations(), BreakOrNot.NO, BreakOrNot.NO);
1448-
builder.breakToFill(" ");
1449-
scan(base, null);
1438+
switch (node.getUnderlyingType()) {
1439+
case MemberSelectTree selectTree -> {
1440+
scan(selectTree.getExpression(), null);
1441+
token(".");
1442+
visitAnnotations(node.getAnnotations(), BreakOrNot.NO, BreakOrNot.NO);
1443+
builder.breakToFill(" ");
1444+
visit(selectTree.getIdentifier());
1445+
}
1446+
case ArrayTypeTree unusedTree -> visitAnnotatedArrayType(node);
1447+
case ExpressionTree base -> {
1448+
visitAnnotations(node.getAnnotations(), BreakOrNot.NO, BreakOrNot.NO);
1449+
builder.breakToFill(" ");
1450+
scan(base, null);
1451+
}
14501452
}
14511453
return null;
14521454
}
@@ -1671,8 +1673,7 @@ private boolean handleLogStatement(MethodInvocationTree node) {
16711673
}
16721674
Deque<ExpressionTree> parts = new ArrayDeque<>();
16731675
ExpressionTree curr = node;
1674-
while (curr instanceof MethodInvocationTree) {
1675-
MethodInvocationTree method = (MethodInvocationTree) curr;
1676+
while (curr instanceof MethodInvocationTree method) {
16761677
parts.addFirst(method);
16771678
if (!LOG_METHODS.contains(getMethodName(method).toString())) {
16781679
return false;
@@ -1867,14 +1868,13 @@ private boolean ambiguousUnaryOperator(UnaryTree node, String operatorName) {
18671868
}
18681869

18691870
private JCTree.Tag unaryTag(ExpressionTree expression) {
1870-
if (expression instanceof UnaryTree) {
1871-
return ((JCTree) expression).getTag();
1872-
}
1873-
if (expression instanceof LiteralTree
1874-
&& isUnaryMinusLiteral(getSourceForNode(expression, getCurrentPath()))) {
1875-
return JCTree.Tag.MINUS;
1876-
}
1877-
return null;
1871+
return switch (expression) {
1872+
case UnaryTree unary -> ((JCTree) unary).getTag();
1873+
case LiteralTree literal
1874+
when isUnaryMinusLiteral(getSourceForNode(literal, getCurrentPath())) ->
1875+
JCTree.Tag.MINUS;
1876+
default -> null;
1877+
};
18781878
}
18791879

18801880
@Override
@@ -2596,10 +2596,11 @@ private void formatAnnotationOrModifier(Deque<AnnotationOrModifier> modifiers) {
25962596

25972597
private boolean isTypeAnnotation(AnnotationTree annotationTree) {
25982598
Tree annotationType = annotationTree.getAnnotationType();
2599-
if (!(annotationType instanceof IdentifierTree identifierTree)) {
2600-
return false;
2601-
}
2602-
return typeAnnotationSimpleNames.contains(identifierTree.getName());
2599+
return switch (annotationType) {
2600+
case IdentifierTree identifierTree ->
2601+
typeAnnotationSimpleNames.contains(identifierTree.getName());
2602+
default -> false;
2603+
};
26032604
}
26042605

26052606
private static boolean isModifier(String token) {
@@ -2897,8 +2898,9 @@ public Void visitUses(UsesTree node, Void unused) {
28972898
/** Helper method for import declarations, names, and qualified names. */
28982899
private void visitName(Tree node) {
28992900
Deque<Name> stack = new ArrayDeque<>();
2900-
for (; node instanceof MemberSelectTree; node = ((MemberSelectTree) node).getExpression()) {
2901-
stack.addFirst(((MemberSelectTree) node).getIdentifier());
2901+
while (node instanceof MemberSelectTree memberSelectTree) {
2902+
stack.addFirst(memberSelectTree.getIdentifier());
2903+
node = memberSelectTree.getExpression();
29022904
}
29032905
stack.addFirst(((IdentifierTree) node).getName());
29042906
boolean afterFirstToken = false;
@@ -3068,8 +3070,8 @@ private void visitDot(ExpressionTree node0) {
30683070
prefixes.add(firstInvocationIndex);
30693071
}
30703072

3071-
if (prefixes.isEmpty() && items.get(0) instanceof IdentifierTree) {
3072-
switch (((IdentifierTree) items.get(0)).getName().toString()) {
3073+
if (prefixes.isEmpty() && items.get(0) instanceof IdentifierTree identifierTree) {
3074+
switch (identifierTree.getName().toString()) {
30733075
case "this", "super" -> prefixes.add(1);
30743076
default -> {}
30753077
}
@@ -3269,12 +3271,12 @@ private void dotExpressionUpToArgs(ExpressionTree expression, Optional<BreakTag>
32693271
}
32703272

32713273
/**
3272-
* Returns the base expression of an erray access, e.g. given {@code foo[0][0]} returns {@code
3274+
* Returns the base expression of an array access, e.g. given {@code foo[0][0]} returns {@code
32733275
* foo}.
32743276
*/
32753277
private static ExpressionTree getArrayBase(ExpressionTree node) {
3276-
while (node instanceof ArrayAccessTree) {
3277-
node = ((ArrayAccessTree) node).getExpression();
3278+
while (node instanceof ArrayAccessTree arrayAccessTree) {
3279+
node = arrayAccessTree.getExpression();
32783280
}
32793281
return node;
32803282
}
@@ -3323,8 +3325,7 @@ private void formatArrayIndices(Deque<ExpressionTree> indices) {
33233325
*/
33243326
private static Deque<ExpressionTree> getArrayIndices(ExpressionTree expression) {
33253327
Deque<ExpressionTree> indices = new ArrayDeque<>();
3326-
while (expression instanceof ArrayAccessTree) {
3327-
ArrayAccessTree array = (ArrayAccessTree) expression;
3328+
while (expression instanceof ArrayAccessTree array) {
33283329
indices.addLast(array.getIndex());
33293330
expression = array.getExpression();
33303331
}
@@ -3461,7 +3462,7 @@ public void scan(JCTree tree) {
34613462
}
34623463
if (tree.getKind() == STRING_LITERAL) {
34633464
Object value = ((LiteralTree) tree).getValue();
3464-
if (value instanceof String && FORMAT_SPECIFIER.matcher(value.toString()).find()) {
3465+
if (value instanceof String string && FORMAT_SPECIFIER.matcher(string).find()) {
34653466
formatString[0] = true;
34663467
}
34673468
}
@@ -3564,10 +3565,9 @@ private static boolean expressionsAreParallel(
35643565
}
35653566
// Treat UnaryTree expressions as their underlying type for the comparison (so, for example
35663567
// -ve and +ve numeric literals are considered the same).
3567-
if (row.get(column) instanceof UnaryTree) {
3568-
nodeTypes.add(((UnaryTree) row.get(column)).getExpression().getKind());
3569-
} else {
3570-
nodeTypes.add(row.get(column).getKind());
3568+
switch (row.get(column)) {
3569+
case UnaryTree unary -> nodeTypes.add(unary.getExpression().getKind());
3570+
case ExpressionTree expression -> nodeTypes.add(expression.getKind());
35713571
}
35723572
}
35733573
for (Multiset.Entry<Tree.Kind> nodeType : nodeTypes.entrySet()) {

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,11 @@ static String getSourceForNode(Tree node, TreePath path) {
9494
/** Returns the simple name of a (possibly qualified) method invocation expression. */
9595
static Name getMethodName(MethodInvocationTree methodInvocation) {
9696
ExpressionTree select = methodInvocation.getMethodSelect();
97-
return select instanceof MemberSelectTree memberSelectTree
98-
? memberSelectTree.getIdentifier()
99-
: ((IdentifierTree) select).getName();
97+
return switch (select) {
98+
case MemberSelectTree memberSelect -> memberSelect.getIdentifier();
99+
case IdentifierTree identifier -> identifier.getName();
100+
default -> throw new AssertionError(select);
101+
};
100102
}
101103

102104
/** Returns the receiver of a qualified method invocation expression, or {@code null}. */

0 commit comments

Comments
 (0)