mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-21 05:50:55 +08:00
* Expand static Effect support across common APIs * Preserve compiler parity across expanded Effect patterns * Fix compiler regressions exposed by Effect coverage * Bound shared type conversion traversal * Clarify conversion contracts and tidy fixtures * Run every Effect fixture in CI shards * Preserve inferred array assignments in concurrent Effect programs * Record inferred array fixture compiler ordering
30 lines
904 B
TypeScript
30 lines
904 B
TypeScript
function save(value: unknown): () => unknown {
|
|
try { throw value; }
|
|
catch (error) { return () => error; }
|
|
}
|
|
const error = new Error("original");
|
|
const saved = save(error)();
|
|
console.log(saved instanceof Error && saved === error, save(42)(), save("hello")());
|
|
|
|
function rethrow(): () => never {
|
|
try { throw error; }
|
|
catch (caught) { return () => { throw caught; }; }
|
|
}
|
|
try { rethrow()(); }
|
|
catch (caught) { if (caught instanceof Error) console.log(caught === error, caught instanceof Error); }
|
|
|
|
function nested(): () => () => string {
|
|
try { throw new TypeError("nested"); }
|
|
catch (caught) { return () => () => String(caught); }
|
|
}
|
|
console.log(nested()()());
|
|
|
|
function cycle() {
|
|
const object: { callback?: () => unknown } = {};
|
|
const value: unknown = object;
|
|
try { throw value; }
|
|
catch (caught) { object.callback = () => caught; }
|
|
console.log(object.callback!() === value);
|
|
}
|
|
cycle();
|