diff --git a/packages/babel-code-frame/test/index.js b/packages/babel-code-frame/test/index.js new file mode 100644 index 0000000000..02a36f9f8e --- /dev/null +++ b/packages/babel-code-frame/test/index.js @@ -0,0 +1,5 @@ +var buildCodeFrame = require(".."); + +suite("babel-code-frame", function () { + +}); diff --git a/packages/babel-core/src/tools/build-external-helpers.js b/packages/babel-core/src/tools/build-external-helpers.js index 9bc0221977..fd1e91940b 100644 --- a/packages/babel-core/src/tools/build-external-helpers.js +++ b/packages/babel-core/src/tools/build-external-helpers.js @@ -73,8 +73,26 @@ function buildVar(namespace, builder) { } function buildHelpers(body, namespace, whitelist) { + function shouldIgnore(name) { + if (!whitelist) { + return false; + } + + // check for the raw name + if (whitelist.indexOf(name) >= 0) { + return false; + } + + // typeof -> _typeof + if (name[0] === "_" && whitelist.indexOf(name.slice(1)) >= 0) { + return false; + } + + return true; + } + each(helpers.list, function (name) { - if (whitelist && whitelist.indexOf(name) === -1) return; + if (shouldIgnore(name)) return; let key = t.identifier(t.toIdentifier(name)); body.push(t.expressionStatement( diff --git a/packages/babel-core/src/transformation/file/options/parsers.js b/packages/babel-core/src/transformation/file/options/parsers.js index 5b5c57faaa..840c6e5f6c 100644 --- a/packages/babel-core/src/transformation/file/options/parsers.js +++ b/packages/babel-core/src/transformation/file/options/parsers.js @@ -3,10 +3,6 @@ import slash from "slash"; import * as util from "../../../util"; -export function number(val: any): number { - return +val; -} - export let filename = slash; export function boolean(val: any): boolean { diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index e279d5f613..93fb13abe3 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -1,7 +1,5 @@ -require("../lib/api/node"); - +var babel = require("../lib/api/node"); var buildExternalHelpers = require("../lib/tools/build-external-helpers"); -var transform = require("../lib/api/node").transform; var Pipeline = require("../lib/transformation/pipeline"); var sourceMap = require("source-map"); var assert = require("assert"); @@ -19,12 +17,24 @@ function assertNotIgnored(result) { function transformAsync(code, opts) { return { then: function (resolve) { - resolve(transform(code, opts)); + resolve(babel.transform(code, opts)); } }; } suite("api", function () { + test("transformFile", function (done) { + babel.transformFile(__dirname + "/fixtures/api/file.js", {}, function (err, res) { + if (err) return done(err); + assert.equal(res.code, "foo();"); + done(); + }); + }); + + test("transformFileSync", function () { + assert.equal(babel.transformFileSync(__dirname + "/fixtures/api/file.js", {}).code, "foo();"); + }); + test("options merge backwards", function () { return transformAsync("", { presets: [__dirname + "/../../babel-preset-es2015"], @@ -35,7 +45,7 @@ suite("api", function () { }); test("source map merging", function () { - var result = transform([ + var result = babel.transform([ 'function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }', '', 'let Foo = function Foo() {', @@ -387,5 +397,10 @@ suite("api", function () { assert.ok(script.indexOf("classCallCheck") === -1); assert.ok(script.indexOf("inherits") === -1); }); + + test("underscored", function () { + var script = buildExternalHelpers(["typeof"]); + assert.ok(script.indexOf("typeof") >= 0); + }); }); }); diff --git a/packages/babel-core/test/fixtures/api/file.js b/packages/babel-core/test/fixtures/api/file.js new file mode 100644 index 0000000000..a280f9a5cc --- /dev/null +++ b/packages/babel-core/test/fixtures/api/file.js @@ -0,0 +1 @@ +foo(); diff --git a/packages/babel-plugin-transform-regenerator/package.json b/packages/babel-plugin-transform-regenerator/package.json index 0f6b496566..53b1399120 100644 --- a/packages/babel-plugin-transform-regenerator/package.json +++ b/packages/babel-plugin-transform-regenerator/package.json @@ -1,7 +1,7 @@ { "name": "babel-plugin-transform-regenerator", "author": "Ben Newman ", - "description": "", + "description": "Explode async and generator functions into a state machine.", "version": "6.0.18", "homepage": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-regenerator", "main": "lib/index.js", diff --git a/packages/babel-plugin-transform-regenerator/src/visit.js b/packages/babel-plugin-transform-regenerator/src/visit.js index ad22fe3c76..10706d43f0 100644 --- a/packages/babel-plugin-transform-regenerator/src/visit.js +++ b/packages/babel-plugin-transform-regenerator/src/visit.js @@ -37,13 +37,7 @@ exports.visitor = { return; } - if (node.expression) { - // Transform expression lambdas into normal functions. - node.expression = false; - node.body = t.blockStatement([ - t.returnStatement(node.body) - ]); - } + path.ensureBlock(); if (node.async) { path.get("body").traverse(awaitVisitor);