prettier-plugin-java 1.6.1 → 2.0.0

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.
Files changed (121) hide show
  1. package/LICENSE +1 -1
  2. package/dist/base-cst-printer.js +4 -3
  3. package/dist/cst-printer.js +1 -0
  4. package/dist/index.js +1 -0
  5. package/dist/options.js +2 -0
  6. package/dist/parser.js +1 -0
  7. package/dist/printer.js +1 -0
  8. package/dist/printers/arrays.js +4 -3
  9. package/dist/printers/blocks-and-statements.js +107 -102
  10. package/dist/printers/classes.js +152 -151
  11. package/dist/printers/comments/comments-utils.js +1 -0
  12. package/dist/printers/comments/format-comments.js +22 -13
  13. package/dist/printers/comments/handle-comments.js +2 -1
  14. package/dist/printers/expressions.js +128 -105
  15. package/dist/printers/interfaces.js +57 -56
  16. package/dist/printers/lexical-structure.js +5 -4
  17. package/dist/printers/names.js +9 -8
  18. package/dist/printers/packages-and-modules.js +73 -59
  19. package/dist/printers/prettier-builder.js +21 -12
  20. package/dist/printers/printer-utils.js +64 -56
  21. package/dist/printers/types-values-and-variables.js +44 -39
  22. package/dist/src/base-cst-printer.js +77 -0
  23. package/dist/src/cst-printer.js +37 -0
  24. package/dist/src/index.js +67 -0
  25. package/dist/src/options.js +256 -0
  26. package/dist/src/parser.js +7 -0
  27. package/dist/src/printer.js +28 -0
  28. package/dist/src/printers/arrays.js +49 -0
  29. package/dist/src/printers/blocks-and-statements.js +493 -0
  30. package/dist/src/printers/classes.js +724 -0
  31. package/dist/src/printers/comments/comments-utils.js +29 -0
  32. package/dist/src/printers/comments/format-comments.js +187 -0
  33. package/dist/src/printers/comments/handle-comments.js +38 -0
  34. package/dist/src/printers/expressions.js +549 -0
  35. package/dist/src/printers/interfaces.js +251 -0
  36. package/dist/src/printers/lexical-structure.js +43 -0
  37. package/dist/src/printers/names.js +53 -0
  38. package/dist/src/printers/packages-and-modules.js +185 -0
  39. package/dist/src/printers/prettier-builder.js +47 -0
  40. package/dist/src/printers/printer-utils.js +577 -0
  41. package/dist/src/printers/types-values-and-variables.js +183 -0
  42. package/dist/src/types/utils.js +29 -0
  43. package/dist/src/utils/expressions-utils.js +29 -0
  44. package/dist/src/utils/index.js +10 -0
  45. package/dist/src/utils/printArgumentListWithBraces.js +21 -0
  46. package/dist/src/utils/printSingleLambdaInvocation.js +20 -0
  47. package/dist/test/babel-register.js +3 -0
  48. package/dist/test/repository-test/core-test.js +12 -0
  49. package/dist/test/repository-test/jhipster-1-test.js +17 -0
  50. package/dist/test/repository-test/jhipster-2-test.js +16 -0
  51. package/dist/test/test-utils.js +215 -0
  52. package/dist/test/unit-test/annotation_type_declaration/annotation_type_declaration-spec.js +6 -0
  53. package/dist/test/unit-test/args/args-spec.js +6 -0
  54. package/dist/test/unit-test/assert/assert-spec.js +6 -0
  55. package/dist/test/unit-test/binary_expressions/binary_expressions-spec.js +6 -0
  56. package/dist/test/unit-test/blank_lines/blank_lines-spec.js +6 -0
  57. package/dist/test/unit-test/bug-fixes/bug-fixes-spec.js +6 -0
  58. package/dist/test/unit-test/cast/cast-spec.js +6 -0
  59. package/dist/test/unit-test/char_literal/char_literal-spec.js +6 -0
  60. package/dist/test/unit-test/classes/multiple_classes-spec.js +6 -0
  61. package/dist/test/unit-test/comments/comments-spec.js +14 -0
  62. package/dist/test/unit-test/complex_generic_class/complex_generic_class-spec.js +6 -0
  63. package/dist/test/unit-test/constructors/constructors-spec.js +6 -0
  64. package/dist/test/unit-test/empty_statement/empty_statement-spec.js +6 -0
  65. package/dist/test/unit-test/enum/enum-spec.js +6 -0
  66. package/dist/test/unit-test/expressions/expressions-spec.js +6 -0
  67. package/dist/test/unit-test/extends_abstract_class/extends_abstract_class-spec.js +6 -0
  68. package/dist/test/unit-test/extends_abstract_class_and_implements_interfaces/extends_abstract_class_and_implements_interfaces-spec.js +6 -0
  69. package/dist/test/unit-test/for/for-spec.js +6 -0
  70. package/dist/test/unit-test/generic_class/generic_class-spec.js +6 -0
  71. package/dist/test/unit-test/generic_questionmark/generic_questionmark-spec.js +6 -0
  72. package/dist/test/unit-test/hello-world/hello-word-spec.js +6 -0
  73. package/dist/test/unit-test/if/if-spec.js +6 -0
  74. package/dist/test/unit-test/indent/indent-spec.js +6 -0
  75. package/dist/test/unit-test/instantiation/instantiation-spec.js +6 -0
  76. package/dist/test/unit-test/interface/interface-spec.js +6 -0
  77. package/dist/test/unit-test/lambda/lambda-spec.js +6 -0
  78. package/dist/test/unit-test/marker_annotations/marker_annotations-spec.js +6 -0
  79. package/dist/test/unit-test/member_chain/member_chain-spec.js +6 -0
  80. package/dist/test/unit-test/method_reference/method_reference-spec.js +6 -0
  81. package/dist/test/unit-test/modifiers/modifiers-spec.js +6 -0
  82. package/dist/test/unit-test/modules/modules-spec.js +6 -0
  83. package/dist/test/unit-test/package_and_imports/package_and_imports-spec.js +34 -0
  84. package/dist/test/unit-test/pattern-matching/pattern-matching-spec.js +6 -0
  85. package/dist/test/unit-test/prettier-ignore/prettier-ignore-spec.js +28 -0
  86. package/dist/test/unit-test/records/records-spec.js +6 -0
  87. package/dist/test/unit-test/return/return-spec.js +6 -0
  88. package/dist/test/unit-test/sealed/sealed-spec.js +6 -0
  89. package/dist/test/unit-test/snippets/arrays/array-initializer.spec.js +94 -0
  90. package/dist/test/unit-test/snippets/arrays/variable-initializer-list.spec.js +19 -0
  91. package/dist/test/unit-test/snippets/blocks-and-statements/switch.spec.js +26 -0
  92. package/dist/test/unit-test/snippets/classes/class-body.spec.js +181 -0
  93. package/dist/test/unit-test/snippets/classes/enum-body.spec.js +87 -0
  94. package/dist/test/unit-test/snippets/classes/variableDeclarator/test.spec.js +186 -0
  95. package/dist/test/unit-test/snippets/interfaces/element-value-array-initializer.spec.js +85 -0
  96. package/dist/test/unit-test/snippets/names/ambiguousName/test.spec.js +19 -0
  97. package/dist/test/unit-test/snippets/names/expressionName/test.spec.js +19 -0
  98. package/dist/test/unit-test/snippets/names/methodName/test.spec.js +12 -0
  99. package/dist/test/unit-test/snippets/names/packageOrTypeName/test.spec.js +19 -0
  100. package/dist/test/unit-test/snippets/types-values-and-variables/floatingPointType/test.spec.js +19 -0
  101. package/dist/test/unit-test/snippets/types-values-and-variables/integralType/test.spec.js +40 -0
  102. package/dist/test/unit-test/snippets/types-values-and-variables/numericType/test.spec.js +88 -0
  103. package/dist/test/unit-test/snippets/types-values-and-variables/wildcard/test.spec.js +112 -0
  104. package/dist/test/unit-test/snippets/types-values-and-variables/wildcardBounds/test.spec.js +81 -0
  105. package/dist/test/unit-test/switch/switch-spec.js +6 -0
  106. package/dist/test/unit-test/synchronized/synchronized-spec.js +6 -0
  107. package/dist/test/unit-test/text-blocks/text-block-spec.js +6 -0
  108. package/dist/test/unit-test/throws/throws-spec.js +6 -0
  109. package/dist/test/unit-test/try_catch/try_catch-spec.js +6 -0
  110. package/dist/test/unit-test/types/types-spec.js +6 -0
  111. package/dist/test/unit-test/variables/variables-spec.js +6 -0
  112. package/dist/test/unit-test/while/while-spec.js +6 -0
  113. package/dist/test/unit-test/yield-statement/yield-statement-spec.js +6 -0
  114. package/dist/types/utils.js +1 -0
  115. package/dist/utils/expressions-utils.js +1 -0
  116. package/dist/utils/index.js +4 -1
  117. package/dist/utils/isEmptyDoc.js +7 -0
  118. package/dist/utils/printArgumentListWithBraces.js +3 -2
  119. package/dist/utils/printSingleLambdaInvocation.js +5 -4
  120. package/package.json +21 -21
  121. package/dist/utils/constants.js +0 -4
@@ -0,0 +1,549 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
18
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
19
+ to[j] = from[i];
20
+ return to;
21
+ };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ExpressionsPrettierVisitor = void 0;
27
+ var forEach_1 = __importDefault(require("lodash/forEach"));
28
+ var doc_1 = require("prettier/doc");
29
+ var base_cst_printer_1 = require("../base-cst-printer");
30
+ var utils_1 = require("../types/utils");
31
+ var expressions_utils_1 = require("../utils/expressions-utils");
32
+ var utils_2 = require("../utils");
33
+ var format_comments_1 = require("./comments/format-comments");
34
+ var handle_comments_1 = require("./comments/handle-comments");
35
+ var prettier_builder_1 = require("./prettier-builder");
36
+ var printer_utils_1 = require("./printer-utils");
37
+ var ifBreak = doc_1.builders.ifBreak, line = doc_1.builders.line, softline = doc_1.builders.softline, indentIfBreak = doc_1.builders.indentIfBreak;
38
+ var ExpressionsPrettierVisitor = /** @class */ (function (_super) {
39
+ __extends(ExpressionsPrettierVisitor, _super);
40
+ function ExpressionsPrettierVisitor() {
41
+ return _super !== null && _super.apply(this, arguments) || this;
42
+ }
43
+ ExpressionsPrettierVisitor.prototype.expression = function (ctx, params) {
44
+ return this.visitSingle(ctx, params);
45
+ };
46
+ ExpressionsPrettierVisitor.prototype.lambdaExpression = function (ctx, params) {
47
+ var lambdaParameters = prettier_builder_1.group(this.visit(ctx.lambdaParameters, params), params ? { id: params.lambdaParametersGroupId } : undefined);
48
+ var lambdaBody = this.visit(ctx.lambdaBody);
49
+ var isLambdaBodyABlock = ctx.lambdaBody[0].children.block !== undefined;
50
+ if (isLambdaBodyABlock) {
51
+ return printer_utils_1.rejectAndJoin(" ", [
52
+ lambdaParameters,
53
+ ctx.Arrow[0],
54
+ (params === null || params === void 0 ? void 0 : params.lambdaParametersGroupId) !== undefined
55
+ ? indentIfBreak(lambdaBody, {
56
+ groupId: params.lambdaParametersGroupId
57
+ })
58
+ : lambdaBody
59
+ ]);
60
+ }
61
+ return prettier_builder_1.group(prettier_builder_1.indent(printer_utils_1.rejectAndJoin(line, [
62
+ printer_utils_1.rejectAndJoin(" ", [lambdaParameters, ctx.Arrow[0]]),
63
+ lambdaBody
64
+ ])));
65
+ };
66
+ ExpressionsPrettierVisitor.prototype.lambdaParameters = function (ctx, params) {
67
+ if (ctx.lambdaParametersWithBraces) {
68
+ return this.visitSingle(ctx, params);
69
+ }
70
+ return format_comments_1.printTokenWithComments(this.getSingle(ctx));
71
+ };
72
+ ExpressionsPrettierVisitor.prototype.lambdaParametersWithBraces = function (ctx, params) {
73
+ var lambdaParameterList = this.visit(ctx.lambdaParameterList);
74
+ if (printer_utils_1.findDeepElementInPartsArray(lambdaParameterList, ",")) {
75
+ var content = printer_utils_1.putIntoBraces(lambdaParameterList, softline, ctx.LBrace[0], ctx.RBrace[0]);
76
+ if ((params === null || params === void 0 ? void 0 : params.isInsideMethodInvocationSuffix) === true) {
77
+ return prettier_builder_1.indent(prettier_builder_1.concat([softline, content]));
78
+ }
79
+ return content;
80
+ }
81
+ // removing braces when only no comments attached
82
+ if ((ctx.LBrace &&
83
+ ctx.RBrace &&
84
+ (!lambdaParameterList || printer_utils_1.isExplicitLambdaParameter(ctx))) ||
85
+ ctx.LBrace[0].leadingComments ||
86
+ ctx.LBrace[0].trailingComments ||
87
+ ctx.RBrace[0].leadingComments ||
88
+ ctx.RBrace[0].trailingComments) {
89
+ return printer_utils_1.rejectAndConcat([
90
+ ctx.LBrace[0],
91
+ lambdaParameterList,
92
+ ctx.RBrace[0]
93
+ ]);
94
+ }
95
+ return lambdaParameterList;
96
+ };
97
+ ExpressionsPrettierVisitor.prototype.lambdaParameterList = function (ctx) {
98
+ return this.visitSingle(ctx);
99
+ };
100
+ ExpressionsPrettierVisitor.prototype.inferredLambdaParameterList = function (ctx) {
101
+ var commas = ctx.Comma
102
+ ? ctx.Comma.map(function (elt) {
103
+ return prettier_builder_1.concat([elt, line]);
104
+ })
105
+ : [];
106
+ return printer_utils_1.rejectAndJoinSeps(commas, ctx.Identifier);
107
+ };
108
+ ExpressionsPrettierVisitor.prototype.explicitLambdaParameterList = function (ctx) {
109
+ var lambdaParameter = this.mapVisit(ctx.lambdaParameter);
110
+ var commas = ctx.Comma
111
+ ? ctx.Comma.map(function (elt) {
112
+ return prettier_builder_1.concat([elt, line]);
113
+ })
114
+ : [];
115
+ return printer_utils_1.rejectAndJoinSeps(commas, lambdaParameter);
116
+ };
117
+ ExpressionsPrettierVisitor.prototype.lambdaParameter = function (ctx) {
118
+ return this.visitSingle(ctx);
119
+ };
120
+ ExpressionsPrettierVisitor.prototype.regularLambdaParameter = function (ctx) {
121
+ var variableModifier = this.mapVisit(ctx.variableModifier);
122
+ var lambdaParameterType = this.visit(ctx.lambdaParameterType);
123
+ var variableDeclaratorId = this.visit(ctx.variableDeclaratorId);
124
+ return printer_utils_1.rejectAndJoin(" ", [
125
+ printer_utils_1.rejectAndJoin(" ", variableModifier),
126
+ lambdaParameterType,
127
+ variableDeclaratorId
128
+ ]);
129
+ };
130
+ ExpressionsPrettierVisitor.prototype.lambdaParameterType = function (ctx) {
131
+ if (ctx.unannType) {
132
+ return this.visitSingle(ctx);
133
+ }
134
+ return format_comments_1.printTokenWithComments(this.getSingle(ctx));
135
+ };
136
+ ExpressionsPrettierVisitor.prototype.lambdaBody = function (ctx) {
137
+ return this.visitSingle(ctx);
138
+ };
139
+ ExpressionsPrettierVisitor.prototype.ternaryExpression = function (ctx, params) {
140
+ var binaryExpression = this.visit(ctx.binaryExpression, params);
141
+ if (ctx.QuestionMark) {
142
+ var expression1 = this.visit(ctx.expression[0]);
143
+ var expression2 = this.visit(ctx.expression[1]);
144
+ return prettier_builder_1.indent(prettier_builder_1.group(printer_utils_1.rejectAndConcat([
145
+ printer_utils_1.rejectAndJoin(line, [
146
+ binaryExpression,
147
+ printer_utils_1.rejectAndJoin(" ", [ctx.QuestionMark[0], expression1]),
148
+ printer_utils_1.rejectAndJoin(" ", [ctx.Colon[0], expression2])
149
+ ])
150
+ ])));
151
+ }
152
+ return binaryExpression;
153
+ };
154
+ ExpressionsPrettierVisitor.prototype.binaryExpression = function (ctx, params) {
155
+ handle_comments_1.handleCommentsBinaryExpression(ctx);
156
+ var instanceofReferences = this.mapVisit(printer_utils_1.sortNodes([ctx.pattern, ctx.referenceType]));
157
+ var expression = this.mapVisit(ctx.expression);
158
+ var unaryExpression = this.mapVisit(ctx.unaryExpression);
159
+ var _a = printer_utils_1.separateTokensIntoGroups(ctx), groupsOfOperator = _a.groupsOfOperator, sortedBinaryOperators = _a.sortedBinaryOperators;
160
+ var segmentsSplitByBinaryOperator = [];
161
+ var currentSegment = [];
162
+ if (groupsOfOperator.length === 1 && groupsOfOperator[0].length === 0) {
163
+ return unaryExpression.shift();
164
+ }
165
+ groupsOfOperator.forEach(function (subgroup) {
166
+ currentSegment = [unaryExpression.shift()];
167
+ for (var i = 0; i < subgroup.length; i++) {
168
+ var token = subgroup[i];
169
+ var shiftOperator = printer_utils_1.isShiftOperator(subgroup, i);
170
+ if (token.tokenType.name === "Instanceof") {
171
+ currentSegment.push(printer_utils_1.rejectAndJoin(" ", [
172
+ ctx.Instanceof[0],
173
+ instanceofReferences.shift()
174
+ ]));
175
+ }
176
+ else if (printer_utils_1.matchCategory(token, "'AssignmentOperator'")) {
177
+ currentSegment.push(prettier_builder_1.indent(printer_utils_1.rejectAndJoin(line, [token, expression.shift()])));
178
+ }
179
+ else if (shiftOperator === "leftShift" ||
180
+ shiftOperator === "rightShift") {
181
+ currentSegment.push(printer_utils_1.rejectAndJoin(" ", [
182
+ printer_utils_1.rejectAndConcat([token, subgroup[i + 1]]),
183
+ unaryExpression.shift()
184
+ ]));
185
+ i++;
186
+ }
187
+ else if (shiftOperator === "doubleRightShift") {
188
+ currentSegment.push(printer_utils_1.rejectAndJoin(" ", [
189
+ printer_utils_1.rejectAndConcat([token, subgroup[i + 1], subgroup[i + 2]]),
190
+ unaryExpression.shift()
191
+ ]));
192
+ i += 2;
193
+ }
194
+ else if (printer_utils_1.matchCategory(token, "'BinaryOperator'")) {
195
+ currentSegment.push(printer_utils_1.rejectAndJoin(line, [token, unaryExpression.shift()]));
196
+ }
197
+ }
198
+ segmentsSplitByBinaryOperator.push(prettier_builder_1.group(printer_utils_1.rejectAndJoin(" ", currentSegment)));
199
+ });
200
+ if (params !== undefined && params.addParenthesisToWrapStatement) {
201
+ return prettier_builder_1.group(prettier_builder_1.concat([
202
+ ifBreak("(", ""),
203
+ prettier_builder_1.indent(prettier_builder_1.concat([
204
+ softline,
205
+ prettier_builder_1.group(printer_utils_1.rejectAndJoinSeps(sortedBinaryOperators.map(function (elt) { return prettier_builder_1.concat([" ", elt, line]); }), segmentsSplitByBinaryOperator))
206
+ ])),
207
+ softline,
208
+ ifBreak(")")
209
+ ]));
210
+ }
211
+ return prettier_builder_1.group(printer_utils_1.rejectAndJoinSeps(sortedBinaryOperators.map(function (elt) { return prettier_builder_1.concat([" ", elt, line]); }), segmentsSplitByBinaryOperator));
212
+ };
213
+ ExpressionsPrettierVisitor.prototype.unaryExpression = function (ctx) {
214
+ var unaryPrefixOperator = ctx.UnaryPrefixOperator
215
+ ? ctx.UnaryPrefixOperator
216
+ : [];
217
+ var primary = this.visit(ctx.primary);
218
+ var unarySuffixOperator = ctx.UnarySuffixOperator
219
+ ? ctx.UnarySuffixOperator
220
+ : [];
221
+ return printer_utils_1.rejectAndConcat([
222
+ printer_utils_1.rejectAndConcat(unaryPrefixOperator),
223
+ primary,
224
+ printer_utils_1.rejectAndConcat(unarySuffixOperator)
225
+ ]);
226
+ };
227
+ ExpressionsPrettierVisitor.prototype.unaryExpressionNotPlusMinus = function (ctx) {
228
+ var unaryPrefixOperatorNotPlusMinus = ctx.UnaryPrefixOperatorNotPlusMinus // changed when moved to TS
229
+ ? printer_utils_1.rejectAndJoin(" ", ctx.UnaryPrefixOperatorNotPlusMinus) // changed when moved to TS
230
+ : "";
231
+ var primary = this.visit(ctx.primary);
232
+ var unarySuffixOperator = ctx.UnarySuffixOperator // changed when moved to TS
233
+ ? printer_utils_1.rejectAndJoin(" ", ctx.UnarySuffixOperator) // changed when moved to TS
234
+ : "";
235
+ return printer_utils_1.rejectAndJoin(" ", [
236
+ unaryPrefixOperatorNotPlusMinus,
237
+ primary,
238
+ unarySuffixOperator
239
+ ]);
240
+ };
241
+ ExpressionsPrettierVisitor.prototype.primary = function (ctx) {
242
+ var countMethodInvocation = printer_utils_1.isUniqueMethodInvocation(ctx.primarySuffix);
243
+ var primaryPrefix = this.visit(ctx.primaryPrefix, {
244
+ shouldBreakBeforeFirstMethodInvocation: countMethodInvocation > 1
245
+ });
246
+ var suffixes = [];
247
+ if (ctx.primarySuffix !== undefined) {
248
+ // edge case: https://github.com/jhipster/prettier-java/issues/381
249
+ var hasFirstInvocationArg = true;
250
+ if (ctx.primarySuffix.length > 1 &&
251
+ ctx.primarySuffix[1].children.methodInvocationSuffix &&
252
+ Object.keys(ctx.primarySuffix[1].children.methodInvocationSuffix[0].children).length === 2) {
253
+ hasFirstInvocationArg = false;
254
+ }
255
+ if (ctx.primarySuffix[0].children.Dot !== undefined &&
256
+ ctx.primaryPrefix[0].children.newExpression !== undefined) {
257
+ suffixes.push(softline);
258
+ }
259
+ suffixes.push(this.visit(ctx.primarySuffix[0], {
260
+ shouldDedent:
261
+ // dedent when simple method invocation
262
+ countMethodInvocation !== 1 &&
263
+ // dedent when (chain) method invocation
264
+ ctx.primaryPrefix[0] &&
265
+ ctx.primaryPrefix[0].children.fqnOrRefType &&
266
+ !(ctx.primaryPrefix[0].children.fqnOrRefType[0].children.Dot !==
267
+ undefined) &&
268
+ // indent when lambdaExpression
269
+ ctx.primarySuffix[0].children.methodInvocationSuffix &&
270
+ ctx.primarySuffix[0].children.methodInvocationSuffix[0].children
271
+ .argumentList &&
272
+ ctx.primarySuffix[0].children.methodInvocationSuffix[0].children
273
+ .argumentList[0].children.expression &&
274
+ ctx.primarySuffix[0].children.methodInvocationSuffix[0].children
275
+ .argumentList[0].children.expression[0].children
276
+ .lambdaExpression === undefined
277
+ }));
278
+ for (var i = 1; i < ctx.primarySuffix.length; i++) {
279
+ if (ctx.primarySuffix[i].children.Dot !== undefined &&
280
+ ctx.primarySuffix[i - 1].children.methodInvocationSuffix !== undefined) {
281
+ suffixes.push(softline);
282
+ }
283
+ suffixes.push(this.visit(ctx.primarySuffix[i]));
284
+ }
285
+ if (countMethodInvocation === 1 &&
286
+ ctx.primaryPrefix[0].children.newExpression === undefined) {
287
+ return prettier_builder_1.group(printer_utils_1.rejectAndConcat([
288
+ primaryPrefix,
289
+ hasFirstInvocationArg ? suffixes[0] : prettier_builder_1.indent(suffixes[0]),
290
+ prettier_builder_1.indent(printer_utils_1.rejectAndConcat(suffixes.slice(1)))
291
+ ]));
292
+ }
293
+ }
294
+ return prettier_builder_1.group(printer_utils_1.rejectAndConcat([primaryPrefix, prettier_builder_1.indent(printer_utils_1.rejectAndConcat(suffixes))]));
295
+ };
296
+ ExpressionsPrettierVisitor.prototype.primaryPrefix = function (ctx, params) {
297
+ if (ctx.This || ctx.Void) {
298
+ return format_comments_1.printTokenWithComments(this.getSingle(ctx));
299
+ }
300
+ return this.visitSingle(ctx, params);
301
+ };
302
+ ExpressionsPrettierVisitor.prototype.primarySuffix = function (ctx, params) {
303
+ if (ctx.Dot) {
304
+ if (ctx.This) {
305
+ return printer_utils_1.rejectAndConcat([ctx.Dot[0], ctx.This[0]]);
306
+ }
307
+ else if (ctx.Identifier) {
308
+ var typeArguments = this.visit(ctx.typeArguments);
309
+ return printer_utils_1.rejectAndConcat([ctx.Dot[0], typeArguments, ctx.Identifier[0]]);
310
+ }
311
+ var unqualifiedClassInstanceCreationExpression = this.visit(ctx.unqualifiedClassInstanceCreationExpression);
312
+ return printer_utils_1.rejectAndConcat([
313
+ ctx.Dot[0],
314
+ unqualifiedClassInstanceCreationExpression
315
+ ]);
316
+ }
317
+ return this.visitSingle(ctx, params);
318
+ };
319
+ ExpressionsPrettierVisitor.prototype.fqnOrRefType = function (ctx, params) {
320
+ var fqnOrRefTypePartFirst = this.visit(ctx.fqnOrRefTypePartFirst);
321
+ var fqnOrRefTypePartRest = this.mapVisit(ctx.fqnOrRefTypePartRest);
322
+ var dims = this.visit(ctx.dims);
323
+ var dots = ctx.Dot ? ctx.Dot : [];
324
+ var isMethodInvocation = ctx.Dot && ctx.Dot.length === 1;
325
+ if (params !== undefined &&
326
+ params.shouldBreakBeforeFirstMethodInvocation === true) {
327
+ // when fqnOrRefType is a method call from an object
328
+ if (isMethodInvocation) {
329
+ return printer_utils_1.rejectAndConcat([
330
+ prettier_builder_1.indent(printer_utils_1.rejectAndJoin(prettier_builder_1.concat([softline, dots[0]]), [
331
+ fqnOrRefTypePartFirst,
332
+ printer_utils_1.rejectAndJoinSeps(dots.slice(1), fqnOrRefTypePartRest),
333
+ dims
334
+ ]))
335
+ ]);
336
+ // otherwise it is a fully qualified name but we need to exclude when it is just a method call
337
+ }
338
+ else if (ctx.Dot) {
339
+ return prettier_builder_1.indent(printer_utils_1.rejectAndConcat([
340
+ printer_utils_1.rejectAndJoinSeps(dots.slice(0, dots.length - 1), __spreadArray([
341
+ fqnOrRefTypePartFirst
342
+ ], fqnOrRefTypePartRest.slice(0, fqnOrRefTypePartRest.length - 1))),
343
+ softline,
344
+ printer_utils_1.rejectAndConcat([
345
+ dots[dots.length - 1],
346
+ fqnOrRefTypePartRest[fqnOrRefTypePartRest.length - 1]
347
+ ]),
348
+ dims
349
+ ]));
350
+ }
351
+ }
352
+ return printer_utils_1.rejectAndConcat([
353
+ printer_utils_1.rejectAndJoinSeps(dots, __spreadArray([fqnOrRefTypePartFirst], fqnOrRefTypePartRest)),
354
+ dims
355
+ ]);
356
+ };
357
+ ExpressionsPrettierVisitor.prototype.fqnOrRefTypePartFirst = function (ctx) {
358
+ var annotation = this.mapVisit(ctx.annotation);
359
+ var fqnOrRefTypeCommon = this.visit(ctx.fqnOrRefTypePartCommon);
360
+ return printer_utils_1.rejectAndJoin(" ", [
361
+ printer_utils_1.rejectAndJoin(" ", annotation),
362
+ fqnOrRefTypeCommon
363
+ ]);
364
+ };
365
+ ExpressionsPrettierVisitor.prototype.fqnOrRefTypePartRest = function (ctx) {
366
+ var annotation = this.mapVisit(ctx.annotation);
367
+ var fqnOrRefTypeCommon = this.visit(ctx.fqnOrRefTypePartCommon);
368
+ var typeArguments = this.visit(ctx.typeArguments);
369
+ return printer_utils_1.rejectAndJoin(" ", [
370
+ printer_utils_1.rejectAndJoin(" ", annotation),
371
+ printer_utils_1.rejectAndConcat([typeArguments, fqnOrRefTypeCommon])
372
+ ]);
373
+ };
374
+ ExpressionsPrettierVisitor.prototype.fqnOrRefTypePartCommon = function (ctx) {
375
+ var keyWord = null;
376
+ if (ctx.Identifier) {
377
+ keyWord = ctx.Identifier[0];
378
+ }
379
+ else {
380
+ keyWord = ctx.Super[0];
381
+ }
382
+ var typeArguments = this.visit(ctx.typeArguments);
383
+ return printer_utils_1.rejectAndConcat([keyWord, typeArguments]);
384
+ };
385
+ ExpressionsPrettierVisitor.prototype.parenthesisExpression = function (ctx) {
386
+ var expression = this.visit(ctx.expression);
387
+ return printer_utils_1.putIntoBraces(expression, softline, ctx.LBrace[0], ctx.RBrace[0]);
388
+ };
389
+ ExpressionsPrettierVisitor.prototype.castExpression = function (ctx) {
390
+ return this.visitSingle(ctx);
391
+ };
392
+ ExpressionsPrettierVisitor.prototype.primitiveCastExpression = function (ctx) {
393
+ var primitiveType = this.visit(ctx.primitiveType);
394
+ var unaryExpression = this.visit(ctx.unaryExpression);
395
+ return printer_utils_1.rejectAndJoin(" ", [
396
+ printer_utils_1.rejectAndConcat([ctx.LBrace[0], primitiveType, ctx.RBrace[0]]),
397
+ unaryExpression
398
+ ]);
399
+ };
400
+ ExpressionsPrettierVisitor.prototype.referenceTypeCastExpression = function (ctx) {
401
+ var referenceType = this.visit(ctx.referenceType);
402
+ var hasAdditionalBounds = ctx.additionalBound !== undefined;
403
+ var additionalBounds = printer_utils_1.rejectAndJoin(line, this.mapVisit(ctx.additionalBound));
404
+ var expression = ctx.lambdaExpression
405
+ ? this.visit(ctx.lambdaExpression)
406
+ : this.visit(ctx.unaryExpressionNotPlusMinus);
407
+ return printer_utils_1.rejectAndJoin(" ", [
408
+ printer_utils_1.putIntoBraces(printer_utils_1.rejectAndJoin(line, [referenceType, additionalBounds]), hasAdditionalBounds ? softline : "", ctx.LBrace[0], ctx.RBrace[0]),
409
+ expression
410
+ ]);
411
+ };
412
+ ExpressionsPrettierVisitor.prototype.newExpression = function (ctx) {
413
+ return this.visitSingle(ctx);
414
+ };
415
+ ExpressionsPrettierVisitor.prototype.unqualifiedClassInstanceCreationExpression = function (ctx) {
416
+ var typeArguments = this.visit(ctx.typeArguments);
417
+ var classOrInterfaceTypeToInstantiate = this.visit(ctx.classOrInterfaceTypeToInstantiate);
418
+ var content = utils_2.printArgumentListWithBraces.call(this, ctx.argumentList, ctx.RBrace[0], ctx.LBrace[0]);
419
+ var classBody = this.visit(ctx.classBody);
420
+ return printer_utils_1.rejectAndJoin(" ", [
421
+ ctx.New[0],
422
+ printer_utils_1.rejectAndConcat([
423
+ typeArguments,
424
+ classOrInterfaceTypeToInstantiate,
425
+ content
426
+ ]),
427
+ classBody
428
+ ]);
429
+ };
430
+ ExpressionsPrettierVisitor.prototype.classOrInterfaceTypeToInstantiate = function (ctx) {
431
+ var _this = this;
432
+ var tokens = printer_utils_1.sortAnnotationIdentifier(ctx.annotation, ctx.Identifier);
433
+ var segments = [];
434
+ var currentSegment = [];
435
+ forEach_1.default(tokens, function (token) {
436
+ if (utils_1.isAnnotationCstNode(token)) {
437
+ currentSegment.push(_this.visit([token]));
438
+ }
439
+ else {
440
+ currentSegment.push(token);
441
+ segments.push(printer_utils_1.rejectAndJoin(" ", currentSegment));
442
+ currentSegment = [];
443
+ }
444
+ });
445
+ var typeArgumentsOrDiamond = this.visit(ctx.typeArgumentsOrDiamond);
446
+ var dots = ctx.Dot ? ctx.Dot : [];
447
+ return printer_utils_1.rejectAndConcat([
448
+ printer_utils_1.rejectAndJoinSeps(dots, segments),
449
+ typeArgumentsOrDiamond
450
+ ]);
451
+ };
452
+ ExpressionsPrettierVisitor.prototype.typeArgumentsOrDiamond = function (ctx) {
453
+ return this.visitSingle(ctx);
454
+ };
455
+ ExpressionsPrettierVisitor.prototype.diamond = function (ctx) {
456
+ return prettier_builder_1.concat([ctx.Less[0], ctx.Greater[0]]);
457
+ };
458
+ ExpressionsPrettierVisitor.prototype.methodInvocationSuffix = function (ctx, params) {
459
+ var isSingleLambda = expressions_utils_1.isArgumentListSingleLambda(ctx.argumentList);
460
+ if (isSingleLambda) {
461
+ return utils_2.printSingleLambdaInvocation.call(this, ctx.argumentList, ctx.RBrace[0], ctx.LBrace[0]);
462
+ }
463
+ var argumentList = this.visit(ctx.argumentList);
464
+ if (params && params.shouldDedent) {
465
+ return prettier_builder_1.dedent(printer_utils_1.putIntoBraces(argumentList, softline, ctx.LBrace[0], ctx.RBrace[0]));
466
+ }
467
+ return printer_utils_1.putIntoBraces(argumentList, softline, ctx.LBrace[0], ctx.RBrace[0]);
468
+ };
469
+ ExpressionsPrettierVisitor.prototype.argumentList = function (ctx, params) {
470
+ var expressions = this.mapVisit(ctx.expression, params);
471
+ var commas = ctx.Comma ? ctx.Comma.map(function (elt) { return prettier_builder_1.concat([elt, line]); }) : [];
472
+ return printer_utils_1.rejectAndJoinSeps(commas, expressions);
473
+ };
474
+ ExpressionsPrettierVisitor.prototype.arrayCreationExpression = function (ctx) {
475
+ var type = ctx.primitiveType
476
+ ? this.visit(ctx.primitiveType)
477
+ : this.visit(ctx.classOrInterfaceType);
478
+ var suffix = ctx.arrayCreationDefaultInitSuffix
479
+ ? this.visit(ctx.arrayCreationDefaultInitSuffix)
480
+ : this.visit(ctx.arrayCreationExplicitInitSuffix);
481
+ return printer_utils_1.rejectAndConcat([prettier_builder_1.concat([ctx.New[0], " "]), type, suffix]);
482
+ };
483
+ ExpressionsPrettierVisitor.prototype.arrayCreationDefaultInitSuffix = function (ctx) {
484
+ var dimExprs = this.visit(ctx.dimExprs);
485
+ var dims = this.visit(ctx.dims);
486
+ return printer_utils_1.rejectAndConcat([dimExprs, dims]);
487
+ };
488
+ ExpressionsPrettierVisitor.prototype.arrayCreationExplicitInitSuffix = function (ctx) {
489
+ var dims = this.visit(ctx.dims);
490
+ var arrayInitializer = this.visit(ctx.arrayInitializer);
491
+ return printer_utils_1.rejectAndJoin(" ", [dims, arrayInitializer]);
492
+ };
493
+ ExpressionsPrettierVisitor.prototype.dimExprs = function (ctx) {
494
+ var dimExpr = this.mapVisit(ctx.dimExpr);
495
+ return printer_utils_1.rejectAndConcat(dimExpr);
496
+ };
497
+ ExpressionsPrettierVisitor.prototype.dimExpr = function (ctx) {
498
+ var annotations = this.mapVisit(ctx.annotation);
499
+ var expression = this.visit(ctx.expression);
500
+ return printer_utils_1.rejectAndJoin(" ", [
501
+ printer_utils_1.rejectAndJoin(" ", annotations),
502
+ printer_utils_1.rejectAndConcat([ctx.LSquare[0], expression, ctx.RSquare[0]])
503
+ ]);
504
+ };
505
+ ExpressionsPrettierVisitor.prototype.classLiteralSuffix = function (ctx) {
506
+ var squares = [];
507
+ if (ctx.LSquare) {
508
+ for (var i = 0; i < ctx.LSquare.length; i++) {
509
+ squares.push(prettier_builder_1.concat([ctx.LSquare[i], ctx.RSquare[i]]));
510
+ }
511
+ }
512
+ return printer_utils_1.rejectAndConcat(__spreadArray(__spreadArray([], squares), [ctx.Dot[0], ctx.Class[0]]));
513
+ };
514
+ ExpressionsPrettierVisitor.prototype.arrayAccessSuffix = function (ctx) {
515
+ var expression = this.visit(ctx.expression);
516
+ return printer_utils_1.rejectAndConcat([ctx.LSquare[0], expression, ctx.RSquare[0]]);
517
+ };
518
+ ExpressionsPrettierVisitor.prototype.methodReferenceSuffix = function (ctx) {
519
+ var typeArguments = this.visit(ctx.typeArguments);
520
+ var identifierOrNew = ctx.New ? ctx.New[0] : ctx.Identifier[0];
521
+ return printer_utils_1.rejectAndConcat([ctx.ColonColon[0], typeArguments, identifierOrNew]);
522
+ };
523
+ ExpressionsPrettierVisitor.prototype.pattern = function (ctx) {
524
+ return this.visitSingle(ctx);
525
+ };
526
+ ExpressionsPrettierVisitor.prototype.typePattern = function (ctx) {
527
+ return this.visitSingle(ctx);
528
+ };
529
+ ExpressionsPrettierVisitor.prototype.identifyNewExpressionType = function () {
530
+ return "identifyNewExpressionType";
531
+ };
532
+ ExpressionsPrettierVisitor.prototype.isLambdaExpression = function () {
533
+ return "isLambdaExpression";
534
+ };
535
+ ExpressionsPrettierVisitor.prototype.isCastExpression = function () {
536
+ return "isCastExpression";
537
+ };
538
+ ExpressionsPrettierVisitor.prototype.isPrimitiveCastExpression = function () {
539
+ return "isPrimitiveCastExpression";
540
+ };
541
+ ExpressionsPrettierVisitor.prototype.isReferenceTypeCastExpression = function () {
542
+ return "isReferenceTypeCastExpression";
543
+ };
544
+ ExpressionsPrettierVisitor.prototype.isRefTypeInMethodRef = function () {
545
+ return "isRefTypeInMethodRef";
546
+ };
547
+ return ExpressionsPrettierVisitor;
548
+ }(base_cst_printer_1.BaseCstPrettierPrinter));
549
+ exports.ExpressionsPrettierVisitor = ExpressionsPrettierVisitor;