Skip to content

Commit

Permalink
Unify breaks before expressions ending in toBuilder and stream
Browse files Browse the repository at this point in the history
Roll forward of 8b28725

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=239623724
  • Loading branch information
cushon committed Apr 3, 2019
1 parent 11da845 commit 9b0f032
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 15 deletions.
Expand Up @@ -29,6 +29,7 @@
import static com.google.googlejavaformat.java.Trees.operatorName; import static com.google.googlejavaformat.java.Trees.operatorName;
import static com.google.googlejavaformat.java.Trees.precedence; import static com.google.googlejavaformat.java.Trees.precedence;
import static com.google.googlejavaformat.java.Trees.skipParen; import static com.google.googlejavaformat.java.Trees.skipParen;
import static java.util.stream.Collectors.toList;
import static org.openjdk.source.tree.Tree.Kind.ANNOTATION; import static org.openjdk.source.tree.Tree.Kind.ANNOTATION;
import static org.openjdk.source.tree.Tree.Kind.ARRAY_ACCESS; import static org.openjdk.source.tree.Tree.Kind.ARRAY_ACCESS;
import static org.openjdk.source.tree.Tree.Kind.ASSIGNMENT; import static org.openjdk.source.tree.Tree.Kind.ASSIGNMENT;
Expand Down Expand Up @@ -1530,7 +1531,8 @@ private boolean handleLogStatement(MethodInvocationTree node) {
return false; return false;
} }
parts.addFirst(curr); parts.addFirst(curr);
visitDotWithPrefix(ImmutableList.copyOf(parts), false, ImmutableList.of(parts.size() - 1)); visitDotWithPrefix(
ImmutableList.copyOf(parts), false, ImmutableList.of(parts.size() - 1), INDEPENDENT);
return true; return true;
} }


Expand All @@ -1553,16 +1555,17 @@ private boolean handleLogStatement(MethodInvocationTree node) {
"withCause", "withCause",
"withStackTrace"); "withStackTrace");


private static Stream<Long> handleStream(List<ExpressionTree> parts) { private static List<Long> handleStream(List<ExpressionTree> parts) {
return indexes( return indexes(
parts.stream(), parts.stream(),
p -> { p -> {
if (!(p instanceof MethodInvocationTree)) { if (!(p instanceof MethodInvocationTree)) {
return false; return false;
} }
Name name = getMethodName((MethodInvocationTree) p); Name name = getMethodName((MethodInvocationTree) p);
return Stream.of("stream", "toBuilder").anyMatch(name::contentEquals); return Stream.of("stream", "toBuilder").anyMatch(name::contentEquals);
}); })
.collect(toList());
} }


private static <T> Stream<Long> indexes(Stream<T> stream, Predicate<T> predicate) { private static <T> Stream<Long> indexes(Stream<T> stream, Predicate<T> predicate) {
Expand Down Expand Up @@ -2689,10 +2692,11 @@ void visitDot(ExpressionTree node0) {
} }
} }


handleStream(items).forEach(x -> prefixes.add(x.intValue())); List<Long> streamPrefixes = handleStream(items);

streamPrefixes.forEach(x -> prefixes.add(x.intValue()));
if (!prefixes.isEmpty()) { if (!prefixes.isEmpty()) {
visitDotWithPrefix(items, needDot, prefixes); visitDotWithPrefix(
items, needDot, prefixes, streamPrefixes.isEmpty() ? INDEPENDENT : UNIFIED);
} else { } else {
visitRegularDot(items, needDot); visitRegularDot(items, needDot);
} }
Expand Down Expand Up @@ -2788,7 +2792,10 @@ private boolean fillFirstArgument(ExpressionTree e, List<ExpressionTree> items,
* a syntactic unit * a syntactic unit
*/ */
private void visitDotWithPrefix( private void visitDotWithPrefix(
List<ExpressionTree> items, boolean needDot, Collection<Integer> prefixes) { List<ExpressionTree> items,
boolean needDot,
Collection<Integer> prefixes,
FillMode prefixFillMode) {
// Are there method invocations or field accesses after the prefix? // Are there method invocations or field accesses after the prefix?
boolean trailingDereferences = !prefixes.isEmpty() && getLast(prefixes) < items.size() - 1; boolean trailingDereferences = !prefixes.isEmpty() && getLast(prefixes) < items.size() - 1;


Expand All @@ -2804,7 +2811,7 @@ private void visitDotWithPrefix(
if (needDot) { if (needDot) {
FillMode fillMode; FillMode fillMode;
if (!unconsumedPrefixes.isEmpty() && i <= unconsumedPrefixes.peekFirst()) { if (!unconsumedPrefixes.isEmpty() && i <= unconsumedPrefixes.peekFirst()) {
fillMode = FillMode.INDEPENDENT; fillMode = prefixFillMode;
} else { } else {
fillMode = FillMode.UNIFIED; fillMode = FillMode.UNIFIED;
} }
Expand Down
@@ -0,0 +1,8 @@
class B124394008 {
{
LocalReviewProto.Builder newReview =
readProfileResponse.flatMap(authorExtractor::extract)
.map(luReviewsExtractor::toLocalReviewProto)
.orElse(LocalReviewProto.getDefaultInstance()).toBuilder();
}
}
@@ -0,0 +1,10 @@
class B124394008 {
{
LocalReviewProto.Builder newReview =
readProfileResponse
.flatMap(authorExtractor::extract)
.map(luReviewsExtractor::toLocalReviewProto)
.orElse(LocalReviewProto.getDefaultInstance())
.toBuilder();
}
}

0 comments on commit 9b0f032

Please sign in to comment.