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

Commit 3dcfdbe

Browse files
committed
error handling corrections, constructor adjustments, dynamic-only fix
1 parent 22db31f commit 3dcfdbe

File tree

7 files changed

+43
-37
lines changed

7 files changed

+43
-37
lines changed

src/declarative.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
};
101101
load.status = 'linked';
102102
}
103+
103104
finishLoad(loader, load);
104105
}
105106

@@ -255,7 +256,7 @@
255256
err = ensureEvaluated(dep, seen, loader);
256257
// stop on error, see https://bugs.ecmascript.org/show_bug.cgi?id=2996
257258
if (err) {
258-
err = addToError(err, 'Error evaluating ' + dep.name + '\n');
259+
err = addToError(err, 'Error evaluating ' + dep.name);
259260
return err;
260261
}
261262
}

src/dynamic-only.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
/*
2-
* Dynamic-only Linking Code
2+
* ES6 Module Declarative Linking Code - Dev Build Only
33
*/
4-
5-
// 15.2.5.4
6-
// dynamic-only linking implementation
74
function link(linkSet, linkError) {
8-
5+
96
var loader = linkSet.loader;
107

118
if (!linkSet.loads.length)
129
return;
1310

14-
for (var i = 0; i < linkSet.loads.length; i++) {
15-
var load = linkSet.loads[i];
11+
var loads = linkSet.loads.concat([]);
12+
13+
for (var i = 0; i < loads.length; i++) {
14+
var load = loads[i];
15+
1616
var module = doDynamicExecute(linkSet, load, linkError);
1717
if (!module)
1818
return;
@@ -21,12 +21,13 @@
2121
module: module
2222
};
2323
load.status = 'linked';
24+
2425
finishLoad(loader, load);
2526
}
2627
}
2728

2829
function evaluateLoadedModule(loader, load) {
30+
console.assert(load.status == 'linked', 'is linked ' + load.name);
2931
return load.module.module;
3032
}
31-
3233
})();

src/loader.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
function Module() {}
2222
function Loader(options) {
23+
options = options || {};
24+
2325
if (options.normalize)
2426
this.normalize = options.normalize;
2527
if (options.locate)
@@ -47,6 +49,9 @@ function Loader(options) {
4749
});
4850

4951
// 26.3.3.13 realm not implemented
52+
53+
if (this.transpiler)
54+
setupTranspilers(this);
5055
}
5156

5257
(function() {
@@ -529,10 +534,15 @@ function logloads(loads) {
529534
function linkSetFailed(linkSet, load, exc) {
530535
var loader = linkSet.loader;
531536

532-
if (linkSet.loads[0].name != load.name)
533-
exc = addToError(exc, 'Error loading "' + load.name + '" from "' + linkSet.loads[0].name + '" at ' + (linkSet.loads[0].address || '<unknown>') + '\n');
537+
if (load) {
538+
if (linkSet.loads[0].name != load.name)
539+
exc = addToError(exc, 'Error loading "' + load.name + '" from "' + linkSet.loads[0].name + '" at ' + (linkSet.loads[0].address || '<unknown>'));
534540

535-
exc = addToError(exc, 'Error loading "' + load.name + '" at ' + (load.address || '<unknown>') + '\n');
541+
exc = addToError(exc, 'Error loading "' + load.name + '" at ' + (load.address || '<unknown>'));
542+
}
543+
else {
544+
exc = addToError(exc, 'Error linking "' + linkSet.loads[0].name + '" at ' + (linkSet.loads[0].address || '<unknwon>'));
545+
}
536546

537547
var loads = linkSet.loads.concat([]);
538548
for (var i = 0, l = loads.length; i < l; i++) {

src/transpiler.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
/*
22
* Traceur and Babel transpile hook for Loader
33
*/
4+
5+
function setupTranspilers(loader) {
6+
// pick up Transpiler modules from existing globals on first run if set
7+
if (__global.traceur && !loader.has('traceur'))
8+
loader.set('traceur', loader.newModule({ 'default': __global.traceur, __useDefault: true }));
9+
if (__global.babel && !loader.has('babel'))
10+
loader.set('babel', loader.newModule({ 'default': __global.babel, __useDefault: true }));
11+
}
12+
413
var transpile = (function() {
5-
6-
function getTranspilerModule(loader, globalName) {
7-
return loader.newModule({ 'default': __global[globalName], __useDefault: true });
8-
}
9-
// NB this does not support sub-classing well
10-
var firstRun = true;
1114

1215
// use Traceur by default
1316
Loader.prototype.transpiler = 'traceur';
1417

1518
function transpile(load) {
1619
var self = this;
17-
18-
// pick up Transpiler modules from existing globals on first run if set
19-
if (firstRun) {
20-
if (__global.traceur && !self.has('traceur'))
21-
self.set('traceur', getTranspilerModule(self, 'traceur'));
22-
if (__global.babel && !self.has('babel'))
23-
self.set('babel', getTranspilerModule(self, 'babel'));
24-
firstRun = false;
25-
}
2620

2721
return self['import'](self.transpiler).then(function(transpiler) {
2822
if (transpiler.__useDefault)
@@ -55,7 +49,7 @@ var transpile = (function() {
5549
__eval('(function(require,exports,module){' + load.source + '})();', load.address, __global);
5650
__global.System = curSystem;
5751
__global.Reflect.Loader = curLoader;
58-
return getTranspilerModule(self, load.name);
52+
return self.newModule({ 'default': __global[load.name], __useDefault: true });
5953
}
6054
};
6155
}

src/wrapper-start.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535

3636
function addToError(err, msg) {
3737
if (err instanceof Error)
38-
err.message = msg + err.message;
38+
err.message = err.message + '\n\t' + msg;
3939
else
40-
err = msg + err;
40+
err = err + '\n\t' + msg;
4141
return err;
4242
}
4343

test/system.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ describe('System', function () {
216216
.then(supposeToFail)
217217
.catch(function (e) {
218218
expect(e)
219-
.to.be.equal('Error evaluating test/loads/deperror.js\ndep error');
219+
.to.be.equal('dep error\n\tError evaluating test/loads/deperror.js');
220220
})
221221
.then(done, done);
222222
});

test/test.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ function runTests() {
300300
System['import']('loads/main.js').then(function(m) {
301301
assert(false, true);
302302
}, function(e) {
303-
assert(e, 'Error evaluating loads/deperror.js\ndep error');
303+
assert(e, 'dep error\n\tError evaluating loads/deperror.js');
304304
});
305305
// System['import']('loads/deperror');
306306
});
@@ -600,27 +600,27 @@ function runTests() {
600600
test('Custom loader hook - normalize error', function(assert) {
601601
customLoader['import']('loader/error1-parent.js').then(function(m) {
602602
})['catch'](function(e) {
603-
assert(e.toString(), 'Error loading "loader/error1-parent.js" at ' + System.baseURL + 'loader/error1-parent.js\nerror1');
603+
assert(e.toString(), 'error1\n\tError loading "loader/error1-parent.js" at ' + System.baseURL + 'loader/error1-parent.js');
604604
});
605605
});
606606
test('Custom loader hook - locate error', function(assert) {
607607
customLoader['import']('error2').then(function(m) {}, function(e) {
608-
assert(e.toString(), 'Error loading "error2" at <unknown>\nerror2');
608+
assert(e.toString(), 'error2\n\tError loading "error2" at <unknown>');
609609
});
610610
});
611611
test('Custom loader hook - fetch error', function(assert) {
612612
customLoader['import']('error3').then(function(m) {}, function(e) {
613-
assert(e.toString(), 'Error loading "error3" at ' + System.baseURL + 'error3\nerror3');
613+
assert(e.toString(), 'error3\n\tError loading "error3" at ' + System.baseURL + 'error3');
614614
});
615615
});
616616
test('Custom loader hook - translate error', function(assert) {
617617
customLoader['import']('error4').then(function(m) {}, function(e) {
618-
assert(e.toString(), 'Error loading "error4" at ' + System.baseURL + 'error4\nerror4');
618+
assert(e.toString(), 'error4\n\tError loading "error4" at ' + System.baseURL + 'error4');
619619
});
620620
});
621621
test('Custom loader hook - instantiate error', function(assert) {
622622
customLoader['import']('error5').then(function(m) {}, function(e) {
623-
assert(e.toString(), 'Error loading "error5" at ' + System.baseURL + 'error5\nerror5');
623+
assert(e.toString(), 'error5\n\tError loading "error5" at ' + System.baseURL + 'error5');
624624
});
625625
});
626626

0 commit comments

Comments
 (0)