UNPKG

@lpc-lang/core

Version:
71 lines 5.86 kB
import { AnyFunction, AssertionLevel, Node, NodeArray, Type, Symbol, SymbolFlags, TypeFlags, ObjectFlags, SignatureFlags, SyntaxKind, NodeFlags, ModifierFlags, FlowNode, FlowFlags, TypeMapper, TypeMapKind, NodeCheckFlags, Macro, VarianceFlags } from "./_namespaces/lpc"; import * as lpc from "./_namespaces/lpc.js"; export declare namespace Debug { let currentLogLevel: lpc.LogLevel; let isDebugging: boolean; let loggingHost: LoggingHost | undefined; function attachNodeArrayDebugInfo(array: NodeArray<Node>): void; function formatVariance(varianceFlags: VarianceFlags): string; function formatNodeCheckFlags(flags: NodeCheckFlags | undefined): string; function fail(message?: string, stackCrawlMark?: AnyFunction): never; function assertLessThan(a: number, b: number, msg?: string, stackCrawlMark?: AnyFunction): void; function assertIsDefined<T>(value: T, message?: string, stackCrawlMark?: AnyFunction): asserts value is NonNullable<T>; function failBadSyntaxKind(node: Node, message?: string, stackCrawlMark?: AnyFunction): never; /** * Formats an enum value as a string for debugging and debug assertions. */ function formatEnum(value: number, enumObject: any, isFlags?: boolean): string; function formatSymbolFlags(flags: SymbolFlags | undefined): string; function formatObjectFlags(flags: ObjectFlags | undefined): string; function formatSignatureFlags(flags: SignatureFlags | undefined): string; function formatTypeFlags(flags: TypeFlags | undefined): string; function assertEachIsDefined<T extends Node>(value: NodeArray<T>, message?: string, stackCrawlMark?: AnyFunction): asserts value is NodeArray<T>; function assertEachIsDefined<T>(value: readonly T[], message?: string, stackCrawlMark?: AnyFunction): asserts value is readonly NonNullable<T>[]; function checkEachDefined<T, A extends readonly T[]>(value: A, message?: string, stackCrawlMark?: AnyFunction): A; /** * Injects debug information into frequently used types. */ function enableDebugInfo(): void; function assertEqual<T>(a: T, b: T, msg?: string, msg2?: string, stackCrawlMark?: AnyFunction): void; function assertGreaterThanOrEqual(a: number, b: number, stackCrawlMark?: AnyFunction): void; function assertLessThanOrEqual(a: number, b: number, stackCrawlMark?: AnyFunction): void; function checkDefined<T>(value: T | null | undefined, message?: string, stackCrawlMark?: AnyFunction): T; function formatSyntaxKind(kind: SyntaxKind | undefined): string; function formatNodeFlags(flags: NodeFlags | undefined): string; function formatModifierFlags(flags: ModifierFlags | undefined): string; function assert(expression: unknown, message?: string, verboseDebugInfo?: string | (() => string), stackCrawlMark?: AnyFunction): asserts expression; function formatFlowFlags(flags: FlowFlags | undefined): string; function attachMacroDebugInfo(macro: Macro): void; function attachFlowNodeDebugInfo(flowNode: FlowNode): FlowNode; function formatControlFlowGraph(flowNode: FlowNode): string; /** * Asserts a value has the specified type in typespace only (does not perform a runtime assertion). * This is useful in cases where we switch on `node.kind` and can be reasonably sure the type is accurate, and * as a result can reduce the number of unnecessary casts. */ function type<T>(value: unknown): asserts value is T; type DebugType = Type & { __debugTypeToString(): string; }; class DebugTypeMapper { kind: TypeMapKind; __debugToString(): string; } function assertNever(member: never, message?: string, stackCrawlMark?: AnyFunction): never; function attachDebugPrototypeIfDebug(mapper: TypeMapper): TypeMapper; function shouldAssert(level: AssertionLevel): boolean; function getFunctionName(func: AnyFunction): any; function assertNode<T extends Node, U extends T>(node: T | undefined, test: (node: T) => node is U, message?: string, stackCrawlMark?: AnyFunction): asserts node is U; function assertNode(node: Node | undefined, test: ((node: Node) => boolean) | undefined, message?: string, stackCrawlMark?: AnyFunction): void; function setAssertionLevel(level: AssertionLevel): void; function formatSymbol(symbol: Symbol): string; function assertEachNode<T extends Node, U extends T>(nodes: NodeArray<T>, test: (node: T) => node is U, message?: string, stackCrawlMark?: AnyFunction): asserts nodes is NodeArray<U>; function assertEachNode<T extends Node, U extends T>(nodes: readonly T[], test: (node: T) => node is U, message?: string, stackCrawlMark?: AnyFunction): asserts nodes is readonly U[]; function assertEachNode<T extends Node, U extends T>(nodes: NodeArray<T> | undefined, test: (node: T) => node is U, message?: string, stackCrawlMark?: AnyFunction): asserts nodes is NodeArray<U> | undefined; function assertEachNode<T extends Node, U extends T>(nodes: readonly T[] | undefined, test: (node: T) => node is U, message?: string, stackCrawlMark?: AnyFunction): asserts nodes is readonly U[] | undefined; function assertEachNode(nodes: readonly Node[], test: ((node: Node) => boolean) | undefined, message?: string, stackCrawlMark?: AnyFunction): void; function assertOptionalNode<T extends Node, U extends T>(node: T, test: (node: T) => node is U, message?: string, stackCrawlMark?: AnyFunction): asserts node is U; function assertOptionalNode<T extends Node, U extends T>(node: T | undefined, test: (node: T) => node is U, message?: string, stackCrawlMark?: AnyFunction): asserts node is U | undefined; function assertOptionalNode(node: Node | undefined, test: ((node: Node) => boolean) | undefined, message?: string, stackCrawlMark?: AnyFunction): void; } //# sourceMappingURL=debug.d.ts.map