Skip to content

Commit a2da3fa

Browse files
refactor: extract printSingleLambdaInvocation method to regroup common logic
1 parent 7edac2f commit a2da3fa

File tree

5 files changed

+59
-43
lines changed

5 files changed

+59
-43
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ import {
9191
} from "java-parser";
9292
import { Doc } from "prettier";
9393
import { isAnnotationCstNode, isTypeArgumentsCstNode } from "../types/utils";
94-
import { printArgumentListWithBraces } from "../utils/printArgumentListWithBraces";
94+
import { printArgumentListWithBraces } from "../utils";
9595

9696
const { line, softline, hardline } = builders;
9797

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

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ import { Doc } from "prettier";
5353
import { builders } from "prettier/doc";
5454
import { BaseCstPrettierPrinter } from "../base-cst-printer";
5555
import { isAnnotationCstNode } from "../types/utils";
56+
import { isArgumentListSingleLambda } from "../utils/expressions-utils";
5657
import {
57-
isArgumentListSingleLambda,
58-
isSingleArgumentLambdaExpressionWithBlock
59-
} from "../utils/expressions-utils";
60-
import { printArgumentListWithBraces } from "../utils/printArgumentListWithBraces";
58+
printSingleLambdaInvocation,
59+
printArgumentListWithBraces
60+
} from "../utils";
6161
import { printTokenWithComments } from "./comments/format-comments";
6262
import { handleCommentsBinaryExpression } from "./comments/handle-comments";
6363
import { concat, dedent, group, indent } from "./prettier-builder";
@@ -684,24 +684,18 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter {
684684
}
685685

686686
methodInvocationSuffix(ctx: MethodInvocationSuffixCtx, params: any) {
687-
const lambdaParametersGroupId = Symbol("lambdaParameters");
688-
const argumentList = this.visit(ctx.argumentList, {
689-
lambdaParametersGroupId,
690-
isInsideMethodInvocationSuffix: true
691-
});
692-
693687
const isSingleLambda = isArgumentListSingleLambda(ctx.argumentList);
694688
if (isSingleLambda) {
695-
const rBrace = isSingleArgumentLambdaExpressionWithBlock(ctx.argumentList)
696-
? ifBreak(
697-
indent(concat([softline, ctx.RBrace[0]])),
698-
printTokenWithComments(ctx.RBrace[0]),
699-
{ groupId: lambdaParametersGroupId }
700-
)
701-
: indent(concat([softline, ctx.RBrace[0]]));
702-
return dedent(putIntoBraces(argumentList, "", ctx.LBrace[0], rBrace));
689+
return printSingleLambdaInvocation.call(
690+
this,
691+
ctx.argumentList,
692+
ctx.RBrace[0],
693+
ctx.LBrace[0]
694+
);
703695
}
704696

697+
const argumentList = this.visit(ctx.argumentList);
698+
705699
if (params && params.shouldDedent) {
706700
return dedent(
707701
putIntoBraces(argumentList, softline, ctx.LBrace[0], ctx.RBrace[0])
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { default as printArgumentListWithBraces } from "./printArgumentListWithBraces";
2+
export { default as printSingleLambdaInvocation } from "./printSingleLambdaInvocation";
Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,28 @@
11
import { ArgumentListCstNode, IToken } from "java-parser";
22
import { builders } from "prettier/doc";
3-
import {
4-
isArgumentListSingleLambda,
5-
isSingleArgumentLambdaExpressionWithBlock
6-
} from "./expressions-utils";
7-
import { printTokenWithComments } from "../printers/comments/format-comments";
8-
import { concat, dedent, indent } from "../printers/prettier-builder";
3+
import { isArgumentListSingleLambda } from "./expressions-utils";
94
import { putIntoBraces } from "../printers/printer-utils";
5+
import printSingleLambdaInvocation from "./printSingleLambdaInvocation";
106

11-
const { softline, ifBreak } = builders;
7+
const { softline } = builders;
128

13-
export function printArgumentListWithBraces(
9+
export default function printArgumentListWithBraces(
1410
argumentListCtx: ArgumentListCstNode[] | undefined,
1511
rBrace: IToken,
1612
lBrace: IToken
1713
) {
18-
const lambdaParametersGroupId = Symbol("lambdaParameters");
19-
const argumentList = this.visit(argumentListCtx, {
20-
lambdaParametersGroupId,
21-
isInsideMethodInvocationSuffix: true
22-
});
2314
const isSingleLambda = isArgumentListSingleLambda(argumentListCtx);
24-
2515
if (isSingleLambda) {
26-
const formattedRBrace = isSingleArgumentLambdaExpressionWithBlock(
27-
argumentListCtx
28-
)
29-
? ifBreak(
30-
indent(concat([softline, rBrace])),
31-
printTokenWithComments(rBrace),
32-
{ groupId: lambdaParametersGroupId }
33-
)
34-
: indent(concat([softline, rBrace]));
35-
return dedent(putIntoBraces(argumentList, "", lBrace, formattedRBrace));
16+
return printSingleLambdaInvocation.call(
17+
this,
18+
argumentListCtx,
19+
rBrace,
20+
lBrace
21+
);
3622
}
3723

24+
const argumentList = this.visit(argumentListCtx, {
25+
isInsideMethodInvocationSuffix: true
26+
});
3827
return putIntoBraces(argumentList, softline, lBrace, rBrace);
3928
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { ArgumentListCstNode, IToken } from "java-parser";
2+
import { builders } from "prettier/doc";
3+
import { isSingleArgumentLambdaExpressionWithBlock } from "./expressions-utils";
4+
import { printTokenWithComments } from "../printers/comments/format-comments";
5+
import { concat, dedent, indent } from "../printers/prettier-builder";
6+
import { putIntoBraces } from "../printers/printer-utils";
7+
8+
const { softline, ifBreak } = builders;
9+
10+
export default function printSingleLambdaInvocation(
11+
argumentListCtx: ArgumentListCstNode[] | undefined,
12+
rBrace: IToken,
13+
lBrace: IToken
14+
) {
15+
const lambdaParametersGroupId = Symbol("lambdaParameters");
16+
const argumentList = this.visit(argumentListCtx, {
17+
lambdaParametersGroupId,
18+
isInsideMethodInvocationSuffix: true
19+
});
20+
21+
const formattedRBrace = isSingleArgumentLambdaExpressionWithBlock(
22+
argumentListCtx
23+
)
24+
? ifBreak(
25+
indent(concat([softline, rBrace])),
26+
printTokenWithComments(rBrace),
27+
{ groupId: lambdaParametersGroupId }
28+
)
29+
: indent(concat([softline, rBrace]));
30+
return dedent(putIntoBraces(argumentList, "", lBrace, formattedRBrace));
31+
}

0 commit comments

Comments
 (0)