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:
35
packages/babel-plugin-transform-es2015-classes/src/loose.js
Normal file
35
packages/babel-plugin-transform-es2015-classes/src/loose.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import nameFunction from "babel-helper-function-name";
|
||||
import VanillaTransformer from "./vanilla";
|
||||
import * as t from "babel-types";
|
||||
|
||||
export default class LooseClassTransformer extends VanillaTransformer {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.isLoose = true;
|
||||
}
|
||||
|
||||
_processMethod(node, scope) {
|
||||
if (!node.decorators) {
|
||||
// use assignments instead of define properties for loose classes
|
||||
|
||||
let classRef = this.classRef;
|
||||
if (!node.static) classRef = t.memberExpression(classRef, t.identifier("prototype"));
|
||||
let methodName = t.memberExpression(classRef, node.key, node.computed || t.isLiteral(node.key));
|
||||
|
||||
let func = t.functionExpression(null, node.params, node.body);
|
||||
let key = t.toComputedKey(node, node.key);
|
||||
if (t.isStringLiteral(key)) {
|
||||
func = nameFunction({
|
||||
node: func,
|
||||
id: key,
|
||||
scope
|
||||
});
|
||||
}
|
||||
|
||||
let expr = t.expressionStatement(t.assignmentExpression("=", methodName, func));
|
||||
t.inheritsComments(expr, node);
|
||||
this.body.push(expr);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user