Skip to content

Commit a427d59

Browse files
authored
Merge pull request #78 from openjavaformat/cast-type-without-breaks
Measure the whole type of a cast before inlining a chain onto it
2 parents 8a39a6a + d564203 commit a427d59

3 files changed

Lines changed: 95 additions & 4 deletions

File tree

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -678,10 +678,18 @@ public Void visitBreak(BreakTree node, Void unused) {
678678
@Override
679679
public Void visitTypeCast(TypeCastTree node, Void unused) {
680680
sync(node);
681-
builder.open(
682-
plusFour,
683-
BreakBehaviours.preferBreakingLastInnerLevel(true),
684-
LastLevelBreakability.ACCEPT_INLINE_CHAIN);
681+
// An inline chain that ends at this level must have room for the whole type before the break in front of the
682+
// operand. Without IF_FIRST_LEVEL_FITS the chain measured the type up to its first break, the one after the
683+
// "<" of a parameterized type, and once inlined the type itself had to take that break: "(PrivilegedAction<"
684+
// at the end of one line and "String>)" on the next. The type stays breakable for the rare cast that does not
685+
// fit on a line at all.
686+
builder.open(OpenOp.builder()
687+
.debugName("typeCast")
688+
.plusIndent(plusFour)
689+
.breakBehaviour(BreakBehaviours.preferBreakingLastInnerLevel(true))
690+
.breakabilityIfLastLevel(LastLevelBreakability.ACCEPT_INLINE_CHAIN)
691+
.partialInlineability(PartialInlineability.IF_FIRST_LEVEL_FITS)
692+
.build());
685693
token("(");
686694
scan(node.getType(), null);
687695
token(")");
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class TCPTransport {
2+
@SuppressWarnings("removal")
3+
static final Log tcpLog = Log.getLog(
4+
"sun.rmi.transport.tcp", "tcp", LogStream.parseLevel(AccessController.doPrivileged((PrivilegedAction<
5+
String>)
6+
() -> System.getProperty("sun.rmi.transport.tcp.logLevel"))));
7+
8+
static final Level level = LogStream.parseLevel(AccessController.doPrivileged((PrivilegedAction<String>)()->System.getProperty("sun.rmi.transport.tcp.logLevel.and.some.more")));
9+
10+
static final Log methodReference = Log.getLog("sun.rmi.transport.tcp",
11+
"tcp",
12+
LogStream.parseLevel(
13+
AccessController.doPrivileged(
14+
( PrivilegedAction<String> )
15+
SomeVeryLongClassNameToFillTheLine
16+
:: getTheTcpLogLevelProperty)));
17+
18+
static final Log twoTypeArguments =
19+
Log.getLog("sun.rmi.transport.tcp", "tcp", LogStream.parseLevel(AccessController.doPrivileged((Function< String ,Integer >) s->
20+
System.getProperty("sun.rmi.transport.tcp.logLevel.x"))));
21+
22+
static final Log nested = Log.getLog("sun.rmi.transport.tcp", "tcp", LogStream.parseLevel(AccessController.doPrivileged((Map<String,
23+
? extends List<Integer>>) () -> System.getProperty("sun.rmi.transport.tcp.lv"))));
24+
25+
static final Log qualified = Log.getLog("sun.rmi.transport.tcp", "tcp",
26+
LogStream.parseLevel(AccessController.doPrivileged((java.util.function.
27+
Function<String, Integer>) s -> System.getProperty("sun.rmi.logLevel"))));
28+
29+
static final Log intersection = Log.getLog("sun.rmi.transport.tcp", "tcp", LogStream.parseLevel(
30+
AccessController.doPrivileged((Runnable
31+
&java.io.Serializable) () -> System.getProperty("sun.rmi.transport.tcp.logLevelxx"))));
32+
33+
static final Log annotated = Log.getLog("sun.rmi.transport.tcp", "tcp",
34+
LogStream.parseLevel(AccessController.doPrivileged((Function<@Nullable String, Integer [ ]>)
35+
s -> System.getProperty("sun.rmi.transport.tcp.lvl"))));
36+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
class TCPTransport {
2+
@SuppressWarnings("removal")
3+
static final Log tcpLog = Log.getLog(
4+
"sun.rmi.transport.tcp",
5+
"tcp",
6+
LogStream.parseLevel(AccessController.doPrivileged(
7+
(PrivilegedAction<String>) () -> System.getProperty("sun.rmi.transport.tcp.logLevel"))));
8+
9+
static final Level level = LogStream.parseLevel(AccessController.doPrivileged(
10+
(PrivilegedAction<String>) () -> System.getProperty("sun.rmi.transport.tcp.logLevel.and.some.more")));
11+
12+
static final Log methodReference = Log.getLog(
13+
"sun.rmi.transport.tcp",
14+
"tcp",
15+
LogStream.parseLevel(AccessController.doPrivileged(
16+
(PrivilegedAction<String>) SomeVeryLongClassNameToFillTheLine::getTheTcpLogLevelProperty)));
17+
18+
static final Log twoTypeArguments = Log.getLog(
19+
"sun.rmi.transport.tcp",
20+
"tcp",
21+
LogStream.parseLevel(AccessController.doPrivileged(
22+
(Function<String, Integer>) s -> System.getProperty("sun.rmi.transport.tcp.logLevel.x"))));
23+
24+
static final Log nested = Log.getLog(
25+
"sun.rmi.transport.tcp",
26+
"tcp",
27+
LogStream.parseLevel(AccessController.doPrivileged(
28+
(Map<String, ? extends List<Integer>>) () -> System.getProperty("sun.rmi.transport.tcp.lv"))));
29+
30+
static final Log qualified = Log.getLog(
31+
"sun.rmi.transport.tcp",
32+
"tcp",
33+
LogStream.parseLevel(AccessController.doPrivileged(
34+
(java.util.function.Function<String, Integer>) s -> System.getProperty("sun.rmi.logLevel"))));
35+
36+
static final Log intersection = Log.getLog(
37+
"sun.rmi.transport.tcp",
38+
"tcp",
39+
LogStream.parseLevel(AccessController.doPrivileged(
40+
(Runnable & java.io.Serializable) () -> System.getProperty("sun.rmi.transport.tcp.logLevelxx"))));
41+
42+
static final Log annotated = Log.getLog(
43+
"sun.rmi.transport.tcp",
44+
"tcp",
45+
LogStream.parseLevel(AccessController.doPrivileged(
46+
(Function<@Nullable String, Integer[]>) s -> System.getProperty("sun.rmi.transport.tcp.lvl"))));
47+
}

0 commit comments

Comments
 (0)