fix(checker): get literal types from context
This commit is contained in:
@@ -124,14 +124,14 @@ class Checker(
|
|||||||
|
|
||||||
def visit_literal_expr(self, expr: p.LiteralExpr) -> Type:
|
def visit_literal_expr(self, expr: p.LiteralExpr) -> Type:
|
||||||
match expr.value:
|
match expr.value:
|
||||||
|
case bool(): # Must be before int
|
||||||
|
return self.ctx.get_type("bool")
|
||||||
case int():
|
case int():
|
||||||
return BaseType(name="int")
|
return self.ctx.get_type("int")
|
||||||
case float():
|
case float():
|
||||||
return BaseType(name="float")
|
return self.ctx.get_type("float")
|
||||||
case bool():
|
|
||||||
return BaseType(name="bool")
|
|
||||||
case str():
|
case str():
|
||||||
return BaseType(name="str")
|
return self.ctx.get_type("str")
|
||||||
case _:
|
case _:
|
||||||
return UnknownType()
|
return UnknownType()
|
||||||
|
|
||||||
|
|||||||
@@ -27,9 +27,10 @@ class MidasResolver(m.Stmt.Visitor[None], m.Expr.Visitor[Type]):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
def _define_builtin(self):
|
def _define_builtin(self):
|
||||||
|
self.define_type("bool", BaseType(name="bool"))
|
||||||
self.define_type("int", BaseType(name="int"))
|
self.define_type("int", BaseType(name="int"))
|
||||||
self.define_type("float", BaseType(name="float"))
|
self.define_type("float", BaseType(name="float"))
|
||||||
self.define_type("bool", BaseType(name="bool"))
|
self.define_type("str", BaseType(name="str"))
|
||||||
self.define_operation(
|
self.define_operation(
|
||||||
left=self.get_type("int"),
|
left=self.get_type("int"),
|
||||||
operator="__add__",
|
operator="__add__",
|
||||||
|
|||||||
Reference in New Issue
Block a user