Files
scriptc/tests/corpus/local-class-evaluation.ts
Chris Tate 31332427b6 Compile local class factories and spread calls natively
- Preserve fresh constructor identity and shared captures across local class instances.
- Carry constructors through unknown values without a JavaScript engine.
- Support runtime-length spreads into fixed and rest parameters.
2026-09-28 20:11:25 -05:00

33 lines
949 B
TypeScript

function make(value: number) {
return () => class Local {
read(): number { return value; }
async delayed(): Promise<number> { await Promise.resolve(); return ++value; }
};
}
const evaluate = make(2);
const First = evaluate();
const Second = evaluate();
const first = new First();
const second = new Second();
console.log(First === Second, await first.delayed(), second.read());
function loop(): number[] {
const reads: (() => number)[] = [];
for (let i = 0; i < 3; i++) {
const Local = class { read(): number { return i; } };
const value = new Local();
reads.push(() => value.read());
}
return reads.map((read) => read());
}
console.log(loop().join(","));
function tdz(): void {
const Local = class { read(): number { return later; } };
const value = new Local();
try { console.log(value.read()); } catch (error) { console.log((error as Error).name); }
let later = 17;
console.log(value.read());
}
tdz();