import { overwriteReadonlyProp } from "./lab/overwriteReadonlyProp.ts";import { assertIsRefWrapper } from "./zz_internal/assertIsRefWrapper.ts";
export class AssertionError extends Error { constructor(msg: string | undefined) { super(`Wrong assertion encountered` + (!msg ? "" : `: "${msg}"`));
Object.setPrototypeOf(this, new.target.prototype);
if (!this.stack) { return; }
try { overwriteReadonlyProp( this, "stack", this.stack .split("\n") .filter((...[, i]) => i !== 1 && i !== 2) .join("\n"), ); } catch {} }}
export function assert<_T extends true>(condition?: any, msg?: string): asserts condition { if (arguments.length === 0) { condition = true; } if (assertIsRefWrapper.ref !== undefined) { assertIsRefWrapper.ref = undefined; return; }
if (!condition) { throw new AssertionError(msg); }}