6.0.0
I'm extremely stupid and didn't commit as I go. To anyone reading this I'm extremely sorry. A lot of these changes are very broad and I plan on releasing Babel 6.0.0 today live on stage at Ember Camp London so I'm afraid I couldn't wait. If you're ever in London I'll buy you a beer (or assorted beverage!) to make up for it, also I'll kiss your feet and give you a back massage, maybe.
This commit is contained in:
@@ -1,11 +1,15 @@
|
||||
{
|
||||
"name": "babel-plugin-transform-es2015-object-super",
|
||||
"version": "1.0.0",
|
||||
"version": "5.10.32",
|
||||
"description": "Compile ES2015 object super to ES5",
|
||||
"repository": "babel/babel",
|
||||
"license": "MIT",
|
||||
"main": "lib/index.js",
|
||||
"keywords": [
|
||||
"babel-plugin"
|
||||
]
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"babel-helper-replace-supers": "^5.0.0",
|
||||
"babel-runtime": "^5.10.32"
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,47 @@
|
||||
export default function () {
|
||||
import ReplaceSupers from "babel-helper-replace-supers";
|
||||
|
||||
export default function ({ types: t }) {
|
||||
function Property(path, node, scope, getObjectRef, file) {
|
||||
let replaceSupers = new ReplaceSupers({
|
||||
getObjectRef: getObjectRef,
|
||||
methodNode: node,
|
||||
methodPath: path,
|
||||
isStatic: true,
|
||||
scope: scope,
|
||||
file: file
|
||||
});
|
||||
|
||||
replaceSupers.replace();
|
||||
}
|
||||
|
||||
let CONTAINS_SUPER = Symbol();
|
||||
|
||||
return {
|
||||
visitor: {
|
||||
// your visitor methods go here
|
||||
Super(path) {
|
||||
let parentObj = path.findParent((path) => path.isObjectExpression());
|
||||
if (parentObj) parentObj.node[CONTAINS_SUPER] = true;
|
||||
},
|
||||
|
||||
ObjectExpression: {
|
||||
exit(path, file) {
|
||||
if (!path.node[CONTAINS_SUPER]) return;
|
||||
|
||||
let objectRef;
|
||||
let getObjectRef = () => objectRef = objectRef || path.scope.generateUidIdentifier("obj");
|
||||
|
||||
let propPaths: Array = path.get("properties");
|
||||
for (let propPath of propPaths) {
|
||||
if (propPath.isObjectProperty()) propPath = propPath.get("value");
|
||||
Property(propPath, propPath.node, path.scope, getObjectRef, file);
|
||||
}
|
||||
|
||||
if (objectRef) {
|
||||
path.scope.push({ id: objectRef });
|
||||
path.replaceWith(t.assignmentExpression("=", objectRef, path.node));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user