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

Function visitExponentiationAssignmentExpression

test/fixtures/snapshot/typescript.js:98404–98428  ·  view source on GitHub ↗
(node)

Source from the content-addressed store, hash-verified

98402 }
98403 }
98404 function visitExponentiationAssignmentExpression(node) {
98405 var target;
98406 var value;
98407 var left = ts.visitNode(node.left, visitor, ts.isExpression);
98408 var right = ts.visitNode(node.right, visitor, ts.isExpression);
98409 if (ts.isElementAccessExpression(left)) {
98410 // Transforms `a[x] **= b` into `(_a = a)[_x = x] = Math.pow(_a[_x], b)`
98411 var expressionTemp = factory.createTempVariable(hoistVariableDeclaration);
98412 var argumentExpressionTemp = factory.createTempVariable(hoistVariableDeclaration);
98413 target = ts.setTextRange(factory.createElementAccessExpression(ts.setTextRange(factory.createAssignment(expressionTemp, left.expression), left.expression), ts.setTextRange(factory.createAssignment(argumentExpressionTemp, left.argumentExpression), left.argumentExpression)), left);
98414 value = ts.setTextRange(factory.createElementAccessExpression(expressionTemp, argumentExpressionTemp), left);
98415 }
98416 else if (ts.isPropertyAccessExpression(left)) {
98417 // Transforms `a.x **= b` into `(_a = a).x = Math.pow(_a.x, b)`
98418 var expressionTemp = factory.createTempVariable(hoistVariableDeclaration);
98419 target = ts.setTextRange(factory.createPropertyAccessExpression(ts.setTextRange(factory.createAssignment(expressionTemp, left.expression), left.expression), left.name), left);
98420 value = ts.setTextRange(factory.createPropertyAccessExpression(expressionTemp, left.name), left);
98421 }
98422 else {
98423 // Transforms `a **= b` into `a = Math.pow(a, b)`
98424 target = left;
98425 value = left;
98426 }
98427 return ts.setTextRange(factory.createAssignment(target, ts.setTextRange(factory.createGlobalMethodCall("Math", "pow", [value, right]), node)), node);
98428 }
98429 function visitExponentiationExpression(node) {
98430 // Transforms `a ** b` into `Math.pow(a, b)`
98431 var left = ts.visitNode(node.left, visitor, ts.isExpression);

Callers 1

visitBinaryExpressionFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected