diff --git a/midas/checker/midas.py b/midas/checker/midas.py index 827ce72..29846c6 100644 --- a/midas/checker/midas.py +++ b/midas/checker/midas.py @@ -383,6 +383,16 @@ class MidasTyper(m.Stmt.Visitor[None], m.Expr.Visitor[Type], m.Type.Visitor[Type return UnknownType() def visit_generic_type(self, type: m.GenericType) -> Type: + match type.type: + case m.NamedType(name=Token(lexeme="Column")): + if len(type.args) != 1: + self.reporter.error( + type.location, + f"Column requires 1 type argument, {len(type.args)} provided", + ) + return ColumnType(type=UnknownType()) + return ColumnType(type=type.args[0].accept(self)) + type_: Type = type.type.accept(self) args: list[Type] = [arg.accept(self) for arg in type.args] try: diff --git a/midas/checker/python.py b/midas/checker/python.py index 8ed74ad..b592ec1 100644 --- a/midas/checker/python.py +++ b/midas/checker/python.py @@ -938,6 +938,15 @@ class PythonTyper( return UnknownType() def visit_base_type(self, node: p.BaseType) -> Type: + if node.base == "Column": + if len(node.args) != 1: + self.reporter.error( + node.location, + f"Column requires 1 type argument, {len(node.args)} provided", + ) + return ColumnType(type=UnknownType()) + return ColumnType(type=self.resolve_type_expr(node.args[0])) + base: Type try: base = self.types.get_type(node.base)