/** * Type-assertion and cast-family expression emitters: typeAssertion (as T), * trycast, asinterface, numericNarrowing, stackalloc, defaultof, nameof, sizeof. */ import { IrExpression, IrType, IrNumericNarrowingExpression, IrTypeAssertionExpression, IrAsInterfaceExpression, IrTryCastExpression, IrStackAllocExpression, IrDefaultOfExpression, IrNameOfExpression, IrSizeOfExpression } from "@tsonic/frontend"; import type { NarrowedBinding } from "../emitter-types/core.js"; import { EmitterContext } from "../types.js"; import type { CSharpExpressionAst } from "../core/format/backend-ast/types.js"; export declare const POLYMORPHIC_THIS_MARKER = "__tsonic_polymorphic_this"; export declare const isPolymorphicThisType: (type: IrType | undefined) => boolean; export declare const isSuperMemberCallExpression: (expr: IrExpression) => boolean; export declare const getNarrowedBindingForExpression: (expr: IrExpression, context: EmitterContext) => NarrowedBinding | undefined; export declare const withoutNarrowedBinding: (expr: IrExpression, context: EmitterContext) => EmitterContext; /** * Emit a numeric narrowing expression as CSharpExpressionAst. */ export declare const emitNumericNarrowing: (expr: IrNumericNarrowingExpression, context: EmitterContext) => [CSharpExpressionAst, EmitterContext]; /** * Emit a type assertion expression as CSharpExpressionAst. * * TypeScript `x as T` becomes C# `(T)x` (throwing cast). */ export declare const emitTypeAssertion: (expr: IrTypeAssertionExpression, context: EmitterContext, expectedType?: IrType) => [CSharpExpressionAst, EmitterContext]; /** * Emit an asinterface expression as CSharpExpressionAst. */ export declare const emitAsInterface: (expr: IrAsInterfaceExpression, context: EmitterContext, expectedType?: IrType) => [CSharpExpressionAst, EmitterContext]; /** * Emit a trycast expression as CSharpExpressionAst. * * TypeScript `trycast(x)` becomes C# `x as T` (safe cast). */ export declare const emitTryCast: (expr: IrTryCastExpression, context: EmitterContext) => [CSharpExpressionAst, EmitterContext]; /** * Emit a stackalloc expression as CSharpExpressionAst. */ export declare const emitStackAlloc: (expr: IrStackAllocExpression, context: EmitterContext) => [CSharpExpressionAst, EmitterContext]; /** * Emit a defaultof expression as CSharpExpressionAst. */ export declare const emitDefaultOf: (expr: IrDefaultOfExpression, context: EmitterContext) => [CSharpExpressionAst, EmitterContext]; /** * Emit a nameof expression as a compile-time string literal using the authored TS name. */ export declare const emitNameOf: (expr: IrNameOfExpression, context: EmitterContext) => [CSharpExpressionAst, EmitterContext]; /** * Emit a sizeof expression as C# sizeof(T). */ export declare const emitSizeOf: (expr: IrSizeOfExpression, context: EmitterContext) => [CSharpExpressionAst, EmitterContext]; //# sourceMappingURL=type-assertion-emitters.d.ts.map