From 9f2ac15695759a0870420eacfc1452ad206f3f87 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Sat, 30 May 2015 23:09:25 -0400 Subject: [PATCH] move jscript transformer to the builtin-trailing group and perform transform on exit - closes #1652, fixes #1651 --- .../transformation/transformers/index.js | 2 +- .../transformers/other/jscript.js | 25 +++++++++++-------- .../jscript/arrow-function/exec.js | 9 +++++++ 3 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 test/core/fixtures/transformation/jscript/arrow-function/exec.js diff --git a/src/babel/transformation/transformers/index.js b/src/babel/transformation/transformers/index.js index fe2f2be695..343279ec7d 100644 --- a/src/babel/transformation/transformers/index.js +++ b/src/babel/transformation/transformers/index.js @@ -51,7 +51,6 @@ export default { "es6.spec.symbols": require("./es6/spec.symbols"), "es7.functionBind": require("./es7/function-bind"), "spec.undefinedToVoid": require("./spec/undefined-to-void"), - jscript: require("./other/jscript"), flow: require("./other/flow"), //- builtin-advanced @@ -83,4 +82,5 @@ export default { "minification.memberExpressionLiterals": require("./minification/member-expression-literals"), "minification.propertyLiterals": require("./minification/property-literals"), _blockHoist: require("./internal/block-hoist"), + jscript: require("./other/jscript"), }; diff --git a/src/babel/transformation/transformers/other/jscript.js b/src/babel/transformation/transformers/other/jscript.js index 5da5355e95..7b47b4f4d5 100644 --- a/src/babel/transformation/transformers/other/jscript.js +++ b/src/babel/transformation/transformers/other/jscript.js @@ -1,18 +1,21 @@ import * as t from "../../../types"; export var metadata = { + group: "builtin-trailing", optional: true }; -export function FunctionExpression(node, print) { - if (!node.id) return; - node._ignoreUserWhitespace = true; +export var FunctionExpression = { + exit(node, print) { + if (!node.id) return; + node._ignoreUserWhitespace = true; - return t.callExpression( - t.functionExpression(null, [], t.blockStatement([ - t.toStatement(node), - t.returnStatement(node.id) - ])), - [] - ); -} + return t.callExpression( + t.functionExpression(null, [], t.blockStatement([ + t.toStatement(node), + t.returnStatement(node.id) + ])), + [] + ); + } +}; diff --git a/test/core/fixtures/transformation/jscript/arrow-function/exec.js b/test/core/fixtures/transformation/jscript/arrow-function/exec.js new file mode 100644 index 0000000000..3605c00f82 --- /dev/null +++ b/test/core/fixtures/transformation/jscript/arrow-function/exec.js @@ -0,0 +1,9 @@ +class MyClass { + test() { + const that = this; + const func = () => this === that; + return func(); + } +} + +assert(new MyClass().test());