add types.appendToMemberExpression and types.prependToMemberExpression helpers
This commit is contained in:
@@ -276,9 +276,7 @@ Class.prototype.replaceInstanceSuperReferences = function (methodNode) {
|
||||
if (callee.object.name !== "super") return;
|
||||
|
||||
// super.test(); -> ClassName.prototype.MethodName.call(this);
|
||||
callee.object = t.memberExpression(callee.object, callee.property, callee.computed);
|
||||
callee.computed = false;
|
||||
callee.property = t.identifier("call");
|
||||
t.appendToMemberExpression(callee, t.identifier("call"));
|
||||
node.arguments.unshift(t.thisExpression());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,9 +87,7 @@ exports.CallExpression = function (node, parent, file, scope) {
|
||||
callee.object = t.assignmentExpression("=", temp, callee.object);
|
||||
}
|
||||
|
||||
callee.object = t.memberExpression(callee.object, callee.property, callee.computed);
|
||||
callee.computed = false;
|
||||
callee.property = t.identifier("apply");
|
||||
t.appendToMemberExpression(callee, t.identifier("apply"));
|
||||
} else {
|
||||
node.callee = t.memberExpression(node.callee, t.identifier("apply"));
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ exports.ast = {
|
||||
|
||||
if (!node.computed && coreHas(obj) && _.has(core[obj.name], prop.name)) {
|
||||
this.stop();
|
||||
return t.memberExpression(t.memberExpression(file._coreId, node.object), node.property, node.computed);
|
||||
return t.prependToMemberExpression(node, file._coreId);
|
||||
}
|
||||
} else if (t.isIdentifier(node) && !t.isMemberExpression(parent) && t.isReferenced(node, parent) && coreHas(node)) {
|
||||
// new Promise -> new _core.Promise
|
||||
|
||||
@@ -118,6 +118,20 @@ t.shallowEqual = function (actual, expected) {
|
||||
|
||||
//
|
||||
|
||||
t.appendToMemberExpression = function (member, append, computed) {
|
||||
member.object = t.memberExpression(member.object, member.property, member.computed);
|
||||
member.property = append;
|
||||
member.computed = !!computed;
|
||||
return member;
|
||||
};
|
||||
|
||||
t.prependToMemberExpression = function (member, append) {
|
||||
member.object = t.memberExpression(append, member.object);
|
||||
return member;
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
t.isDynamic = function (node) {
|
||||
if (t.isExpressionStatement(node)) {
|
||||
return t.isDynamic(node.expression);
|
||||
@@ -130,7 +144,6 @@ t.isDynamic = function (node) {
|
||||
}
|
||||
};
|
||||
|
||||
// todo: https://github.com/eventualbuddha/ast-util/blob/9bf91c5ce8/lib/index.js#L454-L507
|
||||
t.isReferenced = function (node, parent) {
|
||||
// we're a property key and we aren't computed so we aren't referenced
|
||||
if (t.isProperty(parent) && parent.key === node && !parent.computed) return false;
|
||||
@@ -152,6 +165,12 @@ t.isReferenced = function (node, parent) {
|
||||
return false;
|
||||
};
|
||||
|
||||
t.isValidIdentifier = function (name) {
|
||||
return _.isString(name) && esutils.keyword.isIdentifierName(name) && !esutils.keyword.isKeywordES6(name, true);
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
t.toIdentifier = function (name) {
|
||||
if (t.isIdentifier(name)) return name.name;
|
||||
|
||||
@@ -172,10 +191,6 @@ t.toIdentifier = function (name) {
|
||||
return name || '_';
|
||||
};
|
||||
|
||||
t.isValidIdentifier = function (name) {
|
||||
return _.isString(name) && esutils.keyword.isIdentifierName(name) && !esutils.keyword.isKeywordES6(name, true);
|
||||
};
|
||||
|
||||
t.ensureBlock = function (node, key) {
|
||||
key = key || "body";
|
||||
node[key] = t.toBlock(node[key], node);
|
||||
@@ -234,6 +249,8 @@ t.toBlock = function (node, parent) {
|
||||
return t.blockStatement(node);
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
t.getUid = function (parent, file, scope) {
|
||||
var node = parent;
|
||||
|
||||
@@ -327,6 +344,8 @@ t.getIds.arrays = {
|
||||
ObjectPattern: ["properties"]
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
t.isLet = function (node) {
|
||||
return t.isVariableDeclaration(node) && (node.kind !== "var" || node._let);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user