diff --git a/src/front/check2.ts b/src/front/check2.ts new file mode 100644 index 0000000..77c384a --- /dev/null +++ b/src/front/check2.ts @@ -0,0 +1,32 @@ +import { Syms } from "./resolve.ts"; +import * as ast from "../ast.ts"; +import { Ty } from "../ty.ts"; + +export function checkFn(fn: ast.FnStmt, syms: Syms) { +} + +export class FnTys { + constructor( + private nodeTys: Map, + ) {} + + get(node: ast.Node): Ty { + const ty = this.nodeTys.get(node); + if (ty === undefined) { + throw new Error(`no type for '${node.kind.tag}'`); + } + return ty; + } +} + +class FnChecker { + private nodeTys = new Map(); + + constructor( + private fn: ast.FnStmt, + private syms: Syms, + ) {} + + check() { + } +} diff --git a/src/front/mod.ts b/src/front/mod.ts index 84a7d34..25c8a8a 100644 --- a/src/front/mod.ts +++ b/src/front/mod.ts @@ -1,3 +1,4 @@ export * from "./parse.ts"; export * from "./resolve.ts"; export * from "./check.ts"; +export * from "./check2.ts";