<!DOCTYPE html>
<title>Handling of instantiation errors, 2</title>

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
    setup({allow_uncaught_exception: true});

    window.log = [];

    window.addEventListener("error", ev => log.push(ev.error));

    const test_load = async_test(
        "Test that missing exports lead to SyntaxError events on window and " +
        "load events on script");
    window.addEventListener("load", test_load.step_func_done(ev => {
      assert_equals(log.length, 10);
      assert_equals(log[0].constructor, SyntaxError);
      assert_equals(log[1], 1);
      assert_equals(log[2].constructor, SyntaxError);
      assert_equals(log[3], 2);
      assert_equals(log[4].constructor, SyntaxError);
      assert_equals(log[5], 3);
      assert_equals(log[6].constructor, SyntaxError);
      assert_equals(log[7], 4);
      assert_equals(log[8].constructor, SyntaxError);
      assert_equals(log[9], 5);
    }));

    function unreachable() { log.push("unexpected"); }
</script>
<script type="module" src="./missing-export-nested.js"
    onerror="unreachable()" onload="log.push(1)"></script>
<script type="module" src="./missing-export-nested.js"
    onerror="unreachable()" onload="log.push(2)"></script>
<script type="module" src="./missing-export.js"
    onerror="unreachable()" onload="log.push(3)"></script>
<script type="module" src="./missing-export-nested.js"
    onerror="unreachable()" onload="log.push(4)"></script>
<script type="module" src="./missing-export.js"
    onerror="unreachable()" onload="log.push(5)"></script>
