From cfff7aa6fb257cf39a85e7b06a5c49e8501ea32b Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 2 Apr 2015 02:37:00 +1100 Subject: [PATCH] simplfy function name inference wrapper - closes #1002 --- .../transformation/helpers/name-method.js | 5 ++-- ...rty-method-assignment-wrapper-generator.js | 14 +++++----- .../property-method-assignment-wrapper.js | 12 ++++----- .../spec.function-name/assignment/expected.js | 14 +++++----- .../spec.function-name/object/expected.js | 14 +++++----- .../own-bindings/expected.js | 26 +++++++++---------- .../self-reference/expected.js | 14 +++++----- 7 files changed, 49 insertions(+), 50 deletions(-) diff --git a/src/babel/transformation/helpers/name-method.js b/src/babel/transformation/helpers/name-method.js index a94e21e806..5839b0df1b 100644 --- a/src/babel/transformation/helpers/name-method.js +++ b/src/babel/transformation/helpers/name-method.js @@ -25,13 +25,12 @@ var wrap = function (state, method, id, scope) { var template = util.template(templateName, { FUNCTION: method, FUNCTION_ID: id, - FUNCTION_KEY: scope.generateUidIdentifier(id.name), - WRAPPER_KEY: scope.generateUidIdentifier(id.name + "Wrapper") + FUNCTION_KEY: scope.generateUidIdentifier(id.name) }); // shim in dummy params to retain function arity, if you try to read the // source then you'll get the original since it's proxied so it's all good - var params = template.callee.body.body[0].declarations[0].init.params; + var params = template.callee.body.body[0].params; for (var i = 0, len = getFunctionArity(method); i < len; i++) { params.push(scope.generateUidIdentifier("x")); } diff --git a/src/babel/transformation/templates/property-method-assignment-wrapper-generator.js b/src/babel/transformation/templates/property-method-assignment-wrapper-generator.js index fb59a89ae9..ac47e5a639 100644 --- a/src/babel/transformation/templates/property-method-assignment-wrapper-generator.js +++ b/src/babel/transformation/templates/property-method-assignment-wrapper-generator.js @@ -1,11 +1,11 @@ (function (FUNCTION_KEY) { - var WRAPPER_KEY = function* FUNCTION_ID() { - return yield* FUNCTION_KEY.apply(this, arguments); + function* FUNCTION_ID() { + return yield* FUNCTION_ID.apply(this, arguments); + } + + FUNCTION_ID.toString = function () { + return FUNCTION_ID.toString(); }; - WRAPPER_KEY.toString = function () { - return FUNCTION_KEY.toString(); - }; - - return WRAPPER_KEY; + return FUNCTION_ID; })(FUNCTION) diff --git a/src/babel/transformation/templates/property-method-assignment-wrapper.js b/src/babel/transformation/templates/property-method-assignment-wrapper.js index ebb3da0acf..ecfac52c87 100644 --- a/src/babel/transformation/templates/property-method-assignment-wrapper.js +++ b/src/babel/transformation/templates/property-method-assignment-wrapper.js @@ -1,11 +1,11 @@ (function (FUNCTION_KEY) { - var WRAPPER_KEY = function FUNCTION_ID() { + function FUNCTION_ID() { return FUNCTION_KEY.apply(this, arguments); - }; + } - WRAPPER_KEY.toString = function () { - return FUNCTION_KEY.toString(); - }; + FUNCTION_ID.toString = function () { + return FUNCTION_ID.toString(); + } - return WRAPPER_KEY; + return FUNCTION_ID; })(FUNCTION) diff --git a/test/core/fixtures/transformation/spec.function-name/assignment/expected.js b/test/core/fixtures/transformation/spec.function-name/assignment/expected.js index 9f3395038b..1ff1e6a273 100644 --- a/test/core/fixtures/transformation/spec.function-name/assignment/expected.js +++ b/test/core/fixtures/transformation/spec.function-name/assignment/expected.js @@ -1,15 +1,15 @@ "use strict"; var i = (function (_i) { - var _iWrapper = function i() { + function i() { return _i.apply(this, arguments); + } + + i.toString = function () { + return i.toString(); }; - _iWrapper.toString = function () { - return _i.toString(); - }; - - return _iWrapper; + return i; })(function () { i = 5; }); @@ -17,4 +17,4 @@ var i = (function (_i) { var j = function j() { var _ = 5; j = _.j; -}; +}; \ No newline at end of file diff --git a/test/core/fixtures/transformation/spec.function-name/object/expected.js b/test/core/fixtures/transformation/spec.function-name/object/expected.js index 87c73c49fb..fd935fcd44 100644 --- a/test/core/fixtures/transformation/spec.function-name/object/expected.js +++ b/test/core/fixtures/transformation/spec.function-name/object/expected.js @@ -8,15 +8,15 @@ var obj = { }, h: (function (_h) { - var _hWrapper = function h() { + function h() { return _h.apply(this, arguments); + } + + h.toString = function () { + return h.toString(); }; - _hWrapper.toString = function () { - return _h.toString(); - }; - - return _hWrapper; + return h; })(function () { console.log(h); }), @@ -24,4 +24,4 @@ var obj = { m: function m() { doSmth(); } -}; +}; \ No newline at end of file diff --git a/test/core/fixtures/transformation/spec.function-name/own-bindings/expected.js b/test/core/fixtures/transformation/spec.function-name/own-bindings/expected.js index f97255a175..a6346f4707 100644 --- a/test/core/fixtures/transformation/spec.function-name/own-bindings/expected.js +++ b/test/core/fixtures/transformation/spec.function-name/own-bindings/expected.js @@ -5,27 +5,27 @@ var f = function f() { }; var f = (function (_f) { - var _fWrapper = function f(_x) { + function f(_x) { return _f.apply(this, arguments); + } + + f.toString = function () { + return f.toString(); }; - _fWrapper.toString = function () { - return _f.toString(); - }; - - return _fWrapper; + return f; })(function (f) {}); var obj = { f: (function (_f) { - var _fWrapper = function f(_x) { + function f(_x) { return _f.apply(this, arguments); + } + + f.toString = function () { + return f.toString(); }; - _fWrapper.toString = function () { - return _f.toString(); - }; - - return _fWrapper; + return f; })(function (f) {}) -}; +}; \ No newline at end of file diff --git a/test/core/fixtures/transformation/spec.function-name/self-reference/expected.js b/test/core/fixtures/transformation/spec.function-name/self-reference/expected.js index 73ea1067e5..f1251dd937 100644 --- a/test/core/fixtures/transformation/spec.function-name/self-reference/expected.js +++ b/test/core/fixtures/transformation/spec.function-name/self-reference/expected.js @@ -1,15 +1,15 @@ "use strict"; var f = (function (_f) { - var _fWrapper = function f() { + function f() { return _f.apply(this, arguments); + } + + f.toString = function () { + return f.toString(); }; - _fWrapper.toString = function () { - return _f.toString(); - }; - - return _fWrapper; + return f; })(function () { console.log(f, g); -}); +}); \ No newline at end of file