feat: add pass statements

This commit is contained in:
2026-06-15 13:28:24 +02:00
parent 3281324caf
commit f25341b1e7
8 changed files with 36 additions and 0 deletions

View File

@@ -82,6 +82,10 @@ class IfStmt:
orelse: list[Stmt]
class Pass:
pass
###<

View File

@@ -593,6 +593,9 @@ class PythonAstPrinter(
self._mark_last()
else_stmt.accept(self)
def visit_pass(self, stmt: p.Pass) -> None:
self._write_line("Pass")
def visit_binary_expr(self, expr: p.BinaryExpr) -> None:
self._write_line("BinaryExpr")
with self._child_level():

View File

@@ -107,6 +107,9 @@ class Stmt(ABC):
@abstractmethod
def visit_if_stmt(self, stmt: IfStmt) -> T: ...
@abstractmethod
def visit_pass(self, stmt: Pass) -> T: ...
@dataclass(frozen=True)
class ExpressionStmt(Stmt):
@@ -178,6 +181,14 @@ class IfStmt(Stmt):
return visitor.visit_if_stmt(self)
@dataclass(frozen=True)
class Pass(Stmt):
pass
def accept(self, visitor: Stmt.Visitor[T]) -> T:
return visitor.visit_pass(self)
###############
# Expressions #
###############

View File

@@ -328,6 +328,9 @@ class PythonTyper(
if body_returned and else_returned:
raise ReturnException()
def visit_pass(self, stmt: p.Pass) -> None:
pass
def visit_binary_expr(self, expr: p.BinaryExpr) -> Type:
method: Optional[str] = OPERATOR_METHODS.get(expr.operator.__class__)
if method is None:

View File

@@ -150,6 +150,9 @@ class Resolver(p.Stmt.Visitor[None], p.Expr.Visitor[None]):
self.resolve(*stmt.orelse)
self.end_scope()
def visit_pass(self, stmt: p.Pass) -> None:
pass
def visit_binary_expr(self, expr: p.BinaryExpr) -> None:
self.resolve(expr.left)
self.resolve(expr.right)

View File

@@ -188,6 +188,9 @@ class PythonHighlighter(
for else_stmt in stmt.orelse:
else_stmt.accept(self)
def visit_pass(self, stmt: p.Pass) -> None:
pass
def visit_binary_expr(self, expr: p.BinaryExpr) -> None: ...
def visit_compare_expr(self, expr: p.CompareExpr) -> None: ...

View File

@@ -140,5 +140,8 @@ class Generator(p.Stmt.Visitor[ast.stmt], p.Expr.Visitor[ast.expr]):
orelse=self._visit_body(stmt.orelse),
)
def visit_pass(self, stmt: p.Pass) -> ast.stmt:
return ast.Pass()
def _visit_body(self, stmts: list[p.Stmt]) -> list[ast.stmt]:
return [stmt.accept(self) for stmt in stmts]

View File

@@ -20,6 +20,7 @@ from midas.ast.python import (
LiteralExpr,
LogicalExpr,
MidasType,
Pass,
ReturnStmt,
SliceExpr,
Stmt,
@@ -176,6 +177,11 @@ class PythonAstJsonSerializer(
"orelse": self._serialize_list(stmt.orelse),
}
def visit_pass(self, stmt: Pass) -> dict:
return {
"_type": "Pass",
}
def visit_binary_expr(self, expr: BinaryExpr) -> dict:
return {
"_type": "BinaryExpr",