@@ -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