[3.8] bpo-37950: Fix ast.dump() when call with incompletely initialized node. (GH-15510) (GH-15582)
(cherry picked from commit e64f948e762a6b9fd02e2902ccf42438df6fcb61)
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index 47571c9..30460e7 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -645,6 +645,35 @@
"lineno=1, col_offset=0, end_lineno=1, end_col_offset=24)], type_ignores=[])"
)
+ def test_dump_incomplete(self):
+ node = ast.Raise(lineno=3, col_offset=4)
+ self.assertEqual(ast.dump(node),
+ "Raise()"
+ )
+ self.assertEqual(ast.dump(node, include_attributes=True),
+ "Raise(lineno=3, col_offset=4)"
+ )
+ node = ast.Raise(exc=ast.Name(id='e', ctx=ast.Load()), lineno=3, col_offset=4)
+ self.assertEqual(ast.dump(node),
+ "Raise(exc=Name(id='e', ctx=Load()))"
+ )
+ self.assertEqual(ast.dump(node, annotate_fields=False),
+ "Raise(Name('e', Load()))"
+ )
+ self.assertEqual(ast.dump(node, include_attributes=True),
+ "Raise(exc=Name(id='e', ctx=Load()), lineno=3, col_offset=4)"
+ )
+ self.assertEqual(ast.dump(node, annotate_fields=False, include_attributes=True),
+ "Raise(Name('e', Load()), lineno=3, col_offset=4)"
+ )
+ node = ast.Raise(cause=ast.Name(id='e', ctx=ast.Load()))
+ self.assertEqual(ast.dump(node),
+ "Raise(cause=Name(id='e', ctx=Load()))"
+ )
+ self.assertEqual(ast.dump(node, annotate_fields=False),
+ "Raise(cause=Name('e', Load()))"
+ )
+
def test_copy_location(self):
src = ast.parse('1 + 1', mode='eval')
src.body.right = ast.copy_location(ast.Num(2), src.body.right)