diff --git a/midas/checker/checker.py b/midas/checker/checker.py index b019083..8fecb5e 100644 --- a/midas/checker/checker.py +++ b/midas/checker/checker.py @@ -124,14 +124,14 @@ class Checker( def visit_literal_expr(self, expr: p.LiteralExpr) -> Type: match expr.value: + case bool(): # Must be before int + return self.ctx.get_type("bool") case int(): - return BaseType(name="int") + return self.ctx.get_type("int") case float(): - return BaseType(name="float") - case bool(): - return BaseType(name="bool") + return self.ctx.get_type("float") case str(): - return BaseType(name="str") + return self.ctx.get_type("str") case _: return UnknownType() diff --git a/midas/resolver/midas.py b/midas/resolver/midas.py index 66c3152..5a20a35 100644 --- a/midas/resolver/midas.py +++ b/midas/resolver/midas.py @@ -27,9 +27,10 @@ class MidasResolver(m.Stmt.Visitor[None], m.Expr.Visitor[Type]): return result def _define_builtin(self): + self.define_type("bool", BaseType(name="bool")) self.define_type("int", BaseType(name="int")) self.define_type("float", BaseType(name="float")) - self.define_type("bool", BaseType(name="bool")) + self.define_type("str", BaseType(name="str")) self.define_operation( left=self.get_type("int"), operator="__add__",