prettier-plugin-java 2.6.0 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/options.js CHANGED
@@ -27,6 +27,7 @@ export default {
27
27
  { value: "switchLabel" },
28
28
  { value: "switchRule" },
29
29
  { value: "caseConstant" },
30
+ { value: "casePattern" },
30
31
  { value: "whileStatement" },
31
32
  { value: "doStatement" },
32
33
  { value: "forStatement" },
@@ -57,8 +58,8 @@ export default {
57
58
  { value: "classModifier" },
58
59
  { value: "typeParameters" },
59
60
  { value: "typeParameterList" },
60
- { value: "superclass" },
61
- { value: "superinterfaces" },
61
+ { value: "classExtends" },
62
+ { value: "classImplements" },
62
63
  { value: "interfaceTypeList" },
63
64
  { value: "classPermits" },
64
65
  { value: "classBody" },
@@ -124,13 +125,14 @@ export default {
124
125
  { value: "lambdaParameters" },
125
126
  { value: "lambdaParametersWithBraces" },
126
127
  { value: "lambdaParameterList" },
127
- { value: "inferredLambdaParameterList" },
128
- { value: "explicitLambdaParameterList" },
129
- { value: "lambdaParameter" },
128
+ { value: "conciseLambdaParameterList" },
129
+ { value: "normalLambdaParameterList" },
130
+ { value: "normalLambdaParameter" },
130
131
  { value: "regularLambdaParameter" },
131
132
  { value: "lambdaParameterType" },
133
+ { value: "conciseLambdaParameter" },
132
134
  { value: "lambdaBody" },
133
- { value: "ternaryExpression" },
135
+ { value: "conditionalExpression" },
134
136
  { value: "binaryExpression" },
135
137
  { value: "unaryExpression" },
136
138
  { value: "unaryExpressionNotPlusMinus" },
@@ -153,8 +155,8 @@ export default {
153
155
  { value: "methodInvocationSuffix" },
154
156
  { value: "argumentList" },
155
157
  { value: "arrayCreationExpression" },
156
- { value: "arrayCreationDefaultInitSuffix" },
157
- { value: "arrayCreationExplicitInitSuffix" },
158
+ { value: "arrayCreationExpressionWithoutInitializerSuffix" },
159
+ { value: "arrayCreationWithInitializerSuffix" },
158
160
  { value: "dimExprs" },
159
161
  { value: "dimExpr" },
160
162
  { value: "classLiteralSuffix" },
@@ -170,13 +172,13 @@ export default {
170
172
  { value: "recordPattern" },
171
173
  { value: "componentPatternList" },
172
174
  { value: "componentPattern" },
173
- { value: "unnamedPattern" },
175
+ { value: "matchAllPattern" },
174
176
  { value: "guard" },
175
177
  { value: "isRefTypeInMethodRef" },
176
178
  { value: "interfaceDeclaration" },
177
179
  { value: "normalInterfaceDeclaration" },
178
180
  { value: "interfaceModifier" },
179
- { value: "extendsInterfaces" },
181
+ { value: "interfaceExtends" },
180
182
  { value: "interfacePermits" },
181
183
  { value: "interfaceBody" },
182
184
  { value: "interfaceMemberDeclaration" },
@@ -184,11 +186,11 @@ export default {
184
186
  { value: "constantModifier" },
185
187
  { value: "interfaceMethodDeclaration" },
186
188
  { value: "interfaceMethodModifier" },
187
- { value: "annotationTypeDeclaration" },
188
- { value: "annotationTypeBody" },
189
- { value: "annotationTypeMemberDeclaration" },
190
- { value: "annotationTypeElementDeclaration" },
191
- { value: "annotationTypeElementModifier" },
189
+ { value: "annotationInterfaceDeclaration" },
190
+ { value: "annotationInterfaceBody" },
191
+ { value: "annotationInterfaceMemberDeclaration" },
192
+ { value: "annotationInterfaceElementDeclaration" },
193
+ { value: "annotationInterfaceElementModifier" },
192
194
  { value: "defaultValue" },
193
195
  { value: "annotation" },
194
196
  { value: "elementValuePairList" },
@@ -248,7 +250,7 @@ export default {
248
250
  type: "choice",
249
251
  category: "Java",
250
252
  default: "all",
251
- choices: ["all", "none"],
253
+ choices: ["all", "es5", "none"],
252
254
  description: "Print trailing commas wherever possible when multi-line."
253
255
  }
254
256
  };
@@ -169,14 +169,14 @@ export class BlocksAndStatementPrettierVisitor extends BaseCstPrettierPrinter {
169
169
  : this.mapVisit(ctx.caseConstant);
170
170
  return group(indent(join(" ", [Case, rejectAndJoinSeps(commas, caseConstants)])));
171
171
  }
172
- else if (ctx.pattern) {
173
- const patterns = this.mapVisit(ctx.pattern);
172
+ else if (ctx.casePattern) {
173
+ const casePatterns = this.mapVisit(ctx.casePattern);
174
174
  const guard = this.visit(ctx.guard);
175
- const multiplePatterns = ctx.pattern.length > 1;
175
+ const multiplePatterns = ctx.casePattern.length > 1;
176
176
  const separator = multiplePatterns ? line : " ";
177
177
  const contents = join(separator, [
178
178
  Case,
179
- rejectAndJoinSeps(commas, patterns)
179
+ rejectAndJoinSeps(commas, casePatterns)
180
180
  ]);
181
181
  return group(rejectAndJoin(separator, [
182
182
  multiplePatterns ? indent(contents) : contents,
@@ -202,6 +202,9 @@ export class BlocksAndStatementPrettierVisitor extends BaseCstPrettierPrinter {
202
202
  caseConstant(ctx) {
203
203
  return this.visitSingle(ctx);
204
204
  }
205
+ casePattern(ctx) {
206
+ return this.visitSingle(ctx);
207
+ }
205
208
  whileStatement(ctx) {
206
209
  const expression = this.visit(ctx.expression);
207
210
  const statement = this.visit(ctx.statement[0], {
@@ -271,9 +274,7 @@ export class BlocksAndStatementPrettierVisitor extends BaseCstPrettierPrinter {
271
274
  return rejectAndJoinSeps(commas, statementExpressions);
272
275
  }
273
276
  enhancedForStatement(ctx) {
274
- const variableModifiers = this.mapVisit(ctx.variableModifier);
275
- const localVariableType = this.visit(ctx.localVariableType);
276
- const variableDeclaratorId = this.visit(ctx.variableDeclaratorId);
277
+ const localVariableDeclaration = this.visit(ctx.localVariableDeclaration);
277
278
  const expression = this.visit(ctx.expression);
278
279
  const statement = this.visit(ctx.statement[0], {
279
280
  allowEmptyStatement: true
@@ -281,11 +282,7 @@ export class BlocksAndStatementPrettierVisitor extends BaseCstPrettierPrinter {
281
282
  const statementSeparator = isStatementEmptyStatement(statement) ? "" : " ";
282
283
  return rejectAndConcat([
283
284
  rejectAndJoin(" ", [ctx.For[0], ctx.LBrace[0]]),
284
- rejectAndJoin(" ", [
285
- rejectAndJoin(" ", variableModifiers),
286
- localVariableType,
287
- variableDeclaratorId
288
- ]),
285
+ localVariableDeclaration,
289
286
  concat([" ", ctx.Colon[0], " "]),
290
287
  expression,
291
288
  concat([ctx.RBrace[0], statementSeparator]),
@@ -3,6 +3,7 @@ import { displaySemicolon, getBlankLinesSeparator, getClassBodyDeclarationsSepar
3
3
  import { concat, group, indent, join, indentIfBreak } from "./prettier-builder.js";
4
4
  import { printTokenWithComments } from "./comments/format-comments.js";
5
5
  import { hasLeadingComments, hasLeadingLineComments } from "./comments/comments-utils.js";
6
+ import { handleCommentsParameters } from "./comments/handle-comments.js";
6
7
  import { builders } from "prettier/doc";
7
8
  import { BaseCstPrettierPrinter } from "../base-cst-printer.js";
8
9
  import { isAnnotationCstNode, isTypeArgumentsCstNode } from "../types/utils.js";
@@ -32,17 +33,17 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
32
33
  normalClassDeclaration(ctx) {
33
34
  const name = this.visit(ctx.typeIdentifier);
34
35
  const optionalTypeParams = this.visit(ctx.typeParameters);
35
- const optionalSuperClasses = this.visit(ctx.superclass);
36
- const optionalSuperInterfaces = this.visit(ctx.superinterfaces);
36
+ const optionalClassExtends = this.visit(ctx.classExtends);
37
+ const optionalClassImplements = this.visit(ctx.classImplements);
37
38
  const optionalClassPermits = this.visit(ctx.classPermits);
38
39
  const body = this.visit(ctx.classBody, { isNormalClassDeclaration: true });
39
40
  let superClassesPart = "";
40
- if (optionalSuperClasses) {
41
- superClassesPart = indent(rejectAndConcat([line, optionalSuperClasses]));
41
+ if (optionalClassExtends) {
42
+ superClassesPart = indent(rejectAndConcat([line, optionalClassExtends]));
42
43
  }
43
44
  let superInterfacesPart = "";
44
- if (optionalSuperInterfaces) {
45
- superInterfacesPart = indent(rejectAndConcat([line, optionalSuperInterfaces]));
45
+ if (optionalClassImplements) {
46
+ superInterfacesPart = indent(rejectAndConcat([line, optionalClassImplements]));
46
47
  }
47
48
  let classPermits = "";
48
49
  if (optionalClassPermits) {
@@ -75,10 +76,10 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
75
76
  const commas = ctx.Comma ? ctx.Comma.map(elt => concat([elt, line])) : [];
76
77
  return group(rejectAndJoinSeps(commas, typeParameter));
77
78
  }
78
- superclass(ctx) {
79
+ classExtends(ctx) {
79
80
  return join(" ", [ctx.Extends[0], this.visit(ctx.classType)]);
80
81
  }
81
- superinterfaces(ctx) {
82
+ classImplements(ctx) {
82
83
  const interfaceTypeList = this.visit(ctx.interfaceTypeList);
83
84
  return group(rejectAndConcat([
84
85
  ctx.Implements[0],
@@ -177,9 +178,9 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
177
178
  .lambdaExpression !== undefined ||
178
179
  // Ternary Expression
179
180
  (ctx.variableInitializer[0].children.expression[0].children
180
- .ternaryExpression !== undefined &&
181
+ .conditionalExpression !== undefined &&
181
182
  ctx.variableInitializer[0].children.expression[0].children
182
- .ternaryExpression[0].children.QuestionMark !== undefined)) {
183
+ .conditionalExpression[0].children.QuestionMark !== undefined)) {
183
184
  const groupId = Symbol("assignment");
184
185
  return group([
185
186
  group(variableDeclaratorId),
@@ -191,9 +192,9 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
191
192
  ]);
192
193
  }
193
194
  if (ctx.variableInitializer[0].children.expression[0].children
194
- .ternaryExpression !== undefined) {
195
+ .conditionalExpression !== undefined) {
195
196
  const unaryExpressions = ctx.variableInitializer[0].children.expression[0].children
196
- .ternaryExpression[0].children.binaryExpression[0].children
197
+ .conditionalExpression[0].children.binaryExpression[0].children
197
198
  .unaryExpression;
198
199
  const firstPrimary = unaryExpressions[0].children.primary[0];
199
200
  // Cast Expression
@@ -228,7 +229,7 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
228
229
  firstPrimary.children.primarySuffix[0].children
229
230
  .methodInvocationSuffix !== undefined;
230
231
  const isUniqueUnaryExpression = ctx.variableInitializer[0].children.expression[0].children
231
- .ternaryExpression[0].children.binaryExpression[0].children
232
+ .conditionalExpression[0].children.binaryExpression[0].children
232
233
  .unaryExpression.length === 1;
233
234
  const isUniqueMethodInvocation = isMethodInvocation && isUniqueUnaryExpression;
234
235
  if (isUniqueMethodInvocation) {
@@ -360,7 +361,12 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
360
361
  return printTokenWithComments(this.getSingle(ctx));
361
362
  }
362
363
  methodDeclarator(ctx) {
363
- var _a;
364
+ var _a, _b, _c, _d;
365
+ const parameters = [
366
+ ...((_a = ctx.receiverParameter) !== null && _a !== void 0 ? _a : []),
367
+ ...((_c = (_b = ctx.formalParameterList) === null || _b === void 0 ? void 0 : _b[0].children.formalParameter) !== null && _c !== void 0 ? _c : [])
368
+ ];
369
+ handleCommentsParameters(ctx.LBrace[0], parameters, ctx.RBrace[0]);
364
370
  const identifier = printTokenWithComments(ctx.Identifier[0]);
365
371
  const receiverParameter = this.visit(ctx.receiverParameter);
366
372
  const formalParameterList = this.visit(ctx.formalParameterList);
@@ -368,7 +374,7 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
368
374
  return rejectAndConcat([
369
375
  identifier,
370
376
  putIntoBraces(rejectAndJoin(line, [
371
- rejectAndConcat([receiverParameter, (_a = ctx.Comma) === null || _a === void 0 ? void 0 : _a[0]]),
377
+ rejectAndConcat([receiverParameter, (_d = ctx.Comma) === null || _d === void 0 ? void 0 : _d[0]]),
372
378
  formalParameterList
373
379
  ]), softline, ctx.LBrace[0], ctx.RBrace[0]),
374
380
  dims
@@ -479,7 +485,9 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
479
485
  return printTokenWithComments(this.getSingle(ctx));
480
486
  }
481
487
  constructorDeclarator(ctx) {
482
- var _a;
488
+ var _a, _b, _c, _d;
489
+ const parameters = (_c = (_a = ctx.receiverParameter) !== null && _a !== void 0 ? _a : (_b = ctx.formalParameterList) === null || _b === void 0 ? void 0 : _b[0].children.formalParameter) !== null && _c !== void 0 ? _c : [];
490
+ handleCommentsParameters(ctx.LBrace[0], parameters, ctx.RBrace[0]);
483
491
  const typeParameters = this.visit(ctx.typeParameters);
484
492
  const simpleTypeName = this.visit(ctx.simpleTypeName);
485
493
  const receiverParameter = this.visit(ctx.receiverParameter);
@@ -489,14 +497,14 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
489
497
  concat([
490
498
  simpleTypeName,
491
499
  putIntoBraces(rejectAndJoin(line, [
492
- rejectAndConcat([receiverParameter, (_a = ctx.Comma) === null || _a === void 0 ? void 0 : _a[0]]),
500
+ rejectAndConcat([receiverParameter, (_d = ctx.Comma) === null || _d === void 0 ? void 0 : _d[0]]),
493
501
  formalParameterList
494
502
  ]), softline, ctx.LBrace[0], ctx.RBrace[0])
495
503
  ])
496
504
  ]);
497
505
  }
498
506
  simpleTypeName(ctx) {
499
- return printTokenWithComments(this.getSingle(ctx));
507
+ return this.visitSingle(ctx);
500
508
  }
501
509
  constructorBody(ctx) {
502
510
  const explicitConstructorInvocation = this.visit(ctx.explicitConstructorInvocation);
@@ -531,13 +539,13 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
531
539
  enumDeclaration(ctx) {
532
540
  const classModifier = this.mapVisit(ctx.classModifier);
533
541
  const typeIdentifier = this.visit(ctx.typeIdentifier);
534
- const superinterfaces = this.visit(ctx.superinterfaces);
542
+ const classImplements = this.visit(ctx.classImplements);
535
543
  const enumBody = this.visit(ctx.enumBody);
536
544
  return rejectAndJoin(" ", [
537
545
  join(" ", classModifier),
538
546
  ctx.Enum[0],
539
547
  typeIdentifier,
540
- superinterfaces,
548
+ classImplements,
541
549
  enumBody
542
550
  ]);
543
551
  }
@@ -613,9 +621,9 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
613
621
  const optionalTypeParams = this.visit(ctx.typeParameters);
614
622
  const recordHeader = this.visit(ctx.recordHeader);
615
623
  let superInterfacesPart = "";
616
- const optionalSuperInterfaces = this.visit(ctx.superinterfaces);
617
- if (optionalSuperInterfaces) {
618
- superInterfacesPart = indent(rejectAndConcat([line, optionalSuperInterfaces]));
624
+ const optionalClassImplements = this.visit(ctx.classImplements);
625
+ if (optionalClassImplements) {
626
+ superInterfacesPart = indent(rejectAndConcat([line, optionalClassImplements]));
619
627
  }
620
628
  const body = this.visit(ctx.recordBody);
621
629
  return rejectAndJoin(" ", [
@@ -629,6 +637,9 @@ export class ClassesPrettierVisitor extends BaseCstPrettierPrinter {
629
637
  ]);
630
638
  }
631
639
  recordHeader(ctx) {
640
+ var _a, _b;
641
+ const recordComponents = (_b = (_a = ctx.recordComponentList) === null || _a === void 0 ? void 0 : _a[0].children.recordComponent) !== null && _b !== void 0 ? _b : [];
642
+ handleCommentsParameters(ctx.LBrace[0], recordComponents, ctx.RBrace[0]);
632
643
  const recordComponentList = this.visit(ctx.recordComponentList);
633
644
  return putIntoBraces(recordComponentList, softline, ctx.LBrace[0], ctx.RBrace[0]);
634
645
  }
@@ -3,6 +3,35 @@ export function handleCommentsBinaryExpression(ctx) {
3
3
  moveOperatorLeadingCommentsToNextExpression(ctx);
4
4
  moveExpressionTrailingCommentsToNextOperator(ctx);
5
5
  }
6
+ export function handleCommentsParameters(lBrace, parameters, rBrace) {
7
+ var _a, _b, _c;
8
+ const lBraceTrailingComments = lBrace.trailingComments;
9
+ const firstParameter = parameters.at(0);
10
+ if (lBraceTrailingComments && firstParameter) {
11
+ delete lBrace.trailingComments;
12
+ firstParameter.leadingComments = [
13
+ ...lBraceTrailingComments,
14
+ ...((_a = firstParameter.leadingComments) !== null && _a !== void 0 ? _a : [])
15
+ ];
16
+ }
17
+ const lastParameter = parameters.at(-1);
18
+ const rBraceLeadingComments = rBrace.leadingComments;
19
+ if (rBraceLeadingComments) {
20
+ delete rBrace.leadingComments;
21
+ if (lastParameter) {
22
+ lastParameter.trailingComments = [
23
+ ...((_b = lastParameter.trailingComments) !== null && _b !== void 0 ? _b : []),
24
+ ...rBraceLeadingComments
25
+ ];
26
+ }
27
+ else {
28
+ lBrace.trailingComments = [
29
+ ...((_c = lBrace.trailingComments) !== null && _c !== void 0 ? _c : []),
30
+ ...rBraceLeadingComments
31
+ ];
32
+ }
33
+ }
34
+ }
6
35
  function moveOperatorLeadingCommentsToNextExpression(ctx) {
7
36
  var _a;
8
37
  let unaryExpressionIndex = 1;
@@ -1,41 +1,57 @@
1
1
  import forEach from "lodash/forEach.js";
2
- import { builders } from "prettier/doc";
2
+ import { builders, utils } from "prettier/doc";
3
3
  import { BaseCstPrettierPrinter } from "../base-cst-printer.js";
4
4
  import { isAnnotationCstNode } from "../types/utils.js";
5
5
  import { printArgumentListWithBraces } from "../utils/index.js";
6
6
  import { printTokenWithComments } from "./comments/format-comments.js";
7
- import { handleCommentsBinaryExpression } from "./comments/handle-comments.js";
7
+ import { handleCommentsBinaryExpression, handleCommentsParameters } from "./comments/handle-comments.js";
8
8
  import { concat, dedent, group, indent } from "./prettier-builder.js";
9
9
  import { binary, findDeepElementInPartsArray, isExplicitLambdaParameter, isUniqueMethodInvocation, putIntoBraces, rejectAndConcat, rejectAndJoin, rejectAndJoinSeps, sortAnnotationIdentifier, sortNodes, sortTokens } from "./printer-utils.js";
10
- const { hardline, ifBreak, line, lineSuffixBoundary, softline } = builders;
10
+ const { breakParent, conditionalGroup, ifBreak, label, line, lineSuffixBoundary, softline } = builders;
11
+ const { removeLines, willBreak } = utils;
11
12
  export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter {
12
13
  expression(ctx, params) {
13
- return this.visitSingle(ctx, params);
14
+ const expression = this.visitSingle(ctx, params);
15
+ return (params === null || params === void 0 ? void 0 : params.hug) && expression.label !== undefined
16
+ ? label(expression.label, expression)
17
+ : expression;
14
18
  }
15
19
  lambdaExpression(ctx, params) {
16
- const lambdaParameters = group(this.visit(ctx.lambdaParameters, params));
20
+ const lambdaParameters = group(this.visit(ctx.lambdaParameters));
17
21
  const lambdaBody = this.visit(ctx.lambdaBody);
18
22
  const isLambdaBodyABlock = ctx.lambdaBody[0].children.block !== undefined;
19
- if (isLambdaBodyABlock) {
20
- return rejectAndJoin(" ", [lambdaParameters, ctx.Arrow[0], lambdaBody]);
23
+ const suffix = [
24
+ " ",
25
+ ctx.Arrow[0],
26
+ ...(isLambdaBodyABlock
27
+ ? [" ", lambdaBody]
28
+ : [group(indent([line, lambdaBody]))])
29
+ ];
30
+ if (params === null || params === void 0 ? void 0 : params.hug) {
31
+ return willBreak(lambdaParameters)
32
+ ? label({ huggable: false }, concat([lambdaParameters, ...suffix]))
33
+ : concat([removeLines(lambdaParameters), ...suffix]);
21
34
  }
22
- return group(indent(rejectAndJoin(line, [
23
- rejectAndJoin(" ", [lambdaParameters, ctx.Arrow[0]]),
24
- lambdaBody
25
- ])));
35
+ return concat([lambdaParameters, ...suffix]);
26
36
  }
27
- lambdaParameters(ctx, params) {
37
+ lambdaParameters(ctx) {
28
38
  if (ctx.lambdaParametersWithBraces) {
29
- return this.visitSingle(ctx, params);
39
+ return this.visitSingle(ctx);
30
40
  }
31
41
  return printTokenWithComments(this.getSingle(ctx));
32
42
  }
33
- lambdaParametersWithBraces(ctx, params) {
34
- const lambdaParameterList = this.visit(ctx.lambdaParameterList, params);
43
+ lambdaParametersWithBraces(ctx) {
44
+ var _a, _b, _c, _d, _e, _f;
45
+ const lambdaParameters = (_f = (_c = (_b = (_a = ctx.lambdaParameterList) === null || _a === void 0 ? void 0 : _a[0].children.normalLambdaParameterList) === null || _b === void 0 ? void 0 : _b[0].children.normalLambdaParameter) !== null && _c !== void 0 ? _c : (_e = (_d = ctx.lambdaParameterList) === null || _d === void 0 ? void 0 : _d[0].children.conciseLambdaParameterList) === null || _e === void 0 ? void 0 : _e[0].children.conciseLambdaParameter) !== null && _f !== void 0 ? _f : [];
46
+ handleCommentsParameters(ctx.LBrace[0], lambdaParameters, ctx.RBrace[0]);
47
+ const lambdaParameterList = this.visit(ctx.lambdaParameterList);
35
48
  if (findDeepElementInPartsArray(lambdaParameterList, ",")) {
36
- const separator = (params === null || params === void 0 ? void 0 : params.shouldBreak) === false ? "" : softline;
37
- const content = putIntoBraces(lambdaParameterList, separator, ctx.LBrace[0], ctx.RBrace[0]);
38
- return content;
49
+ return concat([
50
+ ctx.LBrace[0],
51
+ indent([softline, lambdaParameterList]),
52
+ softline,
53
+ ctx.RBrace[0]
54
+ ]);
39
55
  }
40
56
  // removing braces when only no comments attached
41
57
  if ((ctx.LBrace &&
@@ -53,23 +69,22 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter {
53
69
  }
54
70
  return lambdaParameterList;
55
71
  }
56
- lambdaParameterList(ctx, params) {
57
- return this.visitSingle(ctx, params);
72
+ lambdaParameterList(ctx) {
73
+ return this.visitSingle(ctx);
58
74
  }
59
- inferredLambdaParameterList(ctx, params) {
75
+ conciseLambdaParameterList(ctx) {
60
76
  var _a;
61
- const commaSuffix = (params === null || params === void 0 ? void 0 : params.shouldBreak) === false ? " " : line;
62
- const commas = (_a = ctx.Comma) === null || _a === void 0 ? void 0 : _a.map(comma => concat([comma, commaSuffix]));
63
- return rejectAndJoinSeps(commas, ctx.Identifier);
77
+ const conciseLambdaParameters = this.mapVisit(ctx.conciseLambdaParameter);
78
+ const commas = (_a = ctx.Comma) === null || _a === void 0 ? void 0 : _a.map(comma => concat([comma, line]));
79
+ return rejectAndJoinSeps(commas, conciseLambdaParameters);
64
80
  }
65
- explicitLambdaParameterList(ctx, params) {
81
+ normalLambdaParameterList(ctx) {
66
82
  var _a;
67
- const lambdaParameter = this.mapVisit(ctx.lambdaParameter);
68
- const commaSuffix = (params === null || params === void 0 ? void 0 : params.shouldBreak) === false ? " " : line;
69
- const commas = (_a = ctx.Comma) === null || _a === void 0 ? void 0 : _a.map(comma => concat([comma, commaSuffix]));
70
- return rejectAndJoinSeps(commas, lambdaParameter);
83
+ const normalLambdaParameter = this.mapVisit(ctx.normalLambdaParameter);
84
+ const commas = (_a = ctx.Comma) === null || _a === void 0 ? void 0 : _a.map(comma => concat([comma, line]));
85
+ return rejectAndJoinSeps(commas, normalLambdaParameter);
71
86
  }
72
- lambdaParameter(ctx) {
87
+ normalLambdaParameter(ctx) {
73
88
  return this.visitSingle(ctx);
74
89
  }
75
90
  regularLambdaParameter(ctx) {
@@ -88,10 +103,13 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter {
88
103
  }
89
104
  return printTokenWithComments(this.getSingle(ctx));
90
105
  }
106
+ conciseLambdaParameter(ctx) {
107
+ return printTokenWithComments(this.getSingle(ctx));
108
+ }
91
109
  lambdaBody(ctx) {
92
110
  return this.visitSingle(ctx);
93
111
  }
94
- ternaryExpression(ctx, params) {
112
+ conditionalExpression(ctx, params) {
95
113
  const binaryExpression = this.visit(ctx.binaryExpression, params);
96
114
  if (ctx.QuestionMark) {
97
115
  const expression1 = this.visit(ctx.expression[0]);
@@ -387,41 +405,53 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter {
387
405
  methodInvocationSuffix(ctx) {
388
406
  return printArgumentListWithBraces.call(this, ctx.argumentList, ctx.RBrace[0], ctx.LBrace[0]);
389
407
  }
390
- argumentList(ctx, params) {
391
- var _a;
392
- const shouldBreak = params === null || params === void 0 ? void 0 : params.shouldBreak;
393
- const expressions = this.mapVisit(ctx.expression, params);
394
- const lastArgument = expressions.pop();
395
- const commaSuffix = shouldBreak === true ? hardline : shouldBreak === false ? " " : line;
396
- const commas = (_a = ctx.Comma) === null || _a === void 0 ? void 0 : _a.map(comma => concat([comma, commaSuffix]));
397
- const otherArguments = rejectAndJoinSeps(commas, expressions);
398
- if (lastArgument && (params === null || params === void 0 ? void 0 : params.isHuggable)) {
399
- const argumentListGroupId = Symbol("argumentList");
400
- const separator = shouldBreak === true ? hardline : shouldBreak === false ? "" : softline;
401
- return concat([
402
- group([separator, otherArguments], { id: argumentListGroupId }),
403
- ifBreak([lastArgument, dedent(separator)], dedent(lastArgument), {
404
- groupId: argumentListGroupId
405
- })
406
- ]);
408
+ argumentList(ctx) {
409
+ var _a, _b;
410
+ const headArgs = this.mapVisit(ctx.expression.slice(0, -1)).map((expression, index) => concat([expression, ctx.Comma[index], line]));
411
+ const lastExpression = ctx.expression.at(-1);
412
+ const lastArg = this.visit(lastExpression);
413
+ if (this.isArgumentListHuggable(ctx)) {
414
+ const huggedLastArg = this.visit(lastExpression, { hug: true });
415
+ const lastArgNotHuggable = typeof huggedLastArg === "object" &&
416
+ !Array.isArray(huggedLastArg) &&
417
+ huggedLastArg.type === "label" &&
418
+ ((_a = huggedLastArg.label) === null || _a === void 0 ? void 0 : _a.huggable) === false;
419
+ if (lastArgNotHuggable || headArgs.some(willBreak)) {
420
+ return group([indent([line, ...headArgs, lastArg]), line], {
421
+ shouldBreak: true
422
+ });
423
+ }
424
+ const suffix = ((_b = lastExpression === null || lastExpression === void 0 ? void 0 : lastExpression.children.lambdaExpression) === null || _b === void 0 ? void 0 : _b[0].children.lambdaBody[0].children.block)
425
+ ? ""
426
+ : line;
427
+ const hugged = [
428
+ ...headArgs,
429
+ group([huggedLastArg, suffix], { shouldBreak: true })
430
+ ];
431
+ const expanded = group([indent([line, ...headArgs, lastArg]), line], {
432
+ shouldBreak: true
433
+ });
434
+ return willBreak(huggedLastArg)
435
+ ? [breakParent, conditionalGroup([hugged, expanded])]
436
+ : conditionalGroup([[...headArgs, huggedLastArg], hugged, expanded]);
407
437
  }
408
- return rejectAndConcat([otherArguments, lastArgument]);
438
+ return group([indent([softline, ...headArgs, lastArg]), softline]);
409
439
  }
410
440
  arrayCreationExpression(ctx) {
411
441
  const type = ctx.primitiveType
412
442
  ? this.visit(ctx.primitiveType)
413
443
  : this.visit(ctx.classOrInterfaceType);
414
- const suffix = ctx.arrayCreationDefaultInitSuffix
415
- ? this.visit(ctx.arrayCreationDefaultInitSuffix)
416
- : this.visit(ctx.arrayCreationExplicitInitSuffix);
444
+ const suffix = ctx.arrayCreationExpressionWithoutInitializerSuffix
445
+ ? this.visit(ctx.arrayCreationExpressionWithoutInitializerSuffix)
446
+ : this.visit(ctx.arrayCreationWithInitializerSuffix);
417
447
  return rejectAndConcat([concat([ctx.New[0], " "]), type, suffix]);
418
448
  }
419
- arrayCreationDefaultInitSuffix(ctx) {
449
+ arrayCreationExpressionWithoutInitializerSuffix(ctx) {
420
450
  const dimExprs = this.visit(ctx.dimExprs);
421
451
  const dims = this.visit(ctx.dims);
422
452
  return rejectAndConcat([dimExprs, dims]);
423
453
  }
424
- arrayCreationExplicitInitSuffix(ctx) {
454
+ arrayCreationWithInitializerSuffix(ctx) {
425
455
  const dims = this.visit(ctx.dims);
426
456
  const arrayInitializer = this.visit(ctx.arrayInitializer);
427
457
  return rejectAndJoin(" ", [dims, arrayInitializer]);
@@ -491,6 +521,9 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter {
491
521
  return this.visitSingle(ctx);
492
522
  }
493
523
  recordPattern(ctx) {
524
+ var _a, _b;
525
+ const componentPatterns = (_b = (_a = ctx.componentPatternList) === null || _a === void 0 ? void 0 : _a[0].children.componentPattern) !== null && _b !== void 0 ? _b : [];
526
+ handleCommentsParameters(ctx.LBrace[0], componentPatterns, ctx.RBrace[0]);
494
527
  const referenceType = this.visit(ctx.referenceType);
495
528
  const componentPatternList = this.visit(ctx.componentPatternList);
496
529
  return concat([
@@ -507,7 +540,7 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter {
507
540
  componentPattern(ctx) {
508
541
  return this.visitSingle(ctx);
509
542
  }
510
- unnamedPattern(ctx) {
543
+ matchAllPattern(ctx) {
511
544
  return printTokenWithComments(ctx.Underscore[0]);
512
545
  }
513
546
  guard(ctx) {
@@ -519,13 +552,27 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter {
519
552
  isRefTypeInMethodRef() {
520
553
  return "isRefTypeInMethodRef";
521
554
  }
555
+ isArgumentListHuggable(argumentList) {
556
+ var _a, _b, _c;
557
+ const expressions = argumentList.expression;
558
+ const lastArgument = expressions.at(-1);
559
+ const lastArgumentLambdaBodyExpression = (_b = (_a = lastArgument === null || lastArgument === void 0 ? void 0 : lastArgument.children.lambdaExpression) === null || _a === void 0 ? void 0 : _a[0].children.lambdaBody[0].children.expression) === null || _b === void 0 ? void 0 : _b[0].children;
560
+ const lastArgumentLambdaBodyTernaryExpression = (_c = lastArgumentLambdaBodyExpression === null || lastArgumentLambdaBodyExpression === void 0 ? void 0 : lastArgumentLambdaBodyExpression.conditionalExpression) === null || _c === void 0 ? void 0 : _c[0].children;
561
+ return (!(lastArgument === null || lastArgument === void 0 ? void 0 : lastArgument.leadingComments) &&
562
+ !(lastArgument === null || lastArgument === void 0 ? void 0 : lastArgument.trailingComments) &&
563
+ (!lastArgumentLambdaBodyExpression ||
564
+ (lastArgumentLambdaBodyTernaryExpression === null || lastArgumentLambdaBodyTernaryExpression === void 0 ? void 0 : lastArgumentLambdaBodyTernaryExpression.QuestionMark) !== undefined ||
565
+ (lastArgumentLambdaBodyTernaryExpression === null || lastArgumentLambdaBodyTernaryExpression === void 0 ? void 0 : lastArgumentLambdaBodyTernaryExpression.binaryExpression[0].children.unaryExpression.length) === 1) &&
566
+ expressions.findIndex(({ children }) => children.lambdaExpression) ===
567
+ expressions.length - 1);
568
+ }
522
569
  isBreakableNewExpression(newExpression) {
523
570
  var _a, _b, _c, _d, _e;
524
571
  const arrayCreationExpression = (_a = newExpression === null || newExpression === void 0 ? void 0 : newExpression.arrayCreationExpression) === null || _a === void 0 ? void 0 : _a[0].children;
525
572
  const classInstanceCreationExpression = (_b = newExpression === null || newExpression === void 0 ? void 0 : newExpression.unqualifiedClassInstanceCreationExpression) === null || _b === void 0 ? void 0 : _b[0].children;
526
573
  return [
527
574
  (_c = arrayCreationExpression === null || arrayCreationExpression === void 0 ? void 0 : arrayCreationExpression.classOrInterfaceType) === null || _c === void 0 ? void 0 : _c[0].children.classType[0].children.typeArguments,
528
- (_d = arrayCreationExpression === null || arrayCreationExpression === void 0 ? void 0 : arrayCreationExpression.arrayCreationExplicitInitSuffix) === null || _d === void 0 ? void 0 : _d[0].children.arrayInitializer[0].children.variableInitializerList,
575
+ (_d = arrayCreationExpression === null || arrayCreationExpression === void 0 ? void 0 : arrayCreationExpression.arrayCreationWithInitializerSuffix) === null || _d === void 0 ? void 0 : _d[0].children.arrayInitializer[0].children.variableInitializerList,
529
576
  (_e = classInstanceCreationExpression === null || classInstanceCreationExpression === void 0 ? void 0 : classInstanceCreationExpression.classOrInterfaceTypeToInstantiate[0].children.typeArgumentsOrDiamond) === null || _e === void 0 ? void 0 : _e[0].children.typeArguments,
530
577
  classInstanceCreationExpression === null || classInstanceCreationExpression === void 0 ? void 0 : classInstanceCreationExpression.argumentList
531
578
  ].some(breakablePart => breakablePart !== undefined);
@@ -1,5 +1,6 @@
1
1
  import { concat, group, indent } from "./prettier-builder.js";
2
2
  import { printTokenWithComments } from "./comments/format-comments.js";
3
+ import { handleCommentsParameters } from "./comments/handle-comments.js";
3
4
  import { displaySemicolon, getInterfaceBodyDeclarationsSeparator, isStatementEmptyStatement, printArrayList, putIntoBraces, rejectAndConcat, rejectAndJoin, rejectAndJoinSeps, sortModifiers } from "./printer-utils.js";
4
5
  import { builders } from "prettier/doc";
5
6
  import { BaseCstPrettierPrinter } from "../base-cst-printer.js";
@@ -11,7 +12,7 @@ export class InterfacesPrettierVisitor extends BaseCstPrettierPrinter {
11
12
  const otherModifiers = this.mapVisit(modifiers[1]);
12
13
  const declaration = ctx.normalInterfaceDeclaration
13
14
  ? this.visit(ctx.normalInterfaceDeclaration)
14
- : this.visit(ctx.annotationTypeDeclaration);
15
+ : this.visit(ctx.annotationInterfaceDeclaration);
15
16
  return rejectAndJoin(hardline, [
16
17
  rejectAndJoin(hardline, firstAnnotations),
17
18
  rejectAndJoin(" ", [rejectAndJoin(" ", otherModifiers), declaration])
@@ -20,12 +21,12 @@ export class InterfacesPrettierVisitor extends BaseCstPrettierPrinter {
20
21
  normalInterfaceDeclaration(ctx) {
21
22
  const typeIdentifier = this.visit(ctx.typeIdentifier);
22
23
  const typeParameters = this.visit(ctx.typeParameters);
23
- const extendsInterfaces = this.visit(ctx.extendsInterfaces);
24
+ const interfaceExtends = this.visit(ctx.interfaceExtends);
24
25
  const optionalInterfacePermits = this.visit(ctx.interfacePermits);
25
26
  const interfaceBody = this.visit(ctx.interfaceBody);
26
- let extendsInterfacesPart = "";
27
- if (extendsInterfaces) {
28
- extendsInterfacesPart = indent(rejectAndConcat([softline, extendsInterfaces]));
27
+ let interfaceExtendsPart = "";
28
+ if (interfaceExtends) {
29
+ interfaceExtendsPart = indent(rejectAndConcat([softline, interfaceExtends]));
29
30
  }
30
31
  let interfacePermits = "";
31
32
  if (optionalInterfacePermits) {
@@ -35,7 +36,7 @@ export class InterfacesPrettierVisitor extends BaseCstPrettierPrinter {
35
36
  group(rejectAndJoin(" ", [
36
37
  ctx.Interface[0],
37
38
  concat([typeIdentifier, typeParameters]),
38
- extendsInterfacesPart,
39
+ interfaceExtendsPart,
39
40
  interfacePermits
40
41
  ])),
41
42
  interfaceBody
@@ -47,7 +48,7 @@ export class InterfacesPrettierVisitor extends BaseCstPrettierPrinter {
47
48
  }
48
49
  return printTokenWithComments(this.getSingle(ctx));
49
50
  }
50
- extendsInterfaces(ctx) {
51
+ interfaceExtends(ctx) {
51
52
  const interfaceTypeList = this.visit(ctx.interfaceTypeList);
52
53
  return group(rejectAndConcat([
53
54
  ctx.Extends[0],
@@ -114,33 +115,33 @@ export class InterfacesPrettierVisitor extends BaseCstPrettierPrinter {
114
115
  }
115
116
  return printTokenWithComments(this.getSingle(ctx));
116
117
  }
117
- annotationTypeDeclaration(ctx) {
118
+ annotationInterfaceDeclaration(ctx) {
118
119
  const typeIdentifier = this.visit(ctx.typeIdentifier);
119
- const annotationTypeBody = this.visit(ctx.annotationTypeBody);
120
+ const annotationInterfaceBody = this.visit(ctx.annotationInterfaceBody);
120
121
  return rejectAndJoin(" ", [
121
122
  concat([ctx.At[0], ctx.Interface[0]]),
122
123
  typeIdentifier,
123
- annotationTypeBody
124
+ annotationInterfaceBody
124
125
  ]);
125
126
  }
126
- annotationTypeBody(ctx) {
127
- const annotationTypeMemberDeclaration = this.mapVisit(ctx.annotationTypeMemberDeclaration);
127
+ annotationInterfaceBody(ctx) {
128
+ const annotationInterfaceMemberDeclaration = this.mapVisit(ctx.annotationInterfaceMemberDeclaration);
128
129
  return rejectAndJoin(line, [
129
130
  indent(rejectAndJoin(line, [
130
131
  ctx.LCurly[0],
131
- rejectAndJoin(concat([line, line]), annotationTypeMemberDeclaration)
132
+ rejectAndJoin(concat([line, line]), annotationInterfaceMemberDeclaration)
132
133
  ])),
133
134
  ctx.RCurly[0]
134
135
  ]);
135
136
  }
136
- annotationTypeMemberDeclaration(ctx) {
137
+ annotationInterfaceMemberDeclaration(ctx) {
137
138
  if (ctx.Semicolon) {
138
139
  return printTokenWithComments(this.getSingle(ctx));
139
140
  }
140
141
  return this.visitSingle(ctx);
141
142
  }
142
- annotationTypeElementDeclaration(ctx) {
143
- const modifiers = sortModifiers(ctx.annotationTypeElementModifier);
143
+ annotationInterfaceElementDeclaration(ctx) {
144
+ const modifiers = sortModifiers(ctx.annotationInterfaceElementModifier);
144
145
  const firstAnnotations = this.mapVisit(modifiers[0]);
145
146
  const otherModifiers = this.mapVisit(modifiers[1]);
146
147
  const unannType = this.visit(ctx.unannType);
@@ -164,7 +165,7 @@ export class InterfacesPrettierVisitor extends BaseCstPrettierPrinter {
164
165
  ])
165
166
  ]);
166
167
  }
167
- annotationTypeElementModifier(ctx) {
168
+ annotationInterfaceElementModifier(ctx) {
168
169
  if (ctx.annotation) {
169
170
  return this.visitSingle(ctx);
170
171
  }
@@ -175,9 +176,12 @@ export class InterfacesPrettierVisitor extends BaseCstPrettierPrinter {
175
176
  return rejectAndJoin(" ", [ctx.Default[0], elementValue]);
176
177
  }
177
178
  annotation(ctx) {
179
+ var _a, _b, _c;
178
180
  const fqn = this.visit(ctx.typeName);
179
181
  let annoArgs = "";
180
182
  if (ctx.LBrace) {
183
+ const elementValues = (_c = (_b = (_a = ctx.elementValuePairList) === null || _a === void 0 ? void 0 : _a[0].children.elementValuePair) !== null && _b !== void 0 ? _b : ctx.elementValue) !== null && _c !== void 0 ? _c : [];
184
+ handleCommentsParameters(ctx.LBrace[0], elementValues, ctx.RBrace[0]);
181
185
  if (ctx.elementValuePairList) {
182
186
  annoArgs = putIntoBraces(this.visit(ctx.elementValuePairList), softline, ctx.LBrace[0], ctx.RBrace[0]);
183
187
  }
@@ -9,7 +9,7 @@ import { isEmptyDoc } from "../utils/index.js";
9
9
  import { hasComments, hasLeadingComments, hasTrailingComments } from "./comments/comments-utils.js";
10
10
  import { getTokenLeadingComments, printTokenWithComments } from "./comments/format-comments.js";
11
11
  import { concat, group, ifBreak, indentIfBreak, join } from "./prettier-builder.js";
12
- const { indent, hardline, line } = builders;
12
+ const { indent, hardline, line, lineSuffixBoundary, softline } = builders;
13
13
  const orderedModifiers = [
14
14
  "Public",
15
15
  "Protected",
@@ -222,7 +222,7 @@ export function isExplicitLambdaParameter(ctx) {
222
222
  ctx.lambdaParameterList &&
223
223
  ctx.lambdaParameterList[0] &&
224
224
  ctx.lambdaParameterList[0].children &&
225
- ctx.lambdaParameterList[0].children.explicitLambdaParameterList);
225
+ ctx.lambdaParameterList[0].children.normalLambdaParameterList);
226
226
  }
227
227
  export function getBlankLinesSeparator(ctx, separator = hardline) {
228
228
  if (ctx === undefined) {
@@ -380,7 +380,11 @@ export function putIntoBraces(argument, separator, LBrace, RBrace) {
380
380
  let contentInsideBraces;
381
381
  if (isEmptyDoc(argument)) {
382
382
  if (rightBraceLeadingComments.length === 0) {
383
- return concat([LBrace, RBrace]);
383
+ return group([
384
+ indent(printTokenWithComments(LBrace)),
385
+ ...(LBrace.trailingComments ? [softline, lineSuffixBoundary] : []),
386
+ RBrace
387
+ ]);
384
388
  }
385
389
  contentInsideBraces = [separator, ...rightBraceLeadingComments];
386
390
  }
@@ -444,10 +448,10 @@ export function binary(nodes, tokens, isRoot = false) {
444
448
  }
445
449
  }
446
450
  else {
447
- const content = indent(binary(nodes, tokens));
451
+ const content = binary(nodes, tokens);
448
452
  nodes.unshift(levelOperator !== undefined &&
449
453
  needsParentheses(nextOperator, levelOperator)
450
- ? concat(["(", content, ")"])
454
+ ? concat(["(", indent(content), ")"])
451
455
  : content);
452
456
  }
453
457
  }
@@ -1,31 +1,37 @@
1
- import { builders, utils } from "prettier/doc";
2
- import { putIntoBraces } from "../printers/printer-utils.js";
3
- const { breakParent, conditionalGroup, softline } = builders;
4
- const { willBreak } = utils;
1
+ import { builders } from "prettier/doc";
2
+ import { handleCommentsParameters } from "../printers/comments/handle-comments.js";
3
+ import { indent } from "../printers/prettier-builder.js";
4
+ import { rejectAndConcat } from "../printers/printer-utils.js";
5
+ const { lineSuffixBoundary, softline } = builders;
5
6
  export default function printArgumentListWithBraces(argumentListNodes, rBrace, lBrace) {
6
- if (argumentListNodes &&
7
- !argumentListNodes[0].leadingComments &&
8
- !rBrace.leadingComments &&
9
- isArgumentListHuggable(argumentListNodes[0].children)) {
10
- const [flat, expanded] = [false, true].map(shouldBreak => {
11
- const argumentList = this.visit(argumentListNodes, {
12
- isHuggable: true,
13
- shouldBreak
14
- });
15
- return putIntoBraces(argumentList, "", lBrace, rBrace);
16
- });
17
- return [
18
- willBreak(flat) ? breakParent : "",
19
- conditionalGroup([flat, expanded])
20
- ];
7
+ var _a, _b, _c;
8
+ const argumentListNode = argumentListNodes === null || argumentListNodes === void 0 ? void 0 : argumentListNodes[0];
9
+ const expressions = (_a = argumentListNode === null || argumentListNode === void 0 ? void 0 : argumentListNode.children.expression) !== null && _a !== void 0 ? _a : [];
10
+ if (argumentListNode) {
11
+ const { leadingComments, trailingComments } = argumentListNode;
12
+ delete argumentListNode.leadingComments;
13
+ delete argumentListNode.trailingComments;
14
+ if (leadingComments) {
15
+ const firstExpression = expressions[0];
16
+ firstExpression.leadingComments = [
17
+ ...leadingComments,
18
+ ...((_b = firstExpression.leadingComments) !== null && _b !== void 0 ? _b : [])
19
+ ];
20
+ }
21
+ if (trailingComments) {
22
+ const lastExpression = expressions.at(-1);
23
+ lastExpression.trailingComments = [
24
+ ...((_c = lastExpression.trailingComments) !== null && _c !== void 0 ? _c : []),
25
+ ...trailingComments
26
+ ];
27
+ }
21
28
  }
29
+ handleCommentsParameters(lBrace, expressions, rBrace);
22
30
  const argumentList = this.visit(argumentListNodes);
23
- return putIntoBraces(argumentList, softline, lBrace, rBrace);
24
- }
25
- function isArgumentListHuggable(argumentList) {
26
- var _a;
27
- const expressions = argumentList.expression;
28
- return ((expressions.length === 1 ||
29
- ((_a = expressions[expressions.length - 1].children.lambdaExpression) === null || _a === void 0 ? void 0 : _a[0].children.lambdaBody[0].children.block) !== undefined) &&
30
- expressions.filter(({ children }) => children.lambdaExpression).length === 1);
31
+ const contents = argumentList
32
+ ? [argumentList]
33
+ : lBrace.trailingComments
34
+ ? [softline, lineSuffixBoundary]
35
+ : [];
36
+ return rejectAndConcat([indent(lBrace), ...contents, rBrace]);
31
37
  }
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "prettier-plugin-java",
3
- "version": "2.6.0",
3
+ "version": "2.6.2",
4
4
  "description": "Prettier Java Plugin",
5
5
  "type": "module",
6
- "exports": "./dist/index.js",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./src/index.d.ts",
9
+ "default": "./src/index.js"
10
+ }
11
+ },
7
12
  "files": [
8
13
  "dist"
9
14
  ],
@@ -11,7 +16,7 @@
11
16
  "repository": "https://github.com/jhipster/prettier-java",
12
17
  "license": "Apache-2.0",
13
18
  "dependencies": {
14
- "java-parser": "2.3.0",
19
+ "java-parser": "2.3.2",
15
20
  "lodash": "4.17.21",
16
21
  "prettier": "3.2.5"
17
22
  },
@@ -38,5 +43,5 @@
38
43
  "ts-node": "10.9.1",
39
44
  "typescript": "4.9.3"
40
45
  },
41
- "gitHead": "30e1cad12e8936df43c25eeb9dad5aef20d9af6c"
46
+ "gitHead": "182d1f5bbb1e6d58cc57b32886cc3f3bcc75c164"
42
47
  }
@@ -1,25 +0,0 @@
1
- export function isArgumentListSingleLambda(argumentList) {
2
- if (argumentList === undefined) {
3
- return false;
4
- }
5
- const args = argumentList[0].children.expression;
6
- if (args.length !== 1) {
7
- return false;
8
- }
9
- const argument = args[0];
10
- return argument.children.lambdaExpression !== undefined;
11
- }
12
- export const isSingleArgumentLambdaExpressionWithBlock = (argumentList) => {
13
- if (argumentList === undefined) {
14
- return false;
15
- }
16
- const args = argumentList[0].children.expression;
17
- if (args.length !== 1) {
18
- return false;
19
- }
20
- const argument = args[0];
21
- return (argument.children.lambdaExpression !== undefined &&
22
- argument.children.lambdaExpression[0].children.lambdaBody[0].children
23
- .block !== undefined);
24
- };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbnMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZXhwcmVzc2lvbnMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLDBCQUEwQixDQUN4QyxZQUErQztJQUUvQyxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7UUFDOUIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2pELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDckIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxDQUFDO0FBQzFELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRyxDQUN2RCxZQUErQyxFQUMvQyxFQUFFO0lBQ0YsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFO1FBQzlCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNqRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsT0FBTyxDQUNMLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEtBQUssU0FBUztRQUNoRCxRQUFRLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTthQUNsRSxLQUFLLEtBQUssU0FBUyxDQUN2QixDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -1,18 +0,0 @@
1
- import { builders } from "prettier/doc";
2
- import { isSingleArgumentLambdaExpressionWithBlock } from "./expressions-utils.js";
3
- import { printTokenWithComments } from "../printers/comments/format-comments.js";
4
- import { concat, dedent, indent } from "../printers/prettier-builder.js";
5
- import { putIntoBraces } from "../printers/printer-utils.js";
6
- const { softline, ifBreak } = builders;
7
- export default function printSingleLambdaInvocation(argumentListCtx, rBrace, lBrace) {
8
- const lambdaParametersGroupId = Symbol("lambdaParameters");
9
- const argumentList = this.visit(argumentListCtx, {
10
- lambdaParametersGroupId,
11
- isInsideMethodInvocationSuffix: true
12
- });
13
- const formattedRBrace = isSingleArgumentLambdaExpressionWithBlock(argumentListCtx)
14
- ? ifBreak(indent(concat([softline, rBrace])), printTokenWithComments(rBrace), { groupId: lambdaParametersGroupId })
15
- : indent(concat([softline, rBrace]));
16
- return dedent(putIntoBraces(argumentList, "", lBrace, formattedRBrace));
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnRTaW5nbGVMYW1iZGFJbnZvY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3ByaW50U2luZ2xlTGFtYmRhSW52b2NhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RCxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQztBQUV2QyxNQUFNLENBQUMsT0FBTyxVQUFVLDJCQUEyQixDQUNqRCxlQUFrRCxFQUNsRCxNQUFjLEVBQ2QsTUFBYztJQUVkLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUU7UUFDL0MsdUJBQXVCO1FBQ3ZCLDhCQUE4QixFQUFFLElBQUk7S0FDckMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxlQUFlLEdBQUcseUNBQXlDLENBQy9ELGVBQWUsQ0FDaEI7UUFDQyxDQUFDLENBQUMsT0FBTyxDQUNMLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNsQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsRUFDOUIsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsQ0FDckM7UUFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyJ9