UNPKG

ecmarkup

Version:

Custom element definitions and core utilities for markup that specifies ECMAScript and related technologies.

72 lines (71 loc) 1.33 kB
import type Spec from './Spec'; import type { Expr } from './expr-parser'; import type Biblio from './Biblio'; export declare function typecheck(spec: Spec): void; type Type = { kind: 'unknown'; } | { kind: 'never'; } | { kind: 'union'; of: NonUnion[]; } | { kind: 'list'; of: Type; } | { kind: 'record'; } | { kind: 'completion'; of: Type; } | { kind: 'real'; } | { kind: 'integer'; } | { kind: 'non-negative integer'; } | { kind: 'negative integer'; } | { kind: 'positive integer'; } | { kind: 'concrete real'; value: string; } | { kind: 'ES value'; } | { kind: 'string'; } | { kind: 'number'; } | { kind: 'integral number'; } | { kind: 'bigint'; } | { kind: 'boolean'; } | { kind: 'null'; } | { kind: 'undefined'; } | { kind: 'concrete string'; value: string; } | { kind: 'concrete number'; value: number; } | { kind: 'concrete bigint'; value: bigint; } | { kind: 'concrete boolean'; value: boolean; } | { kind: 'enum value'; value: string; }; type NonUnion = Exclude<Type, { kind: 'union'; }>; export declare function join(a: Type, b: Type): Type; export declare function meet(a: Type, b: Type): Type; export declare function typeFromExpr(expr: Expr, biblio: Biblio): Type; export {};