MCPcopy Index your code
hub / github.com/nodejs/node / createBinaryExpression

Function createBinaryExpression

test/fixtures/snapshot/typescript.js:24426–24462  ·  view source on GitHub ↗
(left, operator, right)

Source from the content-addressed store, hash-verified

24424 }
24425 // @api
24426 function createBinaryExpression(left, operator, right) {
24427 var node = createBaseExpression(221 /* SyntaxKind.BinaryExpression */);
24428 var operatorToken = asToken(operator);
24429 var operatorKind = operatorToken.kind;
24430 node.left = parenthesizerRules().parenthesizeLeftSideOfBinary(operatorKind, left);
24431 node.operatorToken = operatorToken;
24432 node.right = parenthesizerRules().parenthesizeRightSideOfBinary(operatorKind, node.left, right);
24433 node.transformFlags |=
24434 propagateChildFlags(node.left) |
24435 propagateChildFlags(node.operatorToken) |
24436 propagateChildFlags(node.right);
24437 if (operatorKind === 60 /* SyntaxKind.QuestionQuestionToken */) {
24438 node.transformFlags |= 32 /* TransformFlags.ContainsES2020 */;
24439 }
24440 else if (operatorKind === 63 /* SyntaxKind.EqualsToken */) {
24441 if (ts.isObjectLiteralExpression(node.left)) {
24442 node.transformFlags |=
24443 1024 /* TransformFlags.ContainsES2015 */ |
24444 128 /* TransformFlags.ContainsES2018 */ |
24445 4096 /* TransformFlags.ContainsDestructuringAssignment */ |
24446 propagateAssignmentPatternFlags(node.left);
24447 }
24448 else if (ts.isArrayLiteralExpression(node.left)) {
24449 node.transformFlags |=
24450 1024 /* TransformFlags.ContainsES2015 */ |
24451 4096 /* TransformFlags.ContainsDestructuringAssignment */ |
24452 propagateAssignmentPatternFlags(node.left);
24453 }
24454 }
24455 else if (operatorKind === 42 /* SyntaxKind.AsteriskAsteriskToken */ || operatorKind === 67 /* SyntaxKind.AsteriskAsteriskEqualsToken */) {
24456 node.transformFlags |= 512 /* TransformFlags.ContainsES2016 */;
24457 }
24458 else if (ts.isLogicalOrCoalescingAssignmentOperator(operatorKind)) {
24459 node.transformFlags |= 16 /* TransformFlags.ContainsES2021 */;
24460 }
24461 return node;
24462 }
24463 function propagateAssignmentPatternFlags(node) {
24464 if (node.transformFlags & 32768 /* TransformFlags.ContainsObjectRestOrSpread */)
24465 return 32768 /* TransformFlags.ContainsObjectRestOrSpread */;

Callers 2

createNodeFactoryFunction · 0.85
updateBinaryExpressionFunction · 0.85

Calls 4

createBaseExpressionFunction · 0.85
asTokenFunction · 0.85
propagateChildFlagsFunction · 0.85

Tested by

no test coverage detected