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

Function visitPreOrPostfixUnaryExpression

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

Source from the content-addressed store, hash-verified

94637 return ts.visitEachChild(node, visitor, context);
94638 }
94639 function visitPreOrPostfixUnaryExpression(node, valueIsDiscarded) {
94640 if (node.operator === 45 /* SyntaxKind.PlusPlusToken */ || node.operator === 46 /* SyntaxKind.MinusMinusToken */) {
94641 if (shouldTransformPrivateElementsOrClassStaticBlocks && ts.isPrivateIdentifierPropertyAccessExpression(node.operand)) {
94642 var info = void 0;
94643 if (info = accessPrivateIdentifier(node.operand.name)) {
94644 var receiver = ts.visitNode(node.operand.expression, visitor, ts.isExpression);
94645 var _a = createCopiableReceiverExpr(receiver), readExpression = _a.readExpression, initializeExpression = _a.initializeExpression;
94646 var expression = createPrivateIdentifierAccess(info, readExpression);
94647 var temp = ts.isPrefixUnaryExpression(node) || valueIsDiscarded ? undefined : factory.createTempVariable(hoistVariableDeclaration);
94648 expression = ts.expandPreOrPostfixIncrementOrDecrementExpression(factory, node, expression, hoistVariableDeclaration, temp);
94649 expression = createPrivateIdentifierAssignment(info, initializeExpression || readExpression, expression, 63 /* SyntaxKind.EqualsToken */);
94650 ts.setOriginalNode(expression, node);
94651 ts.setTextRange(expression, node);
94652 if (temp) {
94653 expression = factory.createComma(expression, temp);
94654 ts.setTextRange(expression, node);
94655 }
94656 return expression;
94657 }
94658 }
94659 else if (shouldTransformSuperInStaticInitializers &&
94660 ts.isSuperProperty(node.operand) &&
94661 currentStaticPropertyDeclarationOrStaticBlock &&
94662 currentClassLexicalEnvironment) {
94663 // converts `++super.a` into `(Reflect.set(_baseTemp, "a", (_a = Reflect.get(_baseTemp, "a", _classTemp), _b = ++_a), _classTemp), _b)`
94664 // converts `++super[f()]` into `(Reflect.set(_baseTemp, _a = f(), (_b = Reflect.get(_baseTemp, _a, _classTemp), _c = ++_b), _classTemp), _c)`
94665 // converts `--super.a` into `(Reflect.set(_baseTemp, "a", (_a = Reflect.get(_baseTemp, "a", _classTemp), _b = --_a), _classTemp), _b)`
94666 // converts `--super[f()]` into `(Reflect.set(_baseTemp, _a = f(), (_b = Reflect.get(_baseTemp, _a, _classTemp), _c = --_b), _classTemp), _c)`
94667 // converts `super.a++` into `(Reflect.set(_baseTemp, "a", (_a = Reflect.get(_baseTemp, "a", _classTemp), _b = _a++), _classTemp), _b)`
94668 // converts `super[f()]++` into `(Reflect.set(_baseTemp, _a = f(), (_b = Reflect.get(_baseTemp, _a, _classTemp), _c = _b++), _classTemp), _c)`
94669 // converts `super.a--` into `(Reflect.set(_baseTemp, "a", (_a = Reflect.get(_baseTemp, "a", _classTemp), _b = _a--), _classTemp), _b)`
94670 // converts `super[f()]--` into `(Reflect.set(_baseTemp, _a = f(), (_b = Reflect.get(_baseTemp, _a, _classTemp), _c = _b--), _classTemp), _c)`
94671 var classConstructor = currentClassLexicalEnvironment.classConstructor, superClassReference = currentClassLexicalEnvironment.superClassReference, facts = currentClassLexicalEnvironment.facts;
94672 if (facts & 1 /* ClassFacts.ClassWasDecorated */) {
94673 var operand = visitInvalidSuperProperty(node.operand);
94674 return ts.isPrefixUnaryExpression(node) ?
94675 factory.updatePrefixUnaryExpression(node, operand) :
94676 factory.updatePostfixUnaryExpression(node, operand);
94677 }
94678 if (classConstructor && superClassReference) {
94679 var setterName = void 0;
94680 var getterName = void 0;
94681 if (ts.isPropertyAccessExpression(node.operand)) {
94682 if (ts.isIdentifier(node.operand.name)) {
94683 getterName = setterName = factory.createStringLiteralFromNode(node.operand.name);
94684 }
94685 }
94686 else {
94687 if (ts.isSimpleInlineableExpression(node.operand.argumentExpression)) {
94688 getterName = setterName = node.operand.argumentExpression;
94689 }
94690 else {
94691 getterName = factory.createTempVariable(hoistVariableDeclaration);
94692 setterName = factory.createAssignment(getterName, ts.visitNode(node.operand.argumentExpression, visitor, ts.isExpression));
94693 }
94694 }
94695 if (setterName && getterName) {
94696 var expression = factory.createReflectGetCall(superClassReference, getterName, classConstructor);

Callers 1

visitorWorkerFunction · 0.85

Calls 7

accessPrivateIdentifierFunction · 0.85
createExportExpressionFunction · 0.85
getExportsFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…