import { Ast } from "../../language"; import { ParseContext } from ".."; export type AstNodeById = Map; export type ChildIdsById = Map>; export type ContextNodeById = Map; export type IdsByNodeKind = Map>; export type ParentIdById = Map; export interface Collection { readonly astNodeById: AstNodeById; readonly contextNodeById: ContextNodeById; readonly parentIdById: ParentIdById; readonly childIdsById: ChildIdsById; readonly idsByNodeKind: IdsByNodeKind; readonly leafIds: Set; readonly rightMostLeaf: Ast.TNode | undefined; } export interface CollectionValidation { readonly astNodes: Map; readonly contextNodes: ReadonlyMap; readonly leafIds: ReadonlyArray; readonly nodeIdsByNodeKind: Map>; readonly badParentChildLink: ReadonlyArray<[number, number]>; readonly duplicateIds: ReadonlyArray; readonly unknownByNodeKindNodeIds: ReadonlyArray; readonly unknownByNodeKindNodeKinds: ReadonlyArray; readonly unknownChildIdsKeys: ReadonlyArray; readonly unknownChildIdsValues: ReadonlyArray; readonly unknownLeafIds: ReadonlyArray; readonly unknownParentIdKeys: ReadonlyArray; readonly unknownParentIdValues: ReadonlyArray; } export interface NodeSummary { readonly nodeKind: Ast.NodeKind; readonly childIds: ReadonlyArray | undefined; readonly parentId: number | undefined; readonly isAstNode: boolean; }