Skip to content
This repository was archived by the owner on Jul 13, 2020. It is now read-only.

Commit 01d561d

Browse files
committed
various fixes
1 parent de2a2f7 commit 01d561d

File tree

6 files changed

+59
-48
lines changed

6 files changed

+59
-48
lines changed

dist/es6-module-loader-sans-promises.js

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,12 @@ function logloads(loads) {
195195
.then(function(name) {
196196
var load;
197197
if (loader.modules[name]) {
198-
load = createLoad(name);
198+
return { name: name };
199+
// See https://bugs.ecmascript.org/show_bug.cgi?id=2795
200+
/* load = createLoad(name);
199201
load.status = 'linked';
200202
load.module = loader.modules[name];
201-
return load;
203+
return load; */
202204
}
203205

204206
for (var i = 0, l = loader.loads.length; i < l; i++) {
@@ -235,6 +237,7 @@ function logloads(loads) {
235237
p
236238
// 15.2.4.4.1 CallFetch
237239
.then(function(address) {
240+
// adjusted, see https://bugs.ecmascript.org/show_bug.cgi?id=2602
238241
if (load.status != 'loading')
239242
return;
240243
load.address = address;
@@ -367,6 +370,9 @@ function logloads(loads) {
367370
value: depLoad.name
368371
});
369372

373+
if (!depLoad.status)
374+
return;
375+
370376
if (depLoad.status != 'linked') {
371377
var linkSets = load.linkSets.concat([]);
372378
for (var i = 0, l = linkSets.length; i < l; i++)
@@ -402,6 +408,9 @@ function logloads(loads) {
402408
load.status = 'failed';
403409
load.exception = exc;
404410

411+
loader.loaderObj.failed = loader.loaderObj.failed || [];
412+
loader.loaderObj.failed.push(load);
413+
405414
var linkSets = load.linkSets.concat([]);
406415
for (var i = 0, l = linkSets.length; i < l; i++)
407416
linkSetFailed(linkSets[i], exc);
@@ -482,6 +491,7 @@ function logloads(loads) {
482491
linkSet.loads.push(load);
483492
load.linkSets.push(linkSet);
484493

494+
// adjustment, see https://bugs.ecmascript.org/show_bug.cgi?id=2603
485495
if (load.status != 'loaded') {
486496
linkSet.loadingCount++;
487497
}
@@ -569,7 +579,7 @@ function logloads(loads) {
569579
// 15.2.5.3 Module Linking Groups
570580

571581
// 15.2.5.3.2 BuildLinkageGroups alternative implementation
572-
// Adjustments:
582+
// Adjustments (also see https://bugs.ecmascript.org/show_bug.cgi?id=2755)
573583
// 1. groups is an already-interleaved array of group kinds
574584
// 2. load.groupIndex is set when this function runs
575585
// 3. load.groupIndex is the interleaved index ie 0 declarative, 1 dynamic, 2 declarative, ... (or starting with dynamic)
@@ -597,7 +607,7 @@ function logloads(loads) {
597607
// otherwise it is the same as the parent
598608
var loadDepGroupIndex = load.groupIndex + (loadDep.kind != load.kind);
599609

600-
if (!loadDep.groupIndex) {
610+
if (loadDep.groupIndex === undefined) {
601611
loadDep.groupIndex = loadDepGroupIndex;
602612
}
603613
else if (loadDep.groupIndex != loadDepGroupIndex) {
@@ -646,7 +656,7 @@ function logloads(loads) {
646656
// 15.2.5.6 LinkDynamicModules adjusted
647657
else {
648658
var module = load.execute();
649-
if (!(module.__esModule))
659+
if (!module || !module.__esModule)
650660
throw new TypeError('Execution must define a Module instance');
651661
load.module = {
652662
module: module
@@ -669,11 +679,8 @@ function logloads(loads) {
669679

670680
// declare the module with an empty depMap
671681
var depMap = [];
672-
var sys = __global.System;
673-
__global.System = loader;
674-
var registryEntry = load.declare.call(__global, depMap);
675682

676-
__global.System = sys;
683+
var registryEntry = load.declare.call(__global, depMap);
677684

678685
var moduleDependencies = [];
679686

@@ -821,7 +828,7 @@ function logloads(loads) {
821828
});
822829
}
823830

824-
// NB importPromises hacks ability to import a module twice without error - https://github.com/jorendorff/js-loaders/issues/60
831+
// importPromises adds ability to import a module twice without error - https://bugs.ecmascript.org/show_bug.cgi?id=2601
825832
var importPromises = {};
826833
Loader.prototype = {
827834
define: function(name, source, options) {
@@ -863,9 +870,8 @@ function logloads(loads) {
863870
// run normalize first
864871
var loaderObj = this;
865872

866-
return new Promise(function(resolve) {
867-
resolve(loaderObj.normalize.call(this, name, options && options.name, options && options.address))
868-
})
873+
// added, see https://bugs.ecmascript.org/show_bug.cgi?id=2659
874+
return Promise.resolve(loaderObj.normalize(name, options && options.name, options && options.address))
869875
.then(function(name) {
870876
var loader = loaderObj._loader;
871877

dist/es6-module-loader-sans-promises.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/es6-module-loader.js

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -879,10 +879,12 @@ function logloads(loads) {
879879
.then(function(name) {
880880
var load;
881881
if (loader.modules[name]) {
882-
load = createLoad(name);
882+
return { name: name };
883+
// See https://bugs.ecmascript.org/show_bug.cgi?id=2795
884+
/* load = createLoad(name);
883885
load.status = 'linked';
884886
load.module = loader.modules[name];
885-
return load;
887+
return load; */
886888
}
887889

888890
for (var i = 0, l = loader.loads.length; i < l; i++) {
@@ -919,6 +921,7 @@ function logloads(loads) {
919921
p
920922
// 15.2.4.4.1 CallFetch
921923
.then(function(address) {
924+
// adjusted, see https://bugs.ecmascript.org/show_bug.cgi?id=2602
922925
if (load.status != 'loading')
923926
return;
924927
load.address = address;
@@ -1051,6 +1054,9 @@ function logloads(loads) {
10511054
value: depLoad.name
10521055
});
10531056

1057+
if (!depLoad.status)
1058+
return;
1059+
10541060
if (depLoad.status != 'linked') {
10551061
var linkSets = load.linkSets.concat([]);
10561062
for (var i = 0, l = linkSets.length; i < l; i++)
@@ -1086,6 +1092,9 @@ function logloads(loads) {
10861092
load.status = 'failed';
10871093
load.exception = exc;
10881094

1095+
loader.loaderObj.failed = loader.loaderObj.failed || [];
1096+
loader.loaderObj.failed.push(load);
1097+
10891098
var linkSets = load.linkSets.concat([]);
10901099
for (var i = 0, l = linkSets.length; i < l; i++)
10911100
linkSetFailed(linkSets[i], exc);
@@ -1166,6 +1175,7 @@ function logloads(loads) {
11661175
linkSet.loads.push(load);
11671176
load.linkSets.push(linkSet);
11681177

1178+
// adjustment, see https://bugs.ecmascript.org/show_bug.cgi?id=2603
11691179
if (load.status != 'loaded') {
11701180
linkSet.loadingCount++;
11711181
}
@@ -1253,7 +1263,7 @@ function logloads(loads) {
12531263
// 15.2.5.3 Module Linking Groups
12541264

12551265
// 15.2.5.3.2 BuildLinkageGroups alternative implementation
1256-
// Adjustments:
1266+
// Adjustments (also see https://bugs.ecmascript.org/show_bug.cgi?id=2755)
12571267
// 1. groups is an already-interleaved array of group kinds
12581268
// 2. load.groupIndex is set when this function runs
12591269
// 3. load.groupIndex is the interleaved index ie 0 declarative, 1 dynamic, 2 declarative, ... (or starting with dynamic)
@@ -1281,7 +1291,7 @@ function logloads(loads) {
12811291
// otherwise it is the same as the parent
12821292
var loadDepGroupIndex = load.groupIndex + (loadDep.kind != load.kind);
12831293

1284-
if (!loadDep.groupIndex) {
1294+
if (loadDep.groupIndex === undefined) {
12851295
loadDep.groupIndex = loadDepGroupIndex;
12861296
}
12871297
else if (loadDep.groupIndex != loadDepGroupIndex) {
@@ -1330,7 +1340,7 @@ function logloads(loads) {
13301340
// 15.2.5.6 LinkDynamicModules adjusted
13311341
else {
13321342
var module = load.execute();
1333-
if (!(module.__esModule))
1343+
if (!module || !module.__esModule)
13341344
throw new TypeError('Execution must define a Module instance');
13351345
load.module = {
13361346
module: module
@@ -1353,11 +1363,8 @@ function logloads(loads) {
13531363

13541364
// declare the module with an empty depMap
13551365
var depMap = [];
1356-
var sys = __global.System;
1357-
__global.System = loader;
1358-
var registryEntry = load.declare.call(__global, depMap);
13591366

1360-
__global.System = sys;
1367+
var registryEntry = load.declare.call(__global, depMap);
13611368

13621369
var moduleDependencies = [];
13631370

@@ -1505,7 +1512,7 @@ function logloads(loads) {
15051512
});
15061513
}
15071514

1508-
// NB importPromises hacks ability to import a module twice without error - https://github.com/jorendorff/js-loaders/issues/60
1515+
// importPromises adds ability to import a module twice without error - https://bugs.ecmascript.org/show_bug.cgi?id=2601
15091516
var importPromises = {};
15101517
Loader.prototype = {
15111518
define: function(name, source, options) {
@@ -1547,9 +1554,8 @@ function logloads(loads) {
15471554
// run normalize first
15481555
var loaderObj = this;
15491556

1550-
return new Promise(function(resolve) {
1551-
resolve(loaderObj.normalize.call(this, name, options && options.name, options && options.address))
1552-
})
1557+
// added, see https://bugs.ecmascript.org/show_bug.cgi?id=2659
1558+
return Promise.resolve(loaderObj.normalize(name, options && options.name, options && options.address))
15531559
.then(function(name) {
15541560
var loader = loaderObj._loader;
15551561

0 commit comments

Comments
 (0)