<!DOCTYPE html>
<title>Choice of instantiation errors</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(
        "Instantiation errors in different files should be reported " +
        "depending on different roots");
    window.addEventListener("load", test_load.step_func_done(ev => {
      assert_equals(log.length, 4);

      // Two different instantiation errors from different module scripts
      // should be reported for each <script> element.
      assert_equals(log[0].constructor, SyntaxError);
      assert_equals(log[1], 1);

      assert_equals(log[2].constructor, SyntaxError);
      assert_equals(log[3], 2);

      assert_not_equals(log[0], log[2],
          'two different instantiation errors should be reported');
    }));

    function unreachable() { log.push("unexpected"); }
</script>
<script type="module" src="./choice-of-error-2a.js"
    onerror="unreachable()" onload="log.push(1)"></script>
<script type="module" src="./choice-of-error-2b.js"
    onerror="unreachable()" onload="log.push(2)"></script>
