diff --git a/packages/compiler/scripts/modparse.ts b/packages/compiler/scripts/modparse.ts index 1317e31e..6b2a70e0 100644 --- a/packages/compiler/scripts/modparse.ts +++ b/packages/compiler/scripts/modparse.ts @@ -13,9 +13,9 @@ const WASM_NUMTYPES = [0x7c, 0x7d, 0x7e, 0x7f]; const WASM_VECTYPE = 0x7b; const WASM_REFTYPES = [0x6f, 0x70]; -function checkNotNull(x): NonNullable { +function checkNotNull(x: T): NonNullable { assert(x !== null, 'unexpected null value'); - return x; + return x as NonNullable; } function skipPreamble(bytes: Uint8Array): void { diff --git a/packages/compiler/tsconfig.json b/packages/compiler/tsconfig.json index ca741ee4..8717b89f 100644 --- a/packages/compiler/tsconfig.json +++ b/packages/compiler/tsconfig.json @@ -18,8 +18,12 @@ }, "include": [ "src/**/*", + "test/**/*.ts", + "scripts/**/*.ts", "build/ohmRuntime.wasm_sections.ts", "build/ohm-grammar-wasm.ts", - "index.ts" - ] + "index.ts", + "tsdown.config.ts" + ], + "exclude": ["test/_stage-1-cst.spec.ts"] } diff --git a/packages/ohm-js/index.d.ts b/packages/ohm-js/index.d.ts index 1fbeb582..e41cdc00 100644 --- a/packages/ohm-js/index.d.ts +++ b/packages/ohm-js/index.d.ts @@ -105,9 +105,16 @@ export class PExpr { toString(): string; toDisplayString(): string; } -export class Terminal extends PExpr {} -export class Range extends PExpr {} -export class Param extends PExpr {} +export class Terminal extends PExpr { + obj: string; +} +export class Range extends PExpr { + from: string; + to: string; +} +export class Param extends PExpr { + index: number; +} export class Alt extends PExpr { terms: PExpr[]; } @@ -116,14 +123,25 @@ export class Splice extends Alt {} export class Seq extends PExpr { factors: PExpr[]; } -export class Iter extends PExpr {} +export class Iter extends PExpr { + expr: PExpr; +} export class Star extends Iter {} export class Plus extends Iter {} export class Opt extends Iter {} -export class Not extends PExpr {} -export class Lookahead extends PExpr {} -export class Lex extends PExpr {} -export class Apply extends PExpr {} +export class Not extends PExpr { + expr: PExpr; +} +export class Lookahead extends PExpr { + expr: PExpr; +} +export class Lex extends PExpr { + expr: PExpr; +} +export class Apply extends PExpr { + ruleName: string; + args: PExpr[]; +} export class UnicodeChar extends PExpr {} export class CaseInsensitiveTerminal extends PExpr {} diff --git a/packages/ohm-js/scripts/data/index.d.ts.template b/packages/ohm-js/scripts/data/index.d.ts.template index 94ddb9bd..b23a251d 100644 --- a/packages/ohm-js/scripts/data/index.d.ts.template +++ b/packages/ohm-js/scripts/data/index.d.ts.template @@ -104,9 +104,16 @@ export class PExpr { toString(): string; toDisplayString(): string; } -export class Terminal extends PExpr {} -export class Range extends PExpr {} -export class Param extends PExpr {} +export class Terminal extends PExpr { + obj: string; +} +export class Range extends PExpr { + from: string; + to: string; +} +export class Param extends PExpr { + index: number; +} export class Alt extends PExpr { terms: PExpr[]; } @@ -115,14 +122,25 @@ export class Splice extends Alt {} export class Seq extends PExpr { factors: PExpr[]; } -export class Iter extends PExpr {} +export class Iter extends PExpr { + expr: PExpr; +} export class Star extends Iter {} export class Plus extends Iter {} export class Opt extends Iter {} -export class Not extends PExpr {} -export class Lookahead extends PExpr {} -export class Lex extends PExpr {} -export class Apply extends PExpr {} +export class Not extends PExpr { + expr: PExpr; +} +export class Lookahead extends PExpr { + expr: PExpr; +} +export class Lex extends PExpr { + expr: PExpr; +} +export class Apply extends PExpr { + ruleName: string; + args: PExpr[]; +} export class UnicodeChar extends PExpr {} export class CaseInsensitiveTerminal extends PExpr {}