rename es5-property-methods-assignment to es6-property-method-assignment and add function ids to object methods and remap them if they contain a reference to themselves - fixes #308

This commit is contained in:
Sebastian McKenzie
2015-01-03 20:11:00 +11:00
parent 1de94a2705
commit 0e9eac610b
13 changed files with 78 additions and 46 deletions

View File

@@ -0,0 +1,11 @@
(function (FUNCTION_KEY) {
var WRAPPER_KEY = function FUNCTION_ID() {
return FUNCTION_KEY.apply(this, arguments);
};
WRAPPER_KEY.toString = function () {
return FUNCTION_KEY.toString();
};
return WRAPPER_KEY;
})(FUNCTION)

View File

@@ -66,7 +66,7 @@ _.each({
exponentiationOperator: require("./transformers/es7-exponentiation-operator"),
spread: require("./transformers/es6-spread"),
templateLiterals: require("./transformers/es6-template-literals"),
propertyMethodAssignment: require("./transformers/es5-property-method-assignment"),
propertyMethodAssignment: require("./transformers/es6-property-method-assignment"),
destructuring: require("./transformers/es6-destructuring"),
defaultParameters: require("./transformers/es6-default-parameters"),
forOf: require("./transformers/es6-for-of"),
@@ -88,6 +88,7 @@ _.each({
_moduleFormatter: require("./transformers/_module-formatter"),
useStrict: require("./transformers/use-strict"),
protoToAssign: require("./transformers/optional-proto-to-assign"),
coreAliasing: require("./transformers/optional-core-aliasing"),
undefinedToVoid: require("./transformers/optional-undefined-to-void"),

View File

@@ -1,41 +0,0 @@
var util = require("../../util");
var t = require("../../types");
exports.Property = function (node) {
if (node.method) node.method = false;
};
exports.ObjectExpression = function (node, parent, file) {
var mutatorMap = {};
var hasAny = false;
node.properties = node.properties.filter(function (prop) {
if (prop.kind === "get" || prop.kind === "set") {
hasAny = true;
util.pushMutatorMap(mutatorMap, prop.key, prop.kind, prop.value);
return false;
} else {
return true;
}
});
if (!hasAny) return;
if (node.properties.length) {
var objId = t.getUid(parent, file);
return util.template("object-define-properties-closure", {
KEY: objId,
OBJECT: node,
CONTENT: util.template("object-define-properties", {
OBJECT: objId,
PROPS: util.buildDefineProperties(mutatorMap)
})
});
} else {
return util.template("object-define-properties", {
OBJECT: node,
PROPS: util.buildDefineProperties(mutatorMap)
});
}
};

View File

@@ -1,8 +1,8 @@
var obj = {
get foo() {
return 5 + 5;
return 5 + 5;
},
set foo(value) {
this._foo = value;
this._foo = value;
}
};

View File

@@ -0,0 +1,19 @@
var bar = {
foo() {
console.log(foo);
}
};
var bar = {
foo() {
var foo = 41;
console.log(foo);
}
};
var foobar = 123;
var foobar2 = {
foobar() {
return foobar;
}
};

View File

@@ -0,0 +1,42 @@
"use strict";
var bar = {
foo: (function (_foo) {
var _fooWrapper = function foo() {
return _foo.apply(this, arguments);
};
_fooWrapper.toString = function () {
return _foo.toString();
};
return _fooWrapper;
})(function () {
console.log(foo);
})
};
var bar = {
foo: function foo() {
var foo = 41;
console.log(foo);
}
};
var foobar = 123;
var foobar2 = {
foobar: (function (_foobar) {
var _foobarWrapper = function foobar() {
return _foobar.apply(this, arguments);
};
_foobarWrapper.toString = function () {
return _foobar.toString();
};
return _foobarWrapper;
})(function () {
console.log(foobar);
})
};

View File

@@ -1,7 +1,7 @@
"use strict";
var obj = {
method: function () {
method: function method() {
return 5 + 5;
}
};