Skip to content

Commit 171f611

Browse files
committed
fix: correct indentation of some method argument lists containing lambda bodies
1 parent 6935bd8 commit 171f611

File tree

4 files changed

+39
-7
lines changed

4 files changed

+39
-7
lines changed

packages/prettier-plugin-java/src/printers/expressions.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
each,
1313
findBaseIndent,
1414
flatMap,
15+
hasLeadingComments,
1516
indentInParentheses,
1617
isBinaryExpression,
1718
isNonTerminal,
@@ -276,8 +277,11 @@ export default {
276277
},
277278
"primarySuffix"
278279
);
280+
const hasSuffixComments = children.primarySuffix.some(suffix =>
281+
hasLeadingComments(suffix)
282+
);
279283
return group(
280-
canBreakForCallExpressions || willBreak(suffixes)
284+
canBreakForCallExpressions || hasSuffixComments
281285
? [prefix, indent(suffixes)]
282286
: [prefix, ...suffixes]
283287
);
@@ -766,7 +770,7 @@ function printTemplate<
766770
const parts = [begin, ...mids, end].map(image =>
767771
join(hardline, image.split(prefix))
768772
);
769-
return [
773+
return indent([
770774
parts[0],
771775
...map(
772776
path,
@@ -780,5 +784,5 @@ function printTemplate<
780784
"embeddedExpression" as IterProperties<T["children"]>
781785
),
782786
parts.at(-1)!
783-
];
787+
]);
784788
}

packages/prettier-plugin-java/test/unit-test/lambda/_input.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,16 @@ void singleLambdaWithBlockLastArgumentAndLongArguments() {
185185
return f;
186186
}
187187
);
188+
189+
this.a(
190+
aaaaaaaaaaaaaaaaaaaaaaaaaa,
191+
bbbbbbbbbbbbbbbbbbbbbbbbbb,
192+
cccccccccccccccccccccccccc,
193+
dddddddddddddddddddddddddd,
194+
e -> {
195+
return f;
196+
}
197+
);
188198
}
189199

190200
void singleLambdaWithBlockLastArgumentAndLongLambdaArgument() {
@@ -212,6 +222,10 @@ void argumentAfterLambdaWithBlock() {
212222
}
213223

214224
void huggableArguments() {
225+
A.b().c(() -> {
226+
return d;
227+
});
228+
215229
aaaaaaaaaaaaaaaaaaaaaaaa((bbbbbbbbbbbbbbbbbbbbbbbb, cccccccccccccccccccccccc, dddddddddddddddddddddddd) -> eeeeeeeeeeeeeeeeeeeeeeee.ffffffffffffffffffffffff());
216230

217231
a.b(c -> d -> eeeeeeeeee.ffffffffff(gggggggggg, hhhhhhhhhh, iiiiiiiiii, jjjjjjjjjj, kkkkkkkkkk));

packages/prettier-plugin-java/test/unit-test/lambda/_output.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,16 @@ void singleLambdaWithBlockLastArgumentAndLongArguments() {
179179
return f;
180180
}
181181
);
182+
183+
this.a(
184+
aaaaaaaaaaaaaaaaaaaaaaaaaa,
185+
bbbbbbbbbbbbbbbbbbbbbbbbbb,
186+
cccccccccccccccccccccccccc,
187+
dddddddddddddddddddddddddd,
188+
e -> {
189+
return f;
190+
}
191+
);
182192
}
183193

184194
void singleLambdaWithBlockLastArgumentAndLongLambdaArgument() {
@@ -228,6 +238,10 @@ void argumentAfterLambdaWithBlock() {
228238
}
229239

230240
void huggableArguments() {
241+
A.b().c(() -> {
242+
return d;
243+
});
244+
231245
aaaaaaaaaaaaaaaaaaaaaaaa(
232246
(
233247
bbbbbbbbbbbbbbbbbbbbbbbb,

packages/prettier-plugin-java/test/unit-test/template-expression/_output.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ class TemplateExpression {
77
String s = STR."You have a \{getOfferType()} waiting for you!";
88

99
String msg = STR."The file \{filePath} \{
10-
file.exists() ? "does" : "does not"
11-
} exist";
10+
file.exists() ? "does" : "does not"
11+
} exist";
1212

1313
String time = STR."The time is \{
1414
// The java.time.format package is very useful
@@ -55,6 +55,6 @@ class TemplateExpression {
5555
""";
5656

5757
PreparedStatement ps = DB."SELECT * FROM Person p WHERE p.last_name = \{
58-
name
59-
}";
58+
name
59+
}";
6060
}

0 commit comments

Comments
 (0)