fix runtime plugin helper generation - fixes #2726

This commit is contained in:
Sebastian McKenzie 2015-11-02 06:56:36 +00:00
parent 6ccee750e3
commit 41ccee89c9
8 changed files with 34 additions and 6 deletions

View File

@ -271,7 +271,8 @@ export default class File extends Store {
let generator = this.get("helperGenerator");
let runtime = this.get("helpersNamespace");
if (generator) {
return generator(name);
let res = generator(name);
if (res) return res;
} else if (runtime) {
let id = t.identifier(t.toIdentifier(name));
return t.memberExpression(runtime, id);

View File

@ -0,0 +1 @@
class Foo {}

View File

@ -0,0 +1,5 @@
import _classCallCheck from "babel-runtime/helpers/classCallCheck";
let Foo = function Foo() {
_classCallCheck(this, Foo);
};

View File

@ -0,0 +1,3 @@
{
"plugins": ["transform-runtime", "transform-es2015-classes"]
}

View File

@ -0,0 +1,2 @@
import foo from "bar";
foo;

View File

@ -0,0 +1,9 @@
"use strict";
var _bar = require("bar");
var _bar2 = _interopRequireDefault(_bar);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_bar2.default;

View File

@ -0,0 +1,3 @@
{
"plugins": ["transform-runtime", "transform-es2015-modules-commonjs"]
}

View File

@ -7,14 +7,18 @@ export default function ({ types: t }) {
return Object.prototype.hasOwnProperty.call(obj, key);
}
let HELPER_BLACKLIST = ["interopRequireWildcard", "interopRequireDefault"];
return {
pre(file, state) {
state.set("helperGenerator", function (name) {
return state.addImport(`${RUNTIME_MODULE_NAME}/helpers/${name}`, "default", name);
pre(file) {
file.set("helperGenerator", function (name) {
if (HELPER_BLACKLIST.indexOf(name) < 0) {
return file.addImport(`${RUNTIME_MODULE_NAME}/helpers/${name}`, "default", name);
}
});
state.setDynamic("regeneratorIdentifier", function () {
return state.addImport(`${RUNTIME_MODULE_NAME}/regenerator`, "default", "regeneratorRuntime");
this.setDynamic("regeneratorIdentifier", function () {
return file.addImport(`${RUNTIME_MODULE_NAME}/regenerator`, "default", "regeneratorRuntime");
});
},