(node, valueIsDiscarded)
| 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); |
no test coverage detected
searching dependent graphs…