We're checking types!!!!

This commit is contained in:
Dustin Swan 2026-03-26 18:32:40 -06:00
parent f3c3a76671
commit f272ffaca2
No known key found for this signature in database
GPG key ID: 30D46587E2100467
6 changed files with 304 additions and 24 deletions

View file

@ -1,8 +1,8 @@
import { tokenize } from './lexer'
import { Parser } from './parser'
import { compile, recompile, definitions, freeVars, dependencies, dependents, astRegistry } from './compiler'
import { prettyPrint, prettyPrintType } from './ast'
import type { AST } from './ast'
import { prettyPrint } from './ast'
import type { AST, Definition } from './ast'
import { measure } from './ui';
const STORAGE_KEY = 'cg-definitions';
@ -213,7 +213,7 @@ export const _rt = {
if (defs.length > 0) {
const def = defs[0];
recompile(def.name, def.body);
recompile(def.name, def.body!);
const source = prettyPrint({ kind: 'definition', name: def.name, body: def.body });
appendChangeLog(def.name, source);
saveDefinitions();
@ -230,7 +230,7 @@ export const _rt = {
const tokens = tokenize(wrapped);
const parser = new Parser(tokens, wrapped);
const { definitions: defs } = parser.parse();
const ast = defs[0].body;
const ast = defs[0].body!;
// validate free vars
const free = freeVars(ast);
@ -243,7 +243,7 @@ export const _rt = {
return { _tag: 'Err', _0: `Unknown: ${unknown.join(', ')}` };
}
const compiled = compile(defs[0].body);
const compiled = compile(defs[0].body!);
const fn = new Function('_rt', 'store', `return ${compiled}`);
const result = fn(_rt, store);
if (result === undefined) {
@ -277,7 +277,7 @@ export function loadDefinitions() {
const parser = new Parser(tokens, source as string);
const { definitions: defs } = parser.parse();
if (defs.length > 0) {
recompile(defs[0].name, defs[0].body);
recompile(defs[0].name, defs[0].body!);
}
}
} catch (e) {