Skip to content

Commit 11e19e5

Browse files
authored
JEP 456: Unnamed Variables & Patterns (#1410)
JEP 456: Unnamed Variables & Patterns
1 parent e0d0c59 commit 11e19e5

File tree

5 files changed

+112
-5
lines changed

5 files changed

+112
-5
lines changed

palantir-java-format/src/main/java/com/palantir/javaformat/java/JavaInputAstVisitor.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@
3030
import static com.palantir.javaformat.java.Trees.precedence;
3131
import static com.palantir.javaformat.java.Trees.skipParen;
3232
import static com.sun.source.tree.Tree.Kind.ANNOTATION;
33-
import static com.sun.source.tree.Tree.Kind.BLOCK;
3433
import static com.sun.source.tree.Tree.Kind.EXTENDS_WILDCARD;
35-
import static com.sun.source.tree.Tree.Kind.METHOD_INVOCATION;
3634
import static com.sun.source.tree.Tree.Kind.STRING_LITERAL;
3735
import static java.util.stream.Collectors.toList;
3836

@@ -3462,7 +3460,7 @@ int declareOne(
34623460
if (receiverExpression.isPresent()) {
34633461
scan(receiverExpression.get(), null);
34643462
} else {
3465-
visit(name);
3463+
variableName(name);
34663464
}
34673465
builder.op(op);
34683466
}
@@ -3512,6 +3510,10 @@ int declareOne(
35123510
return baseDims;
35133511
}
35143512

3513+
protected void variableName(Name name) {
3514+
visit(name);
3515+
}
3516+
35153517
private void maybeAddDims(Deque<List<? extends AnnotationTree>> annotations) {
35163518
maybeAddDims(new ArrayDeque<>(), annotations);
35173519
}
@@ -3600,7 +3602,7 @@ private void declareMany(List<VariableTree> fragments, Direction annotationDirec
36003602
builder.breakOp(" ");
36013603
builder.open(ZERO);
36023604
maybeAddDims(dims);
3603-
visit(fragment.getName());
3605+
variableName(fragment.getName());
36043606
maybeAddDims(dims);
36053607
ExpressionTree initializer = fragment.getInitializer();
36063608
if (initializer != null) {

palantir-java-format/src/main/java/com/palantir/javaformat/java/java21/Java21InputAstVisitor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.sun.source.tree.ExpressionTree;
2626
import com.sun.source.tree.PatternCaseLabelTree;
2727
import com.sun.source.tree.PatternTree;
28+
import javax.lang.model.element.Name;
2829

2930
/**
3031
* Extends {@link Java14InputAstVisitor} with support for AST nodes that were added or modified in
@@ -78,4 +79,13 @@ public Void visitDeconstructionPattern(DeconstructionPatternTree node, Void unus
7879
token(")");
7980
return null;
8081
}
82+
83+
@Override
84+
protected void variableName(Name name) {
85+
if (name.isEmpty()) {
86+
token("_");
87+
} else {
88+
visit(name);
89+
}
90+
}
8191
}

palantir-java-format/src/test/java/com/palantir/javaformat/java/FileBasedTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ public final class FileBasedTests {
5858
"SwitchDouble",
5959
"SwitchUnderscore",
6060
"I880",
61-
"I1309")
61+
"I1309",
62+
"Unnamed")
6263
.build();
6364

6465
private final Class<?> testClass;
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class Unnamed {
2+
{
3+
int acc = 0;
4+
for (Order _ : orders) {
5+
if (acc < LIMIT) {
6+
acc++;
7+
}
8+
}
9+
10+
11+
12+
for (int i = 0, _ = sideEffect(); i < 10; i++) { }
13+
14+
Queue<Integer> q = null;
15+
while (q.size() >= 3) {
16+
var x = q.remove();
17+
var y = q.remove();
18+
var _ = q.remove();
19+
new Point(x, y);
20+
}
21+
22+
while (q.size() >= 3) {
23+
var x = q.remove();
24+
var _ = q.remove();
25+
var _ = q.remove();
26+
new Point(x, 0) ;
27+
}
28+
29+
String s = null;
30+
try {
31+
int i = Integer.parseInt(s);
32+
} catch (NumberFormatException _) {
33+
System.out.println("Bad number: " + s);
34+
}
35+
36+
try { doSomething(); }
37+
catch (Exception _) { doSomething(); }
38+
catch (Throwable _) { doSomething(); }
39+
40+
try (var _ = ScopedContext.acquire()) {
41+
doSomething();
42+
}
43+
44+
stream.collect(Collectors.toMap(String::toUpperCase, _ -> "NODATA"));
45+
}
46+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
class Unnamed {
2+
{
3+
int acc = 0;
4+
for (Order _ : orders) {
5+
if (acc < LIMIT) {
6+
acc++;
7+
}
8+
}
9+
10+
for (int i = 0, _ = sideEffect(); i < 10; i++) {}
11+
12+
Queue<Integer> q = null;
13+
while (q.size() >= 3) {
14+
var x = q.remove();
15+
var y = q.remove();
16+
var _ = q.remove();
17+
new Point(x, y);
18+
}
19+
20+
while (q.size() >= 3) {
21+
var x = q.remove();
22+
var _ = q.remove();
23+
var _ = q.remove();
24+
new Point(x, 0);
25+
}
26+
27+
String s = null;
28+
try {
29+
int i = Integer.parseInt(s);
30+
} catch (NumberFormatException _) {
31+
System.out.println("Bad number: " + s);
32+
}
33+
34+
try {
35+
doSomething();
36+
} catch (Exception _) {
37+
doSomething();
38+
} catch (Throwable _) {
39+
doSomething();
40+
}
41+
42+
try (var _ = ScopedContext.acquire()) {
43+
doSomething();
44+
}
45+
46+
stream.collect(Collectors.toMap(String::toUpperCase, _ -> "NODATA"));
47+
}
48+
}

0 commit comments

Comments
 (0)