struct resolution
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user