fix(checker): handle application of column type
This commit is contained in:
@@ -383,6 +383,16 @@ class MidasTyper(m.Stmt.Visitor[None], m.Expr.Visitor[Type], m.Type.Visitor[Type
|
|||||||
return UnknownType()
|
return UnknownType()
|
||||||
|
|
||||||
def visit_generic_type(self, type: m.GenericType) -> Type:
|
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)
|
type_: Type = type.type.accept(self)
|
||||||
args: list[Type] = [arg.accept(self) for arg in type.args]
|
args: list[Type] = [arg.accept(self) for arg in type.args]
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -938,6 +938,15 @@ class PythonTyper(
|
|||||||
return UnknownType()
|
return UnknownType()
|
||||||
|
|
||||||
def visit_base_type(self, node: p.BaseType) -> Type:
|
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
|
base: Type
|
||||||
try:
|
try:
|
||||||
base = self.types.get_type(node.base)
|
base = self.types.get_type(node.base)
|
||||||
|
|||||||
Reference in New Issue
Block a user