/** * Loop statement emitters (while, for, for-of) * Returns CSharpStatementAst nodes. */ import { IrStatement } from "@tsonic/frontend"; import { EmitterContext } from "../../types.js"; import type { CSharpStatementAst } from "../../core/format/backend-ast/types.js"; /** * Emit a while statement as AST */ export declare const emitWhileStatementAst: (stmt: Extract, context: EmitterContext) => [readonly CSharpStatementAst[], EmitterContext]; /** * Emit a for statement as AST * * Special handling for canonical integer loop counters: * `for (let i = 0; i < n; i++)` emits as `for (int i = 0; ...)` in C#. * This avoids the double→int conversion cost when using loop variables * as CLR indexers (e.g., list[i]). */ export declare const emitForStatementAst: (stmt: Extract, context: EmitterContext) => [readonly CSharpStatementAst[], EmitterContext]; /** * Emit a for-of statement as AST * * TypeScript: for (const x of items) { ... } * C#: foreach (var x in items) { ... } * * TypeScript: for await (const x of asyncItems) { ... } * C#: await foreach (var x in asyncItems) { ... } */ export declare const emitForOfStatementAst: (stmt: Extract, context: EmitterContext) => [readonly CSharpStatementAst[], EmitterContext]; /** Emit a for-in statement over a statically proven string-key carrier. */ export declare const emitForInStatementAst: (stmt: Extract, context: EmitterContext) => [readonly CSharpStatementAst[], EmitterContext]; //# sourceMappingURL=loops.d.ts.map