diff options
Diffstat (limited to 'tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js')
-rw-r--r-- | tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js | 88 |
1 files changed, 41 insertions, 47 deletions
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js index 9d1e1be577..90680f58a4 100644 --- a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js +++ b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js @@ -17,21 +17,45 @@ const { unaryExpression } = _t; const simpleAssignmentVisitor = { - UpdateExpression: { + AssignmentExpression: { exit(path) { const { scope, - bindingNames, - includeUpdateExpression + seen, + bindingNames } = this; - if (!includeUpdateExpression) { + if (path.node.operator === "=") return; + if (seen.has(path.node)) return; + seen.add(path.node); + const left = path.get("left"); + if (!left.isIdentifier()) return; + const localName = left.node.name; + if (!bindingNames.has(localName)) return; + if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { return; } + const operator = path.node.operator.slice(0, -1); + if (LOGICAL_OPERATORS.includes(operator)) { + path.replaceWith(logicalExpression(operator, path.node.left, assignmentExpression("=", cloneNode(path.node.left), path.node.right))); + } else { + path.node.right = binaryExpression(operator, cloneNode(path.node.left), path.node.right); + path.node.operator = "="; + } + } + } +}; +{ + simpleAssignmentVisitor.UpdateExpression = { + exit(path) { + if (!this.includeUpdateExpression) return; + const { + scope, + bindingNames + } = this; const arg = path.get("argument"); if (!arg.isIdentifier()) return; const localName = arg.node.name; if (!bindingNames.has(localName)) return; - if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { return; } @@ -46,52 +70,22 @@ const simpleAssignmentVisitor = { path.scope.push({ id: old }); - const binary = binaryExpression(path.node.operator[0], identifier(varName), - numericLiteral(1)); - + const binary = binaryExpression(path.node.operator[0], identifier(varName), numericLiteral(1)); path.replaceWith(sequenceExpression([assignmentExpression("=", identifier(varName), unaryExpression("+", arg.node)), assignmentExpression("=", cloneNode(arg.node), binary), identifier(varName)])); } } - }, - AssignmentExpression: { - exit(path) { - const { - scope, - seen, - bindingNames - } = this; - if (path.node.operator === "=") return; - if (seen.has(path.node)) return; - seen.add(path.node); - const left = path.get("left"); - if (!left.isIdentifier()) return; - - const localName = left.node.name; - if (!bindingNames.has(localName)) return; - - if (scope.getBinding(localName) !== path.scope.getBinding(localName)) { - return; - } - const operator = path.node.operator.slice(0, -1); - if (LOGICAL_OPERATORS.includes(operator)) { - path.replaceWith(logicalExpression( - operator, path.node.left, assignmentExpression("=", cloneNode(path.node.left), path.node.right))); - } else { - path.node.right = binaryExpression( - operator, cloneNode(path.node.left), path.node.right); - path.node.operator = "="; - } - } + }; +} +function simplifyAccess(path, bindingNames) { + { + var _arguments$; + path.traverse(simpleAssignmentVisitor, { + scope: path.scope, + bindingNames, + seen: new WeakSet(), + includeUpdateExpression: (_arguments$ = arguments[2]) != null ? _arguments$ : true + }); } -}; -function simplifyAccess(path, bindingNames, -includeUpdateExpression = true) { - path.traverse(simpleAssignmentVisitor, { - scope: path.scope, - bindingNames, - seen: new WeakSet(), - includeUpdateExpression - }); } //# sourceMappingURL=index.js.map |