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

Function visitBinaryExpression

test/fixtures/snapshot/typescript.js:94792–94861  ·  view source on GitHub ↗
(node, valueIsDiscarded)

Source from the content-addressed store, hash-verified

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);

Callers 4

visitorWorkerFunction · 0.85
visitorFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…