/** * Checking a `loop`, and what one iteration can read of the loop itself: the * previous iteration, the carried value, the ledger. * * Its body reads `.previous.`, the output of a body node one * iteration back, so the body's output types are needed before the body is * checked. A first, silent pass gives them; outputs never depend on reads, so * that pass cannot disagree with the one that reports. */ import type { CheckedOne, Checker } from "./check.ts"; import type { LoopNode } from "./node.ts"; import type { Scope } from "./scope.ts"; import { type ValueType } from "./type.ts"; /** A `loop`: its body in a scope of its own, `until` and `give-up` read once the body ended. */ export declare function checkLoop(checker: Checker, node: LoopNode, scope: Scope): CheckedOne; /** * What two types have in common: the fields both sides have with the same * name and type, so a carry read on any iteration reads what is there. */ export declare function shared(a: ValueType, b: ValueType): ValueType | undefined; //# sourceMappingURL=check-loop.d.ts.map