use a _context object instead of a __moduleName argument

This commit is contained in:
guybedford 2015-12-31 17:11:51 +02:00
parent 40714d004c
commit be2d85d688
15 changed files with 29 additions and 18 deletions

View File

@ -2,7 +2,7 @@ import hoistVariables from "babel-helper-hoist-variables";
import template from "babel-template"; import template from "babel-template";
let buildTemplate = template(` let buildTemplate = template(`
System.register(MODULE_NAME, [SOURCES], function (EXPORT_IDENTIFIER, __moduleName) { System.register(MODULE_NAME, [SOURCES], function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) {
BEFORE_BODY; BEFORE_BODY;
return { return {
setters: [SETTERS], setters: [SETTERS],
@ -52,9 +52,19 @@ export default function ({ types: t }) {
inherits: require("babel-plugin-transform-strict-mode"), inherits: require("babel-plugin-transform-strict-mode"),
visitor: { visitor: {
ReferencedIdentifier(path, state) {
if (path.node.name == "__moduleName" && !path.scope.hasBinding("__moduleName")) {
path.replaceWith(t.memberExpression(state.contextIdent, t.identifier("id")));
}
},
Program: { Program: {
exit(path) { enter(path, state) {
state.contextIdent = path.scope.generateUidIdentifier("context");
},
exit(path, state) {
let exportIdent = path.scope.generateUidIdentifier("export"); let exportIdent = path.scope.generateUidIdentifier("export");
let contextIdent = state.contextIdent;
let exportNames = Object.create(null); let exportNames = Object.create(null);
let modules = Object.create(null); let modules = Object.create(null);
@ -241,7 +251,8 @@ export default function ({ types: t }) {
SETTERS: setters, SETTERS: setters,
SOURCES: sources, SOURCES: sources,
BODY: path.node.body, BODY: path.node.body,
EXPORT_IDENTIFIER: exportIdent EXPORT_IDENTIFIER: exportIdent,
CONTEXT_IDENTIFIER: contextIdent
}) })
]; ];
} }

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register([], function (_export, __moduleName) { System.register([], function (_export, _context) {
_export("default", function () {}); _export("default", function () {});
_export("default", class {}); _export("default", class {});

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register(["foo"], function (_export, __moduleName) { System.register(["foo"], function (_export, _context) {
return { return {
setters: [function (_foo) { setters: [function (_foo) {
var _exportObj = {}; var _exportObj = {};

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register([], function (_export, __moduleName) { System.register([], function (_export, _context) {
return { return {
setters: [], setters: [],
execute: function () { execute: function () {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register([], function (_export, __moduleName) { System.register([], function (_export, _context) {
return { return {
setters: [], setters: [],
execute: function () { execute: function () {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register("my custom module name", [], function (_export, __moduleName) { System.register("my custom module name", [], function (_export, _context) {
return { return {
setters: [], setters: [],
execute: function () {} execute: function () {}

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register(["./evens"], function (_export, __moduleName) { System.register(["./evens"], function (_export, _context) {
var isEven, p, a, i, j, isOdd; var isEven, p, a, i, j, isOdd;
return { return {
setters: [function (_evens) { setters: [function (_evens) {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register(["foo"], function (_export, __moduleName) { System.register(["foo"], function (_export, _context) {
var foo, foo2; var foo, foo2;
return { return {
setters: [function (_foo) { setters: [function (_foo) {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register(["foo"], function (_export, __moduleName) { System.register(["foo"], function (_export, _context) {
var foo; var foo;
return { return {
setters: [function (_foo) { setters: [function (_foo) {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register(["foo"], function (_export, __moduleName) { System.register(["foo"], function (_export, _context) {
var foo, xyz; var foo, xyz;
return { return {
setters: [function (_foo) { setters: [function (_foo) {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register(["foo"], function (_export, __moduleName) { System.register(["foo"], function (_export, _context) {
var bar, bar2, baz, baz2, baz3, xyz; var bar, bar2, baz, baz2, baz3, xyz;
return { return {
setters: [function (_foo) { setters: [function (_foo) {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export, __moduleName) { System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export, _context) {
return { return {
setters: [function (_foo) {}, function (_fooBar) {}, function (_directoryFooBar) {}], setters: [function (_foo) {}, function (_fooBar) {}, function (_directoryFooBar) {}],
execute: function () {} execute: function () {}

View File

@ -1,11 +1,11 @@
"use strict"; "use strict";
System.register([], function (_export, __moduleName) { System.register([], function (_export, _context) {
var name; var name;
return { return {
setters: [], setters: [],
execute: function () { execute: function () {
_export("name", name = __moduleName); _export("name", name = _context.id);
_export("name", name); _export("name", name);
} }

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export, __moduleName) { System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export, _context) {
var foo, foo2, bar, bar2, test2; var foo, foo2, bar, bar2, test2;
return { return {
setters: [function (_foo) { setters: [function (_foo) {

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
System.register([], function (_export, __moduleName) { System.register([], function (_export, _context) {
var test, a, b, d; var test, a, b, d;
return { return {
setters: [], setters: [],