| | |
| | | logicalExpression, |
| | | memberExpression, |
| | | nullLiteral, |
| | | numericLiteral, |
| | | optionalCallExpression, |
| | | optionalMemberExpression, |
| | | sequenceExpression, |
| | | unaryExpression |
| | | updateExpression |
| | | } = _t__namespace; |
| | | |
| | | class AssignmentMemoiser { |
| | |
| | | prefix |
| | | } = parent; |
| | | this.memoise(member, 2); |
| | | const value = binaryExpression(operator[0], unaryExpression("+", this.get(member)), numericLiteral(1)); |
| | | const ref = scope.generateUidIdentifierBasedOnNode(node); |
| | | scope.push({ |
| | | id: ref |
| | | }); |
| | | const seq = [assignmentExpression("=", cloneNode(ref), this.get(member))]; |
| | | |
| | | if (prefix) { |
| | | seq.push(updateExpression(operator, cloneNode(ref), prefix)); |
| | | const value = sequenceExpression(seq); |
| | | parentPath.replaceWith(this.set(member, value)); |
| | | return; |
| | | } else { |
| | | const { |
| | | scope |
| | | } = member; |
| | | const ref = scope.generateUidIdentifierBasedOnNode(node); |
| | | const ref2 = scope.generateUidIdentifierBasedOnNode(node); |
| | | scope.push({ |
| | | id: ref |
| | | id: ref2 |
| | | }); |
| | | value.left = assignmentExpression("=", cloneNode(ref), value.left); |
| | | parentPath.replaceWith(sequenceExpression([this.set(member, value), cloneNode(ref)])); |
| | | seq.push(assignmentExpression("=", cloneNode(ref2), updateExpression(operator, cloneNode(ref), prefix)), cloneNode(ref)); |
| | | const value = sequenceExpression(seq); |
| | | parentPath.replaceWith(sequenceExpression([this.set(member, value), cloneNode(ref2)])); |
| | | return; |
| | | } |
| | | |
| | | return; |
| | | } |
| | | |
| | | if (parentPath.isAssignmentExpression({ |