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

Function transformLogicalAssignment

test/fixtures/snapshot/typescript.js:97625–97649  ·  view source on GitHub ↗
(binaryExpression)

Source from the content-addressed store, hash-verified

97623 }
97624 }
97625 function transformLogicalAssignment(binaryExpression) {
97626 var operator = binaryExpression.operatorToken;
97627 var nonAssignmentOperator = ts.getNonAssignmentOperatorForCompoundAssignment(operator.kind);
97628 var left = ts.skipParentheses(ts.visitNode(binaryExpression.left, visitor, ts.isLeftHandSideExpression));
97629 var assignmentTarget = left;
97630 var right = ts.skipParentheses(ts.visitNode(binaryExpression.right, visitor, ts.isExpression));
97631 if (ts.isAccessExpression(left)) {
97632 var propertyAccessTargetSimpleCopiable = ts.isSimpleCopiableExpression(left.expression);
97633 var propertyAccessTarget = propertyAccessTargetSimpleCopiable ? left.expression :
97634 factory.createTempVariable(hoistVariableDeclaration);
97635 var propertyAccessTargetAssignment = propertyAccessTargetSimpleCopiable ? left.expression : factory.createAssignment(propertyAccessTarget, left.expression);
97636 if (ts.isPropertyAccessExpression(left)) {
97637 assignmentTarget = factory.createPropertyAccessExpression(propertyAccessTarget, left.name);
97638 left = factory.createPropertyAccessExpression(propertyAccessTargetAssignment, left.name);
97639 }
97640 else {
97641 var elementAccessArgumentSimpleCopiable = ts.isSimpleCopiableExpression(left.argumentExpression);
97642 var elementAccessArgument = elementAccessArgumentSimpleCopiable ? left.argumentExpression :
97643 factory.createTempVariable(hoistVariableDeclaration);
97644 assignmentTarget = factory.createElementAccessExpression(propertyAccessTarget, elementAccessArgument);
97645 left = factory.createElementAccessExpression(propertyAccessTargetAssignment, elementAccessArgumentSimpleCopiable ? left.argumentExpression : factory.createAssignment(elementAccessArgument, left.argumentExpression));
97646 }
97647 }
97648 return factory.createBinaryExpression(left, nonAssignmentOperator, factory.createParenthesizedExpression(factory.createAssignment(assignmentTarget, right)));
97649 }
97650 }
97651 ts.transformES2021 = transformES2021;
97652})(ts || (ts = {}));

Callers 1

visitorFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected