feat: add pass statements
This commit is contained in:
@@ -82,6 +82,10 @@ class IfStmt:
|
|||||||
orelse: list[Stmt]
|
orelse: list[Stmt]
|
||||||
|
|
||||||
|
|
||||||
|
class Pass:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
###<
|
###<
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -593,6 +593,9 @@ class PythonAstPrinter(
|
|||||||
self._mark_last()
|
self._mark_last()
|
||||||
else_stmt.accept(self)
|
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:
|
def visit_binary_expr(self, expr: p.BinaryExpr) -> None:
|
||||||
self._write_line("BinaryExpr")
|
self._write_line("BinaryExpr")
|
||||||
with self._child_level():
|
with self._child_level():
|
||||||
|
|||||||
@@ -107,6 +107,9 @@ class Stmt(ABC):
|
|||||||
@abstractmethod
|
@abstractmethod
|
||||||
def visit_if_stmt(self, stmt: IfStmt) -> T: ...
|
def visit_if_stmt(self, stmt: IfStmt) -> T: ...
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def visit_pass(self, stmt: Pass) -> T: ...
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class ExpressionStmt(Stmt):
|
class ExpressionStmt(Stmt):
|
||||||
@@ -178,6 +181,14 @@ class IfStmt(Stmt):
|
|||||||
return visitor.visit_if_stmt(self)
|
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 #
|
# Expressions #
|
||||||
###############
|
###############
|
||||||
|
|||||||
@@ -328,6 +328,9 @@ class PythonTyper(
|
|||||||
if body_returned and else_returned:
|
if body_returned and else_returned:
|
||||||
raise ReturnException()
|
raise ReturnException()
|
||||||
|
|
||||||
|
def visit_pass(self, stmt: p.Pass) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
def visit_binary_expr(self, expr: p.BinaryExpr) -> Type:
|
def visit_binary_expr(self, expr: p.BinaryExpr) -> Type:
|
||||||
method: Optional[str] = OPERATOR_METHODS.get(expr.operator.__class__)
|
method: Optional[str] = OPERATOR_METHODS.get(expr.operator.__class__)
|
||||||
if method is None:
|
if method is None:
|
||||||
|
|||||||
@@ -150,6 +150,9 @@ class Resolver(p.Stmt.Visitor[None], p.Expr.Visitor[None]):
|
|||||||
self.resolve(*stmt.orelse)
|
self.resolve(*stmt.orelse)
|
||||||
self.end_scope()
|
self.end_scope()
|
||||||
|
|
||||||
|
def visit_pass(self, stmt: p.Pass) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
def visit_binary_expr(self, expr: p.BinaryExpr) -> None:
|
def visit_binary_expr(self, expr: p.BinaryExpr) -> None:
|
||||||
self.resolve(expr.left)
|
self.resolve(expr.left)
|
||||||
self.resolve(expr.right)
|
self.resolve(expr.right)
|
||||||
|
|||||||
@@ -188,6 +188,9 @@ class PythonHighlighter(
|
|||||||
for else_stmt in stmt.orelse:
|
for else_stmt in stmt.orelse:
|
||||||
else_stmt.accept(self)
|
else_stmt.accept(self)
|
||||||
|
|
||||||
|
def visit_pass(self, stmt: p.Pass) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
def visit_binary_expr(self, expr: p.BinaryExpr) -> None: ...
|
def visit_binary_expr(self, expr: p.BinaryExpr) -> None: ...
|
||||||
|
|
||||||
def visit_compare_expr(self, expr: p.CompareExpr) -> None: ...
|
def visit_compare_expr(self, expr: p.CompareExpr) -> None: ...
|
||||||
|
|||||||
@@ -140,5 +140,8 @@ class Generator(p.Stmt.Visitor[ast.stmt], p.Expr.Visitor[ast.expr]):
|
|||||||
orelse=self._visit_body(stmt.orelse),
|
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]:
|
def _visit_body(self, stmts: list[p.Stmt]) -> list[ast.stmt]:
|
||||||
return [stmt.accept(self) for stmt in stmts]
|
return [stmt.accept(self) for stmt in stmts]
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ from midas.ast.python import (
|
|||||||
LiteralExpr,
|
LiteralExpr,
|
||||||
LogicalExpr,
|
LogicalExpr,
|
||||||
MidasType,
|
MidasType,
|
||||||
|
Pass,
|
||||||
ReturnStmt,
|
ReturnStmt,
|
||||||
SliceExpr,
|
SliceExpr,
|
||||||
Stmt,
|
Stmt,
|
||||||
@@ -176,6 +177,11 @@ class PythonAstJsonSerializer(
|
|||||||
"orelse": self._serialize_list(stmt.orelse),
|
"orelse": self._serialize_list(stmt.orelse),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def visit_pass(self, stmt: Pass) -> dict:
|
||||||
|
return {
|
||||||
|
"_type": "Pass",
|
||||||
|
}
|
||||||
|
|
||||||
def visit_binary_expr(self, expr: BinaryExpr) -> dict:
|
def visit_binary_expr(self, expr: BinaryExpr) -> dict:
|
||||||
return {
|
return {
|
||||||
"_type": "BinaryExpr",
|
"_type": "BinaryExpr",
|
||||||
|
|||||||
Reference in New Issue
Block a user