struct resolution

This commit is contained in:
nub31
2026-02-09 15:52:14 +01:00
parent f035499ba7
commit 89a827fdef
3 changed files with 106 additions and 60 deletions

View File

@@ -8,38 +8,34 @@ foreach (var fileName in args)
var tokens = Tokenizer.Tokenize(fileName, file, out var tokenizerDiagnostics);
foreach (var diagnostic in tokenizerDiagnostics)
{
DiagnosticFormatter.Print(diagnostic, Console.Error);
}
if (tokenizerDiagnostics.Any(x => x.Severity == DiagnosticSeverity.Error))
{
return 1;
}
var ast = Parser.Parse(fileName, tokens, out var parserDiagnostics);
foreach (var diagnostic in parserDiagnostics)
{
DiagnosticFormatter.Print(diagnostic, Console.Error);
}
if (parserDiagnostics.Any(x => x.Severity == DiagnosticSeverity.Error))
{
return 1;
}
var typedAst = TypeChecker.Check(fileName, ast, out var typeCheckerDiagnostics);
var typeResolver = TypeResolver.Create(fileName, ast, out var typeResolverDiagnostics);
foreach (var diagnostic in typeResolverDiagnostics)
DiagnosticFormatter.Print(diagnostic, Console.Error);
if (typeResolverDiagnostics.Any(x => x.Severity == DiagnosticSeverity.Error))
return 1;
var typedAst = TypeChecker.Check(fileName, ast, typeResolver, out var typeCheckerDiagnostics);
foreach (var diagnostic in typeCheckerDiagnostics)
{
DiagnosticFormatter.Print(diagnostic, Console.Error);
}
if (typeCheckerDiagnostics.Any(x => x.Severity == DiagnosticSeverity.Error))
{
return 1;
}
var output = Generator.Emit(typedAst);