@lpc-lang/core
Version:
LPC Language Compiler Library
71 lines • 5.86 kB
TypeScript
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