summaryrefslogtreecommitdiff
path: root/node_modules/@babel/plugin-transform-classes/lib/transformClass.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@babel/plugin-transform-classes/lib/transformClass.js')
-rw-r--r--node_modules/@babel/plugin-transform-classes/lib/transformClass.js27
1 files changed, 15 insertions, 12 deletions
diff --git a/node_modules/@babel/plugin-transform-classes/lib/transformClass.js b/node_modules/@babel/plugin-transform-classes/lib/transformClass.js
index 0753a868..460fef5a 100644
--- a/node_modules/@babel/plugin-transform-classes/lib/transformClass.js
+++ b/node_modules/@babel/plugin-transform-classes/lib/transformClass.js
@@ -7,10 +7,9 @@ exports.default = transformClass;
var _helperFunctionName = require("@babel/helper-function-name");
var _helperReplaceSupers = require("@babel/helper-replace-supers");
var _helperEnvironmentVisitor = require("@babel/helper-environment-visitor");
-var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression");
var _core = require("@babel/core");
var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
-var _inlineCreateSuperHelpers = require("./inline-createSuper-helpers.js");
+var _inlineCallSuperHelpers = require("./inline-callSuper-helpers.js");
function buildConstructor(classRef, constructorBody, node) {
const func = _core.types.functionDeclaration(_core.types.cloneNode(classRef), [], constructorBody);
_core.types.inherits(func, node);
@@ -25,7 +24,6 @@ function transformClass(path, file, builtinClasses, isLoose, assumptions, suppor
file: undefined,
classId: undefined,
classRef: undefined,
- superFnId: undefined,
superName: null,
superReturns: [],
isDerived: false,
@@ -190,7 +188,19 @@ function transformClass(path, file, builtinClasses, isLoose, assumptions, suppor
}
call = _core.types.logicalExpression("||", bareSuperNode, _core.types.thisExpression());
} else {
- call = (0, _helperOptimiseCallExpression.default)(_core.types.cloneNode(classState.superFnId), _core.types.thisExpression(), bareSuperNode.arguments, false);
+ var _bareSuperNode$argume;
+ const args = [_core.types.thisExpression(), _core.types.cloneNode(classState.classRef)];
+ if ((_bareSuperNode$argume = bareSuperNode.arguments) != null && _bareSuperNode$argume.length) {
+ const bareSuperNodeArguments = bareSuperNode.arguments;
+ if (bareSuperNodeArguments.length === 1 && _core.types.isSpreadElement(bareSuperNodeArguments[0]) && _core.types.isIdentifier(bareSuperNodeArguments[0].argument, {
+ name: "arguments"
+ })) {
+ args.push(bareSuperNodeArguments[0].argument);
+ } else {
+ args.push(_core.types.arrayExpression(bareSuperNodeArguments));
+ }
+ }
+ call = _core.types.callExpression((0, _inlineCallSuperHelpers.default)(classState.file), args);
}
if (bareSuper.parentPath.isExpressionStatement() && bareSuper.parentPath.container === body.node.body && body.node.body.length - 1 === bareSuper.parentPath.key) {
if (classState.superThises.length) {
@@ -384,14 +394,7 @@ function transformClass(path, file, builtinClasses, isLoose, assumptions, suppor
}
function pushInheritsToBody() {
if (!classState.isDerived || classState.pushedInherits) return;
- const superFnId = path.scope.generateUidIdentifier("super");
- setState({
- pushedInherits: true,
- superFnId
- });
- if (!assumptions.superIsCallableConstructor) {
- classState.body.unshift(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(superFnId, _core.types.callExpression((0, _inlineCreateSuperHelpers.default)(classState.file), [_core.types.cloneNode(classState.classRef)]))]));
- }
+ classState.pushedInherits = true;
classState.body.unshift(_core.types.expressionStatement(_core.types.callExpression(classState.file.addHelper(classState.isLoose ? "inheritsLoose" : "inherits"), [_core.types.cloneNode(classState.classRef), _core.types.cloneNode(classState.superName)])));
}
function extractDynamicKeys() {