(node, valueIsDiscarded)
| 94790 | } |
| 94791 | } |
| 94792 | function visitBinaryExpression(node, valueIsDiscarded) { |
| 94793 | if (ts.isDestructuringAssignment(node)) { |
| 94794 | var savedPendingExpressions = pendingExpressions; |
| 94795 | pendingExpressions = undefined; |
| 94796 | node = factory.updateBinaryExpression(node, ts.visitNode(node.left, visitorDestructuringTarget), node.operatorToken, ts.visitNode(node.right, visitor)); |
| 94797 | var expr = ts.some(pendingExpressions) ? |
| 94798 | factory.inlineExpressions(ts.compact(__spreadArray(__spreadArray([], pendingExpressions, true), [node], false))) : |
| 94799 | node; |
| 94800 | pendingExpressions = savedPendingExpressions; |
| 94801 | return expr; |
| 94802 | } |
| 94803 | if (ts.isAssignmentExpression(node)) { |
| 94804 | if (shouldTransformPrivateElementsOrClassStaticBlocks && ts.isPrivateIdentifierPropertyAccessExpression(node.left)) { |
| 94805 | var info = accessPrivateIdentifier(node.left.name); |
| 94806 | if (info) { |
| 94807 | return ts.setTextRange(ts.setOriginalNode(createPrivateIdentifierAssignment(info, node.left.expression, node.right, node.operatorToken.kind), node), node); |
| 94808 | } |
| 94809 | } |
| 94810 | else if (shouldTransformSuperInStaticInitializers && |
| 94811 | ts.isSuperProperty(node.left) && |
| 94812 | currentStaticPropertyDeclarationOrStaticBlock && |
| 94813 | currentClassLexicalEnvironment) { |
| 94814 | var classConstructor = currentClassLexicalEnvironment.classConstructor, superClassReference = currentClassLexicalEnvironment.superClassReference, facts = currentClassLexicalEnvironment.facts; |
| 94815 | if (facts & 1 /* ClassFacts.ClassWasDecorated */) { |
| 94816 | return factory.updateBinaryExpression(node, visitInvalidSuperProperty(node.left), node.operatorToken, ts.visitNode(node.right, visitor, ts.isExpression)); |
| 94817 | } |
| 94818 | if (classConstructor && superClassReference) { |
| 94819 | var setterName = ts.isElementAccessExpression(node.left) ? ts.visitNode(node.left.argumentExpression, visitor, ts.isExpression) : |
| 94820 | ts.isIdentifier(node.left.name) ? factory.createStringLiteralFromNode(node.left.name) : |
| 94821 | undefined; |
| 94822 | if (setterName) { |
| 94823 | // converts `super.x = 1` into `(Reflect.set(_baseTemp, "x", _a = 1, _classTemp), _a)` |
| 94824 | // converts `super[f()] = 1` into `(Reflect.set(_baseTemp, f(), _a = 1, _classTemp), _a)` |
| 94825 | // converts `super.x += 1` into `(Reflect.set(_baseTemp, "x", _a = Reflect.get(_baseTemp, "x", _classtemp) + 1, _classTemp), _a)` |
| 94826 | // converts `super[f()] += 1` into `(Reflect.set(_baseTemp, _a = f(), _b = Reflect.get(_baseTemp, _a, _classtemp) + 1, _classTemp), _b)` |
| 94827 | var expression = ts.visitNode(node.right, visitor, ts.isExpression); |
| 94828 | if (ts.isCompoundAssignment(node.operatorToken.kind)) { |
| 94829 | var getterName = setterName; |
| 94830 | if (!ts.isSimpleInlineableExpression(setterName)) { |
| 94831 | getterName = factory.createTempVariable(hoistVariableDeclaration); |
| 94832 | setterName = factory.createAssignment(getterName, setterName); |
| 94833 | } |
| 94834 | var superPropertyGet = factory.createReflectGetCall(superClassReference, getterName, classConstructor); |
| 94835 | ts.setOriginalNode(superPropertyGet, node.left); |
| 94836 | ts.setTextRange(superPropertyGet, node.left); |
| 94837 | expression = factory.createBinaryExpression(superPropertyGet, ts.getNonAssignmentOperatorForCompoundAssignment(node.operatorToken.kind), expression); |
| 94838 | ts.setTextRange(expression, node); |
| 94839 | } |
| 94840 | var temp = valueIsDiscarded ? undefined : factory.createTempVariable(hoistVariableDeclaration); |
| 94841 | if (temp) { |
| 94842 | expression = factory.createAssignment(temp, expression); |
| 94843 | ts.setTextRange(temp, node); |
| 94844 | } |
| 94845 | expression = factory.createReflectSetCall(superClassReference, setterName, expression, classConstructor); |
| 94846 | ts.setOriginalNode(expression, node); |
| 94847 | ts.setTextRange(expression, node); |
| 94848 | if (temp) { |
| 94849 | expression = factory.createComma(expression, temp); |
no test coverage detected
searching dependent graphs…