@ 261107.24
current
import assert from 'node:assert/strict';

export async function testErrorContextIntrinsics({ load }) {
    const { initializeRepTableClass } = await load('intrinsics/core');
    const RepTable = initializeRepTableClass({ RuntimeError: WebAssembly.RuntimeError });
    const {
        initializeGlobalErrorContextTableClass,
        initializeLocalErrorContextTables,
        initializeErrorContextTableRegistrations,
        errCtxReserveGlobalRep,
        errCtxGlobalRefCountAdd,
    } = await load('intrinsics/error-context');
    const GlobalTable = initializeGlobalErrorContextTableClass(RepTable);
    assert.equal(GlobalTable.data, null);
    assert.equal(initializeLocalErrorContextTables().size, 0);
    assert.deepEqual(initializeErrorContextTableRegistrations(), {});
    const reserved = errCtxReserveGlobalRep(GlobalTable, 'release', 0);
    assert.equal(errCtxGlobalRefCountAdd(GlobalTable, reserved.globalRep), 1);
    assert.equal(GlobalTable.get().get(reserved.globalRep).debugMessage, 'release');
}