diff --git a/compiler/__main__.py b/compiler/__main__.py index 3a4814c..5f5be47 100644 --- a/compiler/__main__.py +++ b/compiler/__main__.py @@ -2,10 +2,11 @@ from __future__ import annotations import argparse import sys +import typing from pprint import pprint -from . import semantic -from .errors import CompilationError +from . import semantic, ir, optimizations +from .errors import CompilationError, CompilationWarning from .lexer import Lexer, Tokens from .logger import rootLogger, LogLevel from .parser import Parser @@ -52,9 +53,11 @@ def main(): context.check() - intermediate_representation = ast.intermediate_representation() + intermediate_representation = typing.cast(ast.intermediate_representation(), list[ir.IRAction]) pseudo_asm = [x.codegen() for x in intermediate_representation] for i, action in enumerate(intermediate_representation): + action.ir_location.line = i + action.ir_location.ir = pseudo_asm action.location.source = data @@ -70,6 +73,10 @@ def main(): raise e.__cause__ print(f"Caused by:\n{e.__cause__.__class__.__name__}: {e.__cause__}", file=sys.stderr) + finally: + CompilationWarning.show_warnings(data) + + def print_ir(intermediate_representation: list[ir.IRAction]): messages = [] for i, ir_item in enumerate(intermediate_representation):