Skip to content

Commit 38d8639

Browse files
committed
Update interpreter for class definition
1 parent 85fa771 commit 38d8639

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

monic/expressions/interpreter.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2604,16 +2604,18 @@ def bound_super_method(name, current_class=next_class):
26042604

26052605
return custom_super
26062606

2607-
def _create_class_namespace(self, node: ast.ClassDef) -> dict[str, t.Any]:
2607+
def _create_class_namespace(
2608+
self, node: ast.ClassDef, namespace: dict[str, t.Any]
2609+
) -> dict[str, t.Any]:
26082610
"""Create and populate the class namespace.
26092611
26102612
Args:
26112613
node: ClassDef AST node
2614+
namespace: Class namespace
26122615
26132616
Returns:
26142617
The populated class namespace
26152618
"""
2616-
namespace: dict[str, t.Any] = {}
26172619

26182620
# Save current environment
26192621
prev_env = self.local_env
@@ -2640,8 +2642,7 @@ def visit_ClassDef(self, node: ast.ClassDef) -> None:
26402642
# Evaluate base classes
26412643
bases = tuple(self.visit(base) for base in node.bases)
26422644

2643-
# Create and populate the class namespace
2644-
namespace = self._create_class_namespace(node)
2645+
namespace: dict[str, t.Any] = {}
26452646

26462647
# Add custom super to the class namespace (will be updated after
26472648
# class creation)
@@ -2650,6 +2651,9 @@ def visit_ClassDef(self, node: ast.ClassDef) -> None:
26502651
# Set the module name for the class
26512652
namespace["__module__"] = "monic.expressions.__namespace__"
26522653

2654+
# Create and populate the class namespace
2655+
namespace = self._create_class_namespace(node, namespace)
2656+
26532657
# Create the class object
26542658
class_obj = types.new_class(
26552659
node.name, bases, {}, lambda ns: ns.update(namespace)

0 commit comments

Comments
 (0)