From b35330b63a832b21cf39efa71cccf65417e42cc1 Mon Sep 17 00:00:00 2001 From: "Kim, YeonWoo" Date: Mon, 24 Oct 2022 00:59:49 +0900 Subject: [PATCH] Add `_fields` attribute to ast --- Lib/test/test_ast.py | 2 -- vm/src/stdlib/ast.rs | 10 ++++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 74d81c1ba..3e3ac81e0 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -275,8 +275,6 @@ class AST_Tests(unittest.TestCase): self._assertTrueorder(value, parent_pos) self.assertEqual(ast_node._fields, ast_node.__match_args__) - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_AST_objects(self): x = ast.AST() self.assertEqual(x._fields, ()) diff --git a/vm/src/stdlib/ast.rs b/vm/src/stdlib/ast.rs index 014bfd204..82710272f 100644 --- a/vm/src/stdlib/ast.rs +++ b/vm/src/stdlib/ast.rs @@ -24,8 +24,9 @@ use rustpython_parser::parser; #[pymodule] mod _ast { use crate::{ - builtins::PyStrRef, function::FuncArgs, AsObject, PyObjectRef, PyPayload, PyResult, - VirtualMachine, + builtins::{PyStrRef, PyTupleRef}, + function::FuncArgs, + AsObject, Context, PyObjectRef, PyPayload, PyResult, VirtualMachine, }; #[pyattr] #[pyclass(module = "_ast", name = "AST")] @@ -65,6 +66,11 @@ mod _ast { } Ok(()) } + + #[pyattr(name = "_fields")] + fn fields(ctx: &Context) -> PyTupleRef { + ctx.empty_tuple.clone() + } } #[pyattr(name = "PyCF_ONLY_AST")]