| 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 = {})); |