bpo-40355: Improve error messages in ast.literal_eval with malformed Dict nodes (GH-19868)


Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
(cherry picked from commit c21c51235aa8061da6b0593d6f857f42fd92fd8b)

Co-authored-by: Curtis Bucher <cpbucher5@gmail.com>
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index 3e8a39d..8887558 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -869,6 +869,12 @@
         self.assertRaises(ValueError, ast.literal_eval, '3+(0+6j)')
         self.assertRaises(ValueError, ast.literal_eval, '-(3+6j)')
 
+    def test_literal_eval_malformed_dict_nodes(self):
+        malformed = ast.Dict(keys=[ast.Constant(1), ast.Constant(2)], values=[ast.Constant(3)])
+        self.assertRaises(ValueError, ast.literal_eval, malformed)
+        malformed = ast.Dict(keys=[ast.Constant(1)], values=[ast.Constant(2), ast.Constant(3)])
+        self.assertRaises(ValueError, ast.literal_eval, malformed)
+
     def test_bad_integer(self):
         # issue13436: Bad error message with invalid numeric values
         body = [ast.ImportFrom(module='time',