feat(checker): type check slice expressions

This commit is contained in:
2026-06-14 16:58:20 +02:00
parent aec6b7aa7b
commit 49274be2f4
3 changed files with 12 additions and 0 deletions

View File

@@ -29,6 +29,7 @@ def define_builtins(reg: TypesRegistry):
int = reg.define_type("int", BaseType(name="int"))
float = reg.define_type("float", BaseType(name="float"))
str = reg.define_type("str", BaseType(name="str"))
slice = reg.define_type("slice", BaseType(name="slice"))
list = reg.define_type(
"list",

View File

@@ -507,6 +507,9 @@ class PythonTyper(
expr.location, operation, [(expr.index, index)], {}
)
def visit_slice_expr(self, expr: p.SliceExpr) -> Type:
return self.types.get_type("slice")
def visit_base_type(self, node: p.BaseType) -> Type:
base: Type
try:

View File

@@ -200,3 +200,11 @@ class Resolver(p.Stmt.Visitor[None], p.Expr.Visitor[None]):
def visit_subscript_expr(self, expr: p.SubscriptExpr) -> None:
self.resolve(expr.object)
self.resolve(expr.index)
def visit_slice_expr(self, expr: p.SliceExpr) -> None:
if expr.lower is not None:
self.resolve(expr.lower)
if expr.upper is not None:
self.resolve(expr.upper)
if expr.step is not None:
self.resolve(expr.step)