550 lines
27 KiB
JavaScript
550 lines
27 KiB
JavaScript
"use strict";
|
|
var __extends = (this && this.__extends) || (function () {
|
|
var extendStatics = function (d, b) {
|
|
extendStatics = Object.setPrototypeOf ||
|
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
return extendStatics(d, b);
|
|
};
|
|
return function (d, b) {
|
|
if (typeof b !== "function" && b !== null)
|
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
extendStatics(d, b);
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
})();
|
|
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
to[j] = from[i];
|
|
return to;
|
|
};
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.ExpressionsPrettierVisitor = void 0;
|
|
var forEach_1 = __importDefault(require("lodash/forEach"));
|
|
var doc_1 = require("prettier/doc");
|
|
var base_cst_printer_1 = require("../base-cst-printer");
|
|
var utils_1 = require("../types/utils");
|
|
var expressions_utils_1 = require("../utils/expressions-utils");
|
|
var utils_2 = require("../utils");
|
|
var format_comments_1 = require("./comments/format-comments");
|
|
var handle_comments_1 = require("./comments/handle-comments");
|
|
var prettier_builder_1 = require("./prettier-builder");
|
|
var printer_utils_1 = require("./printer-utils");
|
|
var ifBreak = doc_1.builders.ifBreak, line = doc_1.builders.line, softline = doc_1.builders.softline, indentIfBreak = doc_1.builders.indentIfBreak;
|
|
var ExpressionsPrettierVisitor = /** @class */ (function (_super) {
|
|
__extends(ExpressionsPrettierVisitor, _super);
|
|
function ExpressionsPrettierVisitor() {
|
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
}
|
|
ExpressionsPrettierVisitor.prototype.expression = function (ctx, params) {
|
|
return this.visitSingle(ctx, params);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.lambdaExpression = function (ctx, params) {
|
|
var lambdaParameters = prettier_builder_1.group(this.visit(ctx.lambdaParameters, params), params ? { id: params.lambdaParametersGroupId } : undefined);
|
|
var lambdaBody = this.visit(ctx.lambdaBody);
|
|
var isLambdaBodyABlock = ctx.lambdaBody[0].children.block !== undefined;
|
|
if (isLambdaBodyABlock) {
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
lambdaParameters,
|
|
ctx.Arrow[0],
|
|
(params === null || params === void 0 ? void 0 : params.lambdaParametersGroupId) !== undefined
|
|
? indentIfBreak(lambdaBody, {
|
|
groupId: params.lambdaParametersGroupId
|
|
})
|
|
: lambdaBody
|
|
]);
|
|
}
|
|
return prettier_builder_1.group(prettier_builder_1.indent(printer_utils_1.rejectAndJoin(line, [
|
|
printer_utils_1.rejectAndJoin(" ", [lambdaParameters, ctx.Arrow[0]]),
|
|
lambdaBody
|
|
])));
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.lambdaParameters = function (ctx, params) {
|
|
if (ctx.lambdaParametersWithBraces) {
|
|
return this.visitSingle(ctx, params);
|
|
}
|
|
return format_comments_1.printTokenWithComments(this.getSingle(ctx));
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.lambdaParametersWithBraces = function (ctx, params) {
|
|
var lambdaParameterList = this.visit(ctx.lambdaParameterList);
|
|
if (printer_utils_1.findDeepElementInPartsArray(lambdaParameterList, ",")) {
|
|
var content = printer_utils_1.putIntoBraces(lambdaParameterList, softline, ctx.LBrace[0], ctx.RBrace[0]);
|
|
if ((params === null || params === void 0 ? void 0 : params.isInsideMethodInvocationSuffix) === true) {
|
|
return prettier_builder_1.indent(prettier_builder_1.concat([softline, content]));
|
|
}
|
|
return content;
|
|
}
|
|
// removing braces when only no comments attached
|
|
if ((ctx.LBrace &&
|
|
ctx.RBrace &&
|
|
(!lambdaParameterList || printer_utils_1.isExplicitLambdaParameter(ctx))) ||
|
|
ctx.LBrace[0].leadingComments ||
|
|
ctx.LBrace[0].trailingComments ||
|
|
ctx.RBrace[0].leadingComments ||
|
|
ctx.RBrace[0].trailingComments) {
|
|
return printer_utils_1.rejectAndConcat([
|
|
ctx.LBrace[0],
|
|
lambdaParameterList,
|
|
ctx.RBrace[0]
|
|
]);
|
|
}
|
|
return lambdaParameterList;
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.lambdaParameterList = function (ctx) {
|
|
return this.visitSingle(ctx);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.inferredLambdaParameterList = function (ctx) {
|
|
var commas = ctx.Comma
|
|
? ctx.Comma.map(function (elt) {
|
|
return prettier_builder_1.concat([elt, line]);
|
|
})
|
|
: [];
|
|
return printer_utils_1.rejectAndJoinSeps(commas, ctx.Identifier);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.explicitLambdaParameterList = function (ctx) {
|
|
var lambdaParameter = this.mapVisit(ctx.lambdaParameter);
|
|
var commas = ctx.Comma
|
|
? ctx.Comma.map(function (elt) {
|
|
return prettier_builder_1.concat([elt, line]);
|
|
})
|
|
: [];
|
|
return printer_utils_1.rejectAndJoinSeps(commas, lambdaParameter);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.lambdaParameter = function (ctx) {
|
|
return this.visitSingle(ctx);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.regularLambdaParameter = function (ctx) {
|
|
var variableModifier = this.mapVisit(ctx.variableModifier);
|
|
var lambdaParameterType = this.visit(ctx.lambdaParameterType);
|
|
var variableDeclaratorId = this.visit(ctx.variableDeclaratorId);
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
printer_utils_1.rejectAndJoin(" ", variableModifier),
|
|
lambdaParameterType,
|
|
variableDeclaratorId
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.lambdaParameterType = function (ctx) {
|
|
if (ctx.unannType) {
|
|
return this.visitSingle(ctx);
|
|
}
|
|
return format_comments_1.printTokenWithComments(this.getSingle(ctx));
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.lambdaBody = function (ctx) {
|
|
return this.visitSingle(ctx);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.ternaryExpression = function (ctx, params) {
|
|
var binaryExpression = this.visit(ctx.binaryExpression, params);
|
|
if (ctx.QuestionMark) {
|
|
var expression1 = this.visit(ctx.expression[0]);
|
|
var expression2 = this.visit(ctx.expression[1]);
|
|
return prettier_builder_1.indent(prettier_builder_1.group(printer_utils_1.rejectAndConcat([
|
|
printer_utils_1.rejectAndJoin(line, [
|
|
binaryExpression,
|
|
printer_utils_1.rejectAndJoin(" ", [ctx.QuestionMark[0], expression1]),
|
|
printer_utils_1.rejectAndJoin(" ", [ctx.Colon[0], expression2])
|
|
])
|
|
])));
|
|
}
|
|
return binaryExpression;
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.binaryExpression = function (ctx, params) {
|
|
handle_comments_1.handleCommentsBinaryExpression(ctx);
|
|
var instanceofReferences = this.mapVisit(printer_utils_1.sortNodes([ctx.pattern, ctx.referenceType]));
|
|
var expression = this.mapVisit(ctx.expression);
|
|
var unaryExpression = this.mapVisit(ctx.unaryExpression);
|
|
var _a = printer_utils_1.separateTokensIntoGroups(ctx), groupsOfOperator = _a.groupsOfOperator, sortedBinaryOperators = _a.sortedBinaryOperators;
|
|
var segmentsSplitByBinaryOperator = [];
|
|
var currentSegment = [];
|
|
if (groupsOfOperator.length === 1 && groupsOfOperator[0].length === 0) {
|
|
return unaryExpression.shift();
|
|
}
|
|
groupsOfOperator.forEach(function (subgroup) {
|
|
currentSegment = [unaryExpression.shift()];
|
|
for (var i = 0; i < subgroup.length; i++) {
|
|
var token = subgroup[i];
|
|
var shiftOperator = printer_utils_1.isShiftOperator(subgroup, i);
|
|
if (token.tokenType.name === "Instanceof") {
|
|
currentSegment.push(printer_utils_1.rejectAndJoin(" ", [
|
|
ctx.Instanceof[0],
|
|
instanceofReferences.shift()
|
|
]));
|
|
}
|
|
else if (printer_utils_1.matchCategory(token, "'AssignmentOperator'")) {
|
|
currentSegment.push(prettier_builder_1.indent(printer_utils_1.rejectAndJoin(line, [token, expression.shift()])));
|
|
}
|
|
else if (shiftOperator === "leftShift" ||
|
|
shiftOperator === "rightShift") {
|
|
currentSegment.push(printer_utils_1.rejectAndJoin(" ", [
|
|
printer_utils_1.rejectAndConcat([token, subgroup[i + 1]]),
|
|
unaryExpression.shift()
|
|
]));
|
|
i++;
|
|
}
|
|
else if (shiftOperator === "doubleRightShift") {
|
|
currentSegment.push(printer_utils_1.rejectAndJoin(" ", [
|
|
printer_utils_1.rejectAndConcat([token, subgroup[i + 1], subgroup[i + 2]]),
|
|
unaryExpression.shift()
|
|
]));
|
|
i += 2;
|
|
}
|
|
else if (printer_utils_1.matchCategory(token, "'BinaryOperator'")) {
|
|
currentSegment.push(printer_utils_1.rejectAndJoin(line, [token, unaryExpression.shift()]));
|
|
}
|
|
}
|
|
segmentsSplitByBinaryOperator.push(prettier_builder_1.group(printer_utils_1.rejectAndJoin(" ", currentSegment)));
|
|
});
|
|
if (params !== undefined && params.addParenthesisToWrapStatement) {
|
|
return prettier_builder_1.group(prettier_builder_1.concat([
|
|
ifBreak("(", ""),
|
|
prettier_builder_1.indent(prettier_builder_1.concat([
|
|
softline,
|
|
prettier_builder_1.group(printer_utils_1.rejectAndJoinSeps(sortedBinaryOperators.map(function (elt) { return prettier_builder_1.concat([" ", elt, line]); }), segmentsSplitByBinaryOperator))
|
|
])),
|
|
softline,
|
|
ifBreak(")")
|
|
]));
|
|
}
|
|
return prettier_builder_1.group(printer_utils_1.rejectAndJoinSeps(sortedBinaryOperators.map(function (elt) { return prettier_builder_1.concat([" ", elt, line]); }), segmentsSplitByBinaryOperator));
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.unaryExpression = function (ctx) {
|
|
var unaryPrefixOperator = ctx.UnaryPrefixOperator
|
|
? ctx.UnaryPrefixOperator
|
|
: [];
|
|
var primary = this.visit(ctx.primary);
|
|
var unarySuffixOperator = ctx.UnarySuffixOperator
|
|
? ctx.UnarySuffixOperator
|
|
: [];
|
|
return printer_utils_1.rejectAndConcat([
|
|
printer_utils_1.rejectAndConcat(unaryPrefixOperator),
|
|
primary,
|
|
printer_utils_1.rejectAndConcat(unarySuffixOperator)
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.unaryExpressionNotPlusMinus = function (ctx) {
|
|
var unaryPrefixOperatorNotPlusMinus = ctx.UnaryPrefixOperatorNotPlusMinus // changed when moved to TS
|
|
? printer_utils_1.rejectAndJoin(" ", ctx.UnaryPrefixOperatorNotPlusMinus) // changed when moved to TS
|
|
: "";
|
|
var primary = this.visit(ctx.primary);
|
|
var unarySuffixOperator = ctx.UnarySuffixOperator // changed when moved to TS
|
|
? printer_utils_1.rejectAndJoin(" ", ctx.UnarySuffixOperator) // changed when moved to TS
|
|
: "";
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
unaryPrefixOperatorNotPlusMinus,
|
|
primary,
|
|
unarySuffixOperator
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.primary = function (ctx) {
|
|
var countMethodInvocation = printer_utils_1.isUniqueMethodInvocation(ctx.primarySuffix);
|
|
var primaryPrefix = this.visit(ctx.primaryPrefix, {
|
|
shouldBreakBeforeFirstMethodInvocation: countMethodInvocation > 1
|
|
});
|
|
var suffixes = [];
|
|
if (ctx.primarySuffix !== undefined) {
|
|
// edge case: https://github.com/jhipster/prettier-java/issues/381
|
|
var hasFirstInvocationArg = true;
|
|
if (ctx.primarySuffix.length > 1 &&
|
|
ctx.primarySuffix[1].children.methodInvocationSuffix &&
|
|
Object.keys(ctx.primarySuffix[1].children.methodInvocationSuffix[0].children).length === 2) {
|
|
hasFirstInvocationArg = false;
|
|
}
|
|
if (ctx.primarySuffix[0].children.Dot !== undefined &&
|
|
ctx.primaryPrefix[0].children.newExpression !== undefined) {
|
|
suffixes.push(softline);
|
|
}
|
|
suffixes.push(this.visit(ctx.primarySuffix[0], {
|
|
shouldDedent:
|
|
// dedent when simple method invocation
|
|
countMethodInvocation !== 1 &&
|
|
// dedent when (chain) method invocation
|
|
ctx.primaryPrefix[0] &&
|
|
ctx.primaryPrefix[0].children.fqnOrRefType &&
|
|
!(ctx.primaryPrefix[0].children.fqnOrRefType[0].children.Dot !==
|
|
undefined) &&
|
|
// indent when lambdaExpression
|
|
ctx.primarySuffix[0].children.methodInvocationSuffix &&
|
|
ctx.primarySuffix[0].children.methodInvocationSuffix[0].children
|
|
.argumentList &&
|
|
ctx.primarySuffix[0].children.methodInvocationSuffix[0].children
|
|
.argumentList[0].children.expression &&
|
|
ctx.primarySuffix[0].children.methodInvocationSuffix[0].children
|
|
.argumentList[0].children.expression[0].children
|
|
.lambdaExpression === undefined
|
|
}));
|
|
for (var i = 1; i < ctx.primarySuffix.length; i++) {
|
|
if (ctx.primarySuffix[i].children.Dot !== undefined &&
|
|
ctx.primarySuffix[i - 1].children.methodInvocationSuffix !== undefined) {
|
|
suffixes.push(softline);
|
|
}
|
|
suffixes.push(this.visit(ctx.primarySuffix[i]));
|
|
}
|
|
if (countMethodInvocation === 1 &&
|
|
ctx.primaryPrefix[0].children.newExpression === undefined) {
|
|
return prettier_builder_1.group(printer_utils_1.rejectAndConcat([
|
|
primaryPrefix,
|
|
hasFirstInvocationArg ? suffixes[0] : prettier_builder_1.indent(suffixes[0]),
|
|
prettier_builder_1.indent(printer_utils_1.rejectAndConcat(suffixes.slice(1)))
|
|
]));
|
|
}
|
|
}
|
|
return prettier_builder_1.group(printer_utils_1.rejectAndConcat([primaryPrefix, prettier_builder_1.indent(printer_utils_1.rejectAndConcat(suffixes))]));
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.primaryPrefix = function (ctx, params) {
|
|
if (ctx.This || ctx.Void) {
|
|
return format_comments_1.printTokenWithComments(this.getSingle(ctx));
|
|
}
|
|
return this.visitSingle(ctx, params);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.primarySuffix = function (ctx, params) {
|
|
if (ctx.Dot) {
|
|
if (ctx.This) {
|
|
return printer_utils_1.rejectAndConcat([ctx.Dot[0], ctx.This[0]]);
|
|
}
|
|
else if (ctx.Identifier) {
|
|
var typeArguments = this.visit(ctx.typeArguments);
|
|
return printer_utils_1.rejectAndConcat([ctx.Dot[0], typeArguments, ctx.Identifier[0]]);
|
|
}
|
|
var unqualifiedClassInstanceCreationExpression = this.visit(ctx.unqualifiedClassInstanceCreationExpression);
|
|
return printer_utils_1.rejectAndConcat([
|
|
ctx.Dot[0],
|
|
unqualifiedClassInstanceCreationExpression
|
|
]);
|
|
}
|
|
return this.visitSingle(ctx, params);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.fqnOrRefType = function (ctx, params) {
|
|
var fqnOrRefTypePartFirst = this.visit(ctx.fqnOrRefTypePartFirst);
|
|
var fqnOrRefTypePartRest = this.mapVisit(ctx.fqnOrRefTypePartRest);
|
|
var dims = this.visit(ctx.dims);
|
|
var dots = ctx.Dot ? ctx.Dot : [];
|
|
var isMethodInvocation = ctx.Dot && ctx.Dot.length === 1;
|
|
if (params !== undefined &&
|
|
params.shouldBreakBeforeFirstMethodInvocation === true) {
|
|
// when fqnOrRefType is a method call from an object
|
|
if (isMethodInvocation) {
|
|
return printer_utils_1.rejectAndConcat([
|
|
prettier_builder_1.indent(printer_utils_1.rejectAndJoin(prettier_builder_1.concat([softline, dots[0]]), [
|
|
fqnOrRefTypePartFirst,
|
|
printer_utils_1.rejectAndJoinSeps(dots.slice(1), fqnOrRefTypePartRest),
|
|
dims
|
|
]))
|
|
]);
|
|
// otherwise it is a fully qualified name but we need to exclude when it is just a method call
|
|
}
|
|
else if (ctx.Dot) {
|
|
return prettier_builder_1.indent(printer_utils_1.rejectAndConcat([
|
|
printer_utils_1.rejectAndJoinSeps(dots.slice(0, dots.length - 1), __spreadArray([
|
|
fqnOrRefTypePartFirst
|
|
], fqnOrRefTypePartRest.slice(0, fqnOrRefTypePartRest.length - 1))),
|
|
softline,
|
|
printer_utils_1.rejectAndConcat([
|
|
dots[dots.length - 1],
|
|
fqnOrRefTypePartRest[fqnOrRefTypePartRest.length - 1]
|
|
]),
|
|
dims
|
|
]));
|
|
}
|
|
}
|
|
return printer_utils_1.rejectAndConcat([
|
|
printer_utils_1.rejectAndJoinSeps(dots, __spreadArray([fqnOrRefTypePartFirst], fqnOrRefTypePartRest)),
|
|
dims
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.fqnOrRefTypePartFirst = function (ctx) {
|
|
var annotation = this.mapVisit(ctx.annotation);
|
|
var fqnOrRefTypeCommon = this.visit(ctx.fqnOrRefTypePartCommon);
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
printer_utils_1.rejectAndJoin(" ", annotation),
|
|
fqnOrRefTypeCommon
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.fqnOrRefTypePartRest = function (ctx) {
|
|
var annotation = this.mapVisit(ctx.annotation);
|
|
var fqnOrRefTypeCommon = this.visit(ctx.fqnOrRefTypePartCommon);
|
|
var typeArguments = this.visit(ctx.typeArguments);
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
printer_utils_1.rejectAndJoin(" ", annotation),
|
|
printer_utils_1.rejectAndConcat([typeArguments, fqnOrRefTypeCommon])
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.fqnOrRefTypePartCommon = function (ctx) {
|
|
var keyWord = null;
|
|
if (ctx.Identifier) {
|
|
keyWord = ctx.Identifier[0];
|
|
}
|
|
else {
|
|
keyWord = ctx.Super[0];
|
|
}
|
|
var typeArguments = this.visit(ctx.typeArguments);
|
|
return printer_utils_1.rejectAndConcat([keyWord, typeArguments]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.parenthesisExpression = function (ctx) {
|
|
var expression = this.visit(ctx.expression);
|
|
return printer_utils_1.putIntoBraces(expression, softline, ctx.LBrace[0], ctx.RBrace[0]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.castExpression = function (ctx) {
|
|
return this.visitSingle(ctx);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.primitiveCastExpression = function (ctx) {
|
|
var primitiveType = this.visit(ctx.primitiveType);
|
|
var unaryExpression = this.visit(ctx.unaryExpression);
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
printer_utils_1.rejectAndConcat([ctx.LBrace[0], primitiveType, ctx.RBrace[0]]),
|
|
unaryExpression
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.referenceTypeCastExpression = function (ctx) {
|
|
var referenceType = this.visit(ctx.referenceType);
|
|
var hasAdditionalBounds = ctx.additionalBound !== undefined;
|
|
var additionalBounds = printer_utils_1.rejectAndJoin(line, this.mapVisit(ctx.additionalBound));
|
|
var expression = ctx.lambdaExpression
|
|
? this.visit(ctx.lambdaExpression)
|
|
: this.visit(ctx.unaryExpressionNotPlusMinus);
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
printer_utils_1.putIntoBraces(printer_utils_1.rejectAndJoin(line, [referenceType, additionalBounds]), hasAdditionalBounds ? softline : "", ctx.LBrace[0], ctx.RBrace[0]),
|
|
expression
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.newExpression = function (ctx) {
|
|
return this.visitSingle(ctx);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.unqualifiedClassInstanceCreationExpression = function (ctx) {
|
|
var typeArguments = this.visit(ctx.typeArguments);
|
|
var classOrInterfaceTypeToInstantiate = this.visit(ctx.classOrInterfaceTypeToInstantiate);
|
|
var content = utils_2.printArgumentListWithBraces.call(this, ctx.argumentList, ctx.RBrace[0], ctx.LBrace[0]);
|
|
var classBody = this.visit(ctx.classBody);
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
ctx.New[0],
|
|
printer_utils_1.rejectAndConcat([
|
|
typeArguments,
|
|
classOrInterfaceTypeToInstantiate,
|
|
content
|
|
]),
|
|
classBody
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.classOrInterfaceTypeToInstantiate = function (ctx) {
|
|
var _this = this;
|
|
var tokens = printer_utils_1.sortAnnotationIdentifier(ctx.annotation, ctx.Identifier);
|
|
var segments = [];
|
|
var currentSegment = [];
|
|
forEach_1.default(tokens, function (token) {
|
|
if (utils_1.isAnnotationCstNode(token)) {
|
|
currentSegment.push(_this.visit([token]));
|
|
}
|
|
else {
|
|
currentSegment.push(token);
|
|
segments.push(printer_utils_1.rejectAndJoin(" ", currentSegment));
|
|
currentSegment = [];
|
|
}
|
|
});
|
|
var typeArgumentsOrDiamond = this.visit(ctx.typeArgumentsOrDiamond);
|
|
var dots = ctx.Dot ? ctx.Dot : [];
|
|
return printer_utils_1.rejectAndConcat([
|
|
printer_utils_1.rejectAndJoinSeps(dots, segments),
|
|
typeArgumentsOrDiamond
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.typeArgumentsOrDiamond = function (ctx) {
|
|
return this.visitSingle(ctx);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.diamond = function (ctx) {
|
|
return prettier_builder_1.concat([ctx.Less[0], ctx.Greater[0]]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.methodInvocationSuffix = function (ctx, params) {
|
|
var isSingleLambda = expressions_utils_1.isArgumentListSingleLambda(ctx.argumentList);
|
|
if (isSingleLambda) {
|
|
return utils_2.printSingleLambdaInvocation.call(this, ctx.argumentList, ctx.RBrace[0], ctx.LBrace[0]);
|
|
}
|
|
var argumentList = this.visit(ctx.argumentList);
|
|
if (params && params.shouldDedent) {
|
|
return prettier_builder_1.dedent(printer_utils_1.putIntoBraces(argumentList, softline, ctx.LBrace[0], ctx.RBrace[0]));
|
|
}
|
|
return printer_utils_1.putIntoBraces(argumentList, softline, ctx.LBrace[0], ctx.RBrace[0]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.argumentList = function (ctx, params) {
|
|
var expressions = this.mapVisit(ctx.expression, params);
|
|
var commas = ctx.Comma ? ctx.Comma.map(function (elt) { return prettier_builder_1.concat([elt, line]); }) : [];
|
|
return printer_utils_1.rejectAndJoinSeps(commas, expressions);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.arrayCreationExpression = function (ctx) {
|
|
var type = ctx.primitiveType
|
|
? this.visit(ctx.primitiveType)
|
|
: this.visit(ctx.classOrInterfaceType);
|
|
var suffix = ctx.arrayCreationDefaultInitSuffix
|
|
? this.visit(ctx.arrayCreationDefaultInitSuffix)
|
|
: this.visit(ctx.arrayCreationExplicitInitSuffix);
|
|
return printer_utils_1.rejectAndConcat([prettier_builder_1.concat([ctx.New[0], " "]), type, suffix]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.arrayCreationDefaultInitSuffix = function (ctx) {
|
|
var dimExprs = this.visit(ctx.dimExprs);
|
|
var dims = this.visit(ctx.dims);
|
|
return printer_utils_1.rejectAndConcat([dimExprs, dims]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.arrayCreationExplicitInitSuffix = function (ctx) {
|
|
var dims = this.visit(ctx.dims);
|
|
var arrayInitializer = this.visit(ctx.arrayInitializer);
|
|
return printer_utils_1.rejectAndJoin(" ", [dims, arrayInitializer]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.dimExprs = function (ctx) {
|
|
var dimExpr = this.mapVisit(ctx.dimExpr);
|
|
return printer_utils_1.rejectAndConcat(dimExpr);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.dimExpr = function (ctx) {
|
|
var annotations = this.mapVisit(ctx.annotation);
|
|
var expression = this.visit(ctx.expression);
|
|
return printer_utils_1.rejectAndJoin(" ", [
|
|
printer_utils_1.rejectAndJoin(" ", annotations),
|
|
printer_utils_1.rejectAndConcat([ctx.LSquare[0], expression, ctx.RSquare[0]])
|
|
]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.classLiteralSuffix = function (ctx) {
|
|
var squares = [];
|
|
if (ctx.LSquare) {
|
|
for (var i = 0; i < ctx.LSquare.length; i++) {
|
|
squares.push(prettier_builder_1.concat([ctx.LSquare[i], ctx.RSquare[i]]));
|
|
}
|
|
}
|
|
return printer_utils_1.rejectAndConcat(__spreadArray(__spreadArray([], squares), [ctx.Dot[0], ctx.Class[0]]));
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.arrayAccessSuffix = function (ctx) {
|
|
var expression = this.visit(ctx.expression);
|
|
return printer_utils_1.rejectAndConcat([ctx.LSquare[0], expression, ctx.RSquare[0]]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.methodReferenceSuffix = function (ctx) {
|
|
var typeArguments = this.visit(ctx.typeArguments);
|
|
var identifierOrNew = ctx.New ? ctx.New[0] : ctx.Identifier[0];
|
|
return printer_utils_1.rejectAndConcat([ctx.ColonColon[0], typeArguments, identifierOrNew]);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.pattern = function (ctx) {
|
|
return this.visitSingle(ctx);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.typePattern = function (ctx) {
|
|
return this.visitSingle(ctx);
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.identifyNewExpressionType = function () {
|
|
return "identifyNewExpressionType";
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.isLambdaExpression = function () {
|
|
return "isLambdaExpression";
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.isCastExpression = function () {
|
|
return "isCastExpression";
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.isPrimitiveCastExpression = function () {
|
|
return "isPrimitiveCastExpression";
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.isReferenceTypeCastExpression = function () {
|
|
return "isReferenceTypeCastExpression";
|
|
};
|
|
ExpressionsPrettierVisitor.prototype.isRefTypeInMethodRef = function () {
|
|
return "isRefTypeInMethodRef";
|
|
};
|
|
return ExpressionsPrettierVisitor;
|
|
}(base_cst_printer_1.BaseCstPrettierPrinter));
|
|
exports.ExpressionsPrettierVisitor = ExpressionsPrettierVisitor;
|