Source code

Revision control

Copy as Markdown

Other Tools

var N = 15000;
var mods = new Array(N);
mods[N - 1] = registerModule('g' + (N - 1),
parseModule('await 1; export var leaf = 1;', 'g' + (N - 1) + '.js'));
for (var i = N - 2; i >= 0; i--) {
mods[i] = registerModule('g' + i,
parseModule('import "g' + (i + 1) + '";', 'g' + i + '.js'));
}
for (var i = N - 1; i >= 0; i--) moduleLink(mods[i]);
for (var i = N - 1; i >= 0; i--) moduleEvaluate(mods[i]).catch(() => {}); // shallow: dep is EvaluatingAsync
try {
drainJobQueue(); // leaf fulfills -> GatherAvailableModuleAncestors recurses N deep
} catch(e) {
assertEq(e instanceof InternalError, true);
assertEq(e.message, "too much recursion");
}