Skip to content

Commit 013ca8a

Browse files
committed
Improve formatting of https://github.com/google/flogger
MOE_MIGRATED_REVID=197021448
1 parent ec57e31 commit 013ca8a

File tree

3 files changed

+113
-0
lines changed

3 files changed

+113
-0
lines changed

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

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.google.common.base.Verify;
4949
import com.google.common.collect.HashMultiset;
5050
import com.google.common.collect.ImmutableList;
51+
import com.google.common.collect.ImmutableSet;
5152
import com.google.common.collect.Iterables;
5253
import com.google.common.collect.Iterators;
5354
import com.google.common.collect.Multiset;
@@ -1467,10 +1468,69 @@ private void methodBody(MethodTree node) {
14671468
@Override
14681469
public Void visitMethodInvocation(MethodInvocationTree node, Void unused) {
14691470
sync(node);
1471+
if (handleLogStatement(node)) {
1472+
return null;
1473+
}
14701474
visitDot(node);
14711475
return null;
14721476
}
14731477

1478+
/**
1479+
* Special-cases log statements, to output:
1480+
*
1481+
* <pre>{@code
1482+
* logger.atInfo().log(
1483+
* "Number of foos: %d, foos.size());
1484+
* }</pre>
1485+
*
1486+
* <p>Instead of:
1487+
*
1488+
* <pre>{@code
1489+
* logger
1490+
* .atInfo()
1491+
* .log(
1492+
* "Number of foos: %d, foos.size());
1493+
* }</pre>
1494+
*/
1495+
private boolean handleLogStatement(MethodInvocationTree node) {
1496+
if (!getMethodName(node).contentEquals("log")) {
1497+
return false;
1498+
}
1499+
Deque<ExpressionTree> parts = new ArrayDeque<>();
1500+
ExpressionTree curr = node;
1501+
while (curr instanceof MethodInvocationTree) {
1502+
MethodInvocationTree method = (MethodInvocationTree) curr;
1503+
parts.addFirst(method);
1504+
if (!LOG_METHODS.contains(getMethodName(method).toString())) {
1505+
return false;
1506+
}
1507+
curr = Trees.getMethodReceiver(method);
1508+
}
1509+
if (!(curr instanceof IdentifierTree)) {
1510+
return false;
1511+
}
1512+
parts.addFirst(curr);
1513+
visitDotWithPrefix(ImmutableList.copyOf(parts), false, parts.size() - 1);
1514+
return true;
1515+
}
1516+
1517+
static final ImmutableSet<String> LOG_METHODS =
1518+
ImmutableSet.of(
1519+
"at",
1520+
"atConfig",
1521+
"atFine",
1522+
"atFiner",
1523+
"atFinest",
1524+
"atInfo",
1525+
"atMostEvery",
1526+
"atSevere",
1527+
"atWarning",
1528+
"every",
1529+
"log",
1530+
"logVarargs",
1531+
"perUnique",
1532+
"withCause",
1533+
"withStackTrace");
14741534

14751535
@Override
14761536
public Void visitMemberSelect(MemberSelectTree node, Void unused) {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class B25787055 {
2+
{
3+
logger
4+
.atInfo()
5+
.log(
6+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
7+
deletedPersistentNames.size(),
8+
deletedPersistentNames);
9+
logger.atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo()
10+
.log(
11+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
12+
deletedPersistentNames.size(),
13+
deletedPersistentNames);
14+
logger // interior
15+
.atInfo() // comments
16+
.log( // are best comments
17+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
18+
deletedPersistentNames.size(),
19+
deletedPersistentNames);
20+
logger
21+
.log(
22+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
23+
deletedPersistentNames.size(),
24+
deletedPersistentNames)
25+
.log(
26+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
27+
deletedPersistentNames.size(),
28+
deletedPersistentNames);
29+
}
30+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class B25787055 {
2+
{
3+
logger.atInfo().log(
4+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
5+
deletedPersistentNames.size(), deletedPersistentNames);
6+
logger.atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo().atInfo()
7+
.atInfo().log(
8+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
9+
deletedPersistentNames.size(), deletedPersistentNames);
10+
logger // interior
11+
.atInfo() // comments
12+
.log( // are best comments
13+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
14+
deletedPersistentNames.size(), deletedPersistentNames);
15+
logger
16+
.log(
17+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
18+
deletedPersistentNames.size(), deletedPersistentNames)
19+
.log(
20+
"Scratch Session Cleaner exiting. Number of deleted sessions: %d, names: %s",
21+
deletedPersistentNames.size(), deletedPersistentNames);
22+
}
23+
}

0 commit comments

Comments
 (0)