From f82f8b444acd158f5c453c1f93323b7a4961d319 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Thu, 5 Nov 2015 10:42:04 +0600 Subject: [PATCH 01/11] change polyfill compression options --- packages/babel-polyfill/scripts/build-dist.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/babel-polyfill/scripts/build-dist.sh b/packages/babel-polyfill/scripts/build-dist.sh index 38f8477688..db5b2bd2ed 100755 --- a/packages/babel-polyfill/scripts/build-dist.sh +++ b/packages/babel-polyfill/scripts/build-dist.sh @@ -12,6 +12,6 @@ node $BROWSERIFY_CMD lib/index.js \ --plugin derequire/plugin \ >dist/polyfill.js node $UGLIFY_CMD dist/polyfill.js \ - --compress warnings=false \ - --mangle \ + --compress keep_fnames,keep_fargs,warnings=false \ + --mangle keep_fnames \ >dist/polyfill.min.js From f1a62ef0784448193017a668d21072f5595aa2c6 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Thu, 5 Nov 2015 10:09:23 -0500 Subject: [PATCH 02/11] transform-es2015-classes: check if node.id is null --- .../es6.classes/export-super-class/actual.js | 1 + .../es6.classes/export-super-class/expected.js | 12 ++++++++++++ .../src/index.js | 6 ++++-- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/actual.js create mode 100644 packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/expected.js diff --git a/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/actual.js b/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/actual.js new file mode 100644 index 0000000000..76170bb418 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/actual.js @@ -0,0 +1 @@ +export default class extends A {} diff --git a/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/expected.js b/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/expected.js new file mode 100644 index 0000000000..62032a4013 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/es6.classes/export-super-class/expected.js @@ -0,0 +1,12 @@ +var _class = (function (_A) { + babelHelpers.inherits(_class, _A); + + function _class() { + babelHelpers.classCallCheck(this, _class); + return babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments)); + } + + return _class; +})(A); + +export default _class; diff --git a/packages/babel-plugin-transform-es2015-classes/src/index.js b/packages/babel-plugin-transform-es2015-classes/src/index.js index ad7dd70135..f2b58353f6 100644 --- a/packages/babel-plugin-transform-es2015-classes/src/index.js +++ b/packages/babel-plugin-transform-es2015-classes/src/index.js @@ -8,13 +8,15 @@ export default function ({ types: t }) { ClassDeclaration(path) { let { node } = path; + let ref = node.id || path.scope.generateUidIdentifier("class"); + if (path.parentPath.isExportDefaultDeclaration()) { path = path.parentPath; - path.insertAfter(t.exportDefaultDeclaration(node.id)); + path.insertAfter(t.exportDefaultDeclaration(ref)); } path.replaceWith(t.variableDeclaration("let", [ - t.variableDeclarator(node.id, t.toExpression(node)) + t.variableDeclarator(ref, t.toExpression(node)) ])); }, From af9da3b7e95ec37f957ad587090bdea83b2842ff Mon Sep 17 00:00:00 2001 From: Andres Suarez Date: Thu, 5 Nov 2015 11:44:35 -0800 Subject: [PATCH 03/11] Use source-map ^0.5.0 --- packages/babel-core/package.json | 2 +- packages/babel-generator/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index 5441963c30..79970f5dd6 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -50,7 +50,7 @@ "regenerator": "0.8.35", "shebang-regex": "^1.0.0", "slash": "^1.0.0", - "source-map": "^0.4.0", + "source-map": "^0.5.0", "source-map-support": "^0.2.10" }, "devDependencies": { diff --git a/packages/babel-generator/package.json b/packages/babel-generator/package.json index bd369d8c1a..ffa5d59da0 100644 --- a/packages/babel-generator/package.json +++ b/packages/babel-generator/package.json @@ -18,7 +18,7 @@ "is-integer": "^1.0.4", "lodash": "^3.10.1", "repeating": "^1.1.3", - "source-map": "^0.4.4", + "source-map": "^0.5.0", "trim-right": "^1.0.1" }, "devDependencies": { From c167e6dcc3f36a8bc6128b35d74a2c0152641527 Mon Sep 17 00:00:00 2001 From: wesbos Date: Thu, 5 Nov 2015 15:39:36 -0500 Subject: [PATCH 04/11] Added react-dispaly-name to the default react package --- packages/babel-preset-react/index.js | 1 + packages/babel-preset-react/package.json | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/babel-preset-react/index.js b/packages/babel-preset-react/index.js index b488ccb658..327f02e403 100644 --- a/packages/babel-preset-react/index.js +++ b/packages/babel-preset-react/index.js @@ -4,5 +4,6 @@ module.exports = { require("babel-plugin-transform-flow-strip-types"), require("babel-plugin-syntax-flow"), require("babel-plugin-syntax-jsx"), + require("babel-plugin-transform-react-display-name"), ] }; diff --git a/packages/babel-preset-react/package.json b/packages/babel-preset-react/package.json index c71eb9e293..11d4a13297 100644 --- a/packages/babel-preset-react/package.json +++ b/packages/babel-preset-react/package.json @@ -10,7 +10,8 @@ "dependencies": { "babel-plugin-syntax-flow": "^6.0.14", "babel-plugin-syntax-jsx": "^6.0.14", - "babel-plugin-transform-react-jsx": "^6.0.14", - "babel-plugin-transform-flow-strip-types": "^6.0.14" + "babel-plugin-transform-flow-strip-types": "^6.0.14", + "babel-plugin-transform-react-display-name": "^6.0.14", + "babel-plugin-transform-react-jsx": "^6.0.14" } } From 940b86dadbd0151c33c02e89f0b5ff61077c9214 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Thu, 5 Nov 2015 20:10:15 -0500 Subject: [PATCH 05/11] transform-regenerator: set node.id to an identifier if null - fixes #2835 --- packages/babel-plugin-transform-regenerator/lib/visit.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/babel-plugin-transform-regenerator/lib/visit.js b/packages/babel-plugin-transform-regenerator/lib/visit.js index 0f68ffc686..c4a0d2efb2 100644 --- a/packages/babel-plugin-transform-regenerator/lib/visit.js +++ b/packages/babel-plugin-transform-regenerator/lib/visit.js @@ -146,6 +146,10 @@ function getOuterFnExpr(funPath) { var node = funPath.node; t.assertFunction(node); + if (!node.id) { + node.id = funPath.scope.parent.generateUidIdentifier("callee"); + } + if (node.generator && // Non-generator functions don't need to be marked. t.isFunctionDeclaration(node)) { var pp = funPath.findParent(function (path) { @@ -171,9 +175,7 @@ function getOuterFnExpr(funPath) { ); } - return node.id || ( - node.id = funPath.scope.parent.generateUidIdentifier("callee") - ); + return node.id; } function getRuntimeMarkDecl(blockPath) { From 042af348bc62b134f6e92c2e9d681f3fc18926f7 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Thu, 5 Nov 2015 23:57:53 -0500 Subject: [PATCH 06/11] helper-remap-async-to-generator: account for ObjectMethod - fixes #2838 --- .../async-to-generator/object-method/actual.js | 6 ++++++ .../async-to-generator/object-method/expected.js | 8 ++++++++ .../babel-helper-remap-async-to-generator/src/index.js | 6 +++--- 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 packages/babel-core/test/fixtures/transformation/async-to-generator/object-method/actual.js create mode 100644 packages/babel-core/test/fixtures/transformation/async-to-generator/object-method/expected.js diff --git a/packages/babel-core/test/fixtures/transformation/async-to-generator/object-method/actual.js b/packages/babel-core/test/fixtures/transformation/async-to-generator/object-method/actual.js new file mode 100644 index 0000000000..c6400ef2fa --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/async-to-generator/object-method/actual.js @@ -0,0 +1,6 @@ +let obj = { + a: 123, + async foo(bar) { + return await baz(bar); + } +} diff --git a/packages/babel-core/test/fixtures/transformation/async-to-generator/object-method/expected.js b/packages/babel-core/test/fixtures/transformation/async-to-generator/object-method/expected.js new file mode 100644 index 0000000000..7628e45eca --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/async-to-generator/object-method/expected.js @@ -0,0 +1,8 @@ +let obj = { + a: 123, + foo(bar) { + return babelHelpers.asyncToGenerator(function* () { + return yield baz(bar); + })(); + } +}; diff --git a/packages/babel-helper-remap-async-to-generator/src/index.js b/packages/babel-helper-remap-async-to-generator/src/index.js index 453f4c52ad..8a08e58ec4 100644 --- a/packages/babel-helper-remap-async-to-generator/src/index.js +++ b/packages/babel-helper-remap-async-to-generator/src/index.js @@ -24,7 +24,7 @@ let awaitVisitor = { } }; -function classMethod(path: NodePath, callId: Object) { +function classOrObjectMethod(path: NodePath, callId: Object) { let node = path.node; let body = node.body; @@ -99,8 +99,8 @@ export default function (path: NodePath, callId: Object) { path.traverse(awaitVisitor); - if (path.isClassMethod()) { - return classMethod(path, callId); + if (path.isClassMethod() || path.isObjectMethod()) { + return classOrObjectMethod(path, callId); } else { return plainFunction(path, callId); } From bb5a7804bcf8b1bda169558b7f2891763b608a92 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Fri, 6 Nov 2015 06:49:10 -0500 Subject: [PATCH 07/11] transform-es2015-typeof-symbol: check for undefined - fixes #2865 --- .../transform-es2015-typeof-symbol/non-typeof/actual.js | 5 +++++ .../transform-es2015-typeof-symbol/non-typeof/expected.js | 5 +++++ .../transform-es2015-typeof-symbol/options.json | 3 +++ .../babel-plugin-transform-es2015-typeof-symbol/src/index.js | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/non-typeof/actual.js create mode 100644 packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/non-typeof/expected.js create mode 100644 packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/options.json diff --git a/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/non-typeof/actual.js b/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/non-typeof/actual.js new file mode 100644 index 0000000000..b637888826 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/non-typeof/actual.js @@ -0,0 +1,5 @@ +export default function (number) { + if (!isNaN(number)) { + return 1; + } +} diff --git a/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/non-typeof/expected.js b/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/non-typeof/expected.js new file mode 100644 index 0000000000..b637888826 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/non-typeof/expected.js @@ -0,0 +1,5 @@ +export default function (number) { + if (!isNaN(number)) { + return 1; + } +} diff --git a/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/options.json b/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/options.json new file mode 100644 index 0000000000..a9b95ca6a3 --- /dev/null +++ b/packages/babel-core/test/fixtures/transformation/transform-es2015-typeof-symbol/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["transform-es2015-typeof-symbol"] +} diff --git a/packages/babel-plugin-transform-es2015-typeof-symbol/src/index.js b/packages/babel-plugin-transform-es2015-typeof-symbol/src/index.js index a3da0e6267..08df2600a8 100644 --- a/packages/babel-plugin-transform-es2015-typeof-symbol/src/index.js +++ b/packages/babel-plugin-transform-es2015-typeof-symbol/src/index.js @@ -6,7 +6,7 @@ export default function ({ types: t }) { UnaryExpression(path) { let { node, parent } = path; if (node[IGNORE]) return; - if (path.find(path => !!path.node._generated)) return; + if (path.find(path => path.node && !!path.node._generated)) return; if (path.parentPath.isBinaryExpression() && t.EQUALITY_BINARY_OPERATORS.indexOf(parent.operator) >= 0) { // optimise `typeof foo === "string"` since we can determine that they'll never need to handle symbols From 1a4f5d80f08561141878f36b2da8b0f7a5e2e724 Mon Sep 17 00:00:00 2001 From: Forbes Lindesay Date: Fri, 6 Nov 2015 14:52:25 +0000 Subject: [PATCH 08/11] Use `i - 1` instead of `--i` --- packages/babel-messages/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-messages/src/index.js b/packages/babel-messages/src/index.js index 53a769f1b1..5c136dc5f2 100644 --- a/packages/babel-messages/src/index.js +++ b/packages/babel-messages/src/index.js @@ -56,7 +56,7 @@ export function get(key: string, ...args): string { // replace $0 placeholders with args return msg.replace(/\$(\d+)/g, function (str, i) { - return args[--i]; + return args[i - 1]; }); } From 12b1b0b5d91d83f493d7b3168e9a9ab33f475f11 Mon Sep 17 00:00:00 2001 From: Jon Stevens Date: Fri, 6 Nov 2015 13:18:23 -0800 Subject: [PATCH 09/11] docs: fixed external helpers plugin name --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a90d4b9f4..132aa7f628 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -143,7 +143,7 @@ See [CHANGELOG - 6to5](CHANGELOG-6to5.md) for the pre-4.0.0 version changelog. * The `Literal` node type has been unoverloaded and split into `BooleanLiteral`, `RegExpLiteral`, `NumericLiteral`, `StringLiteral` and `NullLiteral`. * The `SpreadProperty` (from `object-rest-spread`) node type has been split into `RestProperty` (for `ObjectPattern`) and `SpreadProperty` (for `ObjectExpression`) * Remove `module.exports` export interop for CommonJS module formatter. - * `externalHelpers` option has been moved into the plugin `babel-plugin-external-helper-2`. + * `externalHelpers` option has been moved into the plugin `babel-plugin-external-helpers-2`. * **New Feature** * Add plugin options. * Add callable class constructor. From 4a92be5e2a24d12580180f152ba5d8018f3cf8b3 Mon Sep 17 00:00:00 2001 From: Amjad Masad Date: Fri, 6 Nov 2015 15:10:24 -0800 Subject: [PATCH 10/11] test-only (minus the lint) make task for faster iteration --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 84f67b1d48..20f49dcddf 100644 --- a/Makefile +++ b/Makefile @@ -31,10 +31,12 @@ test-clean: rm -rf packages/*/test/tmp rm -rf packages/*/test-fixtures.json -test: lint +test-only: ./scripts/test.sh make test-clean +test: lint test-only + test-cov: clean BABEL_ENV=test; \ gulp build From 8e2aae7e05da5db2b830775dad7ad72d9d8597ef Mon Sep 17 00:00:00 2001 From: Amjad Masad Date: Fri, 6 Nov 2015 15:12:16 -0800 Subject: [PATCH 11/11] Introduce new tests for plugins --- .../babel-core/test/_transformation-helper.js | 4 +- .../fixtures/plugins/regression-2772/exec.js | 37 +++++++++++++++++++ packages/babel-core/test/plugins.js | 1 + 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 packages/babel-core/test/fixtures/plugins/regression-2772/exec.js create mode 100644 packages/babel-core/test/plugins.js diff --git a/packages/babel-core/test/_transformation-helper.js b/packages/babel-core/test/_transformation-helper.js index 8ebe82db41..588d64df02 100644 --- a/packages/babel-core/test/_transformation-helper.js +++ b/packages/babel-core/test/_transformation-helper.js @@ -107,8 +107,8 @@ function run(task, done) { } }; - var fn = new Function("require", "done", "exports", execCode); - fn.call(global, fakeRequire, chai.assert, {}, done); + var fn = new Function("require", "assert", "exports", "done", "transform", execCode); + fn.call(global, fakeRequire, chai.assert, {}, done, transform); } catch (err) { err.message = exec.loc + ": " + err.message; err.message += codeFrame(execCode); diff --git a/packages/babel-core/test/fixtures/plugins/regression-2772/exec.js b/packages/babel-core/test/fixtures/plugins/regression-2772/exec.js new file mode 100644 index 0000000000..558dbeaa02 --- /dev/null +++ b/packages/babel-core/test/fixtures/plugins/regression-2772/exec.js @@ -0,0 +1,37 @@ +var code = ` +(function() { + function foo(b){ + b === "lol"; + foo(b); + } +})(); +`; + +transform(code, { + plugins: [ + function (b) { + var t = b.types; + return { + visitor: { + // Replace block statements with a new node without changing anything + BlockStatement: function(path) { + if (path.node.seen) { + return; + } + var node = t.blockStatement(path.node.body); + node.seen = true; + path.replaceWith(node); + }, + // do type inference + BinaryExpression: function(path) { + var left = path.get("left"); + var right = path.get("right"); + left.baseTypeStrictlyMatches(right); + } + } + }; + } + ], + compact: true, + comments: false, +}).code; diff --git a/packages/babel-core/test/plugins.js b/packages/babel-core/test/plugins.js new file mode 100644 index 0000000000..93adae6413 --- /dev/null +++ b/packages/babel-core/test/plugins.js @@ -0,0 +1 @@ +require("./_transformation-helper").run("plugins");