resolmap into syms
Some checks failed
Check / Explore-Gitea-Actions (push) Failing after 10s

This commit is contained in:
sfja 2026-03-16 22:32:29 +01:00
parent 5af5bfed7f
commit c8aa3e7c1c
5 changed files with 20 additions and 20 deletions

View File

@ -2,17 +2,17 @@ import * as ast from "../ast.ts";
import { FileReporter, Loc } from "../diagnostics.ts"; import { FileReporter, Loc } from "../diagnostics.ts";
import { Ty } from "../ty.ts"; import { Ty } from "../ty.ts";
import { builtins } from "./builtins.ts"; import { builtins } from "./builtins.ts";
import { ResolveMap } from "./resolve.ts"; import { Syms } from "./resolve.ts";
export class Tys { export class Tys {
private nodeTys = new Map<number, Ty>(); private nodeTys = new Map<number, Ty>();
private checker: Checker; private checker: Checker;
constructor( constructor(
private resols: ResolveMap, private syms: Syms,
private reporter: FileReporter, private reporter: FileReporter,
) { ) {
this.checker = new Checker(this, this.resols, this.reporter); this.checker = new Checker(this, this.syms, this.reporter);
} }
expr(node: ast.Node): Ty { expr(node: ast.Node): Ty {
@ -28,7 +28,7 @@ export class Tys {
class Checker { class Checker {
constructor( constructor(
private tys: Tys, private tys: Tys,
private resols: ResolveMap, private syms: Syms,
private reporter: FileReporter, private reporter: FileReporter,
) {} ) {}
@ -40,7 +40,7 @@ class Checker {
} }
if (node.is("Param")) { if (node.is("Param")) {
const sym = this.resols.get(node); const sym = this.syms.get(node);
if (sym.tag === "Let") { if (sym.tag === "Let") {
const exprTy = this.tys.expr(sym.stmt.kind.expr); const exprTy = this.tys.expr(sym.stmt.kind.expr);
@ -66,7 +66,7 @@ class Checker {
} }
if (node.is("IdentExpr")) { if (node.is("IdentExpr")) {
const sym = this.resols.get(node); const sym = this.syms.get(node);
if (sym.tag === "Fn") { if (sym.tag === "Fn") {
return this.tys.expr(sym.stmt); return this.tys.expr(sym.stmt);
} }

View File

@ -2,7 +2,7 @@ import * as ast from "../ast.ts";
import { FileReporter } from "../diagnostics.ts"; import { FileReporter } from "../diagnostics.ts";
import { builtins } from "./builtins.ts"; import { builtins } from "./builtins.ts";
export class ResolveMap { export class Syms {
constructor( constructor(
private resols: Map<number, Sym>, private resols: Map<number, Sym>,
) {} ) {}
@ -35,7 +35,7 @@ export type Sym =
export function resolve( export function resolve(
file: ast.Node, file: ast.Node,
reporter: FileReporter, reporter: FileReporter,
): ResolveMap { ): Syms {
let syms = ResolverSyms.root(); let syms = ResolverSyms.root();
const resols = new Map<number, Sym>(); const resols = new Map<number, Sym>();
@ -88,7 +88,7 @@ export function resolve(
}, },
}); });
return new ResolveMap(resols); return new Syms(resols);
} }
class ResolverSyms { class ResolverSyms {

View File

@ -12,8 +12,8 @@ const text = await Deno.readTextFile(filename);
const fileRep = reporter.ofFile({ filename, text }); const fileRep = reporter.ofFile({ filename, text });
const fileAst = front.parse(text, fileRep); const fileAst = front.parse(text, fileRep);
const resols = front.resolve(fileAst, fileRep); const syms = front.resolve(fileAst, fileRep);
const tys = new front.Tys(resols, fileRep); const tys = new front.Tys(syms, fileRep);
let mainFn: ast.NodeWithKind<"FnStmt"> | null = null; let mainFn: ast.NodeWithKind<"FnStmt"> | null = null;
@ -36,7 +36,7 @@ if (!mainFn) {
Deno.exit(1); Deno.exit(1);
} }
const m = new middle.MiddleLowerer(resols, tys); const m = new middle.MiddleLowerer(syms, tys);
const mainMiddleFn = m.lowerFn(mainFn); const mainMiddleFn = m.lowerFn(mainFn);
if (!Deno.args.includes("--test")) { if (!Deno.args.includes("--test")) {

View File

@ -1,5 +1,5 @@
import * as ast from "./ast.ts"; import * as ast from "./ast.ts";
import { ResolveMap, Tys } from "./front/mod.ts"; import { Syms, Tys } from "./front/mod.ts";
import { Ty } from "./ty.ts"; import { Ty } from "./ty.ts";
import { BasicBlock, BinaryOp, Fn, Inst, InstKind } from "./mir.ts"; import { BasicBlock, BinaryOp, Fn, Inst, InstKind } from "./mir.ts";
@ -7,7 +7,7 @@ export class MiddleLowerer {
private fns = new Map<number, Fn>(); private fns = new Map<number, Fn>();
constructor( constructor(
private resols: ResolveMap, private resols: Syms,
private tys: Tys, private tys: Tys,
) {} ) {}
@ -28,7 +28,7 @@ class FnLowerer {
constructor( constructor(
private lowerer: MiddleLowerer, private lowerer: MiddleLowerer,
private resols: ResolveMap, private resols: Syms,
private tys: Tys, private tys: Tys,
private stmt: ast.FnStmt, private stmt: ast.FnStmt,
) {} ) {}

View File

@ -1,12 +1,12 @@
fn main() fn main()
{ {
let array: [int; 3] = [1, 2, false]; let array: [int; 3] = [1, 2, 3];
// let a = 4; let a = 4;
// let b = a; let b = a;
// array[0] = a; array[0] = a;
// print_int(array[0]); print_int(array[0]);
// let elem: int = array[0]; // let elem: int = array[0];
// // e xpect: 1 // // e xpect: 1