]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-131421: Fix ASDL tests (#133408)
authorJelle Zijlstra <jelle.zijlstra@gmail.com>
Sun, 4 May 2025 23:46:21 +0000 (16:46 -0700)
committerGitHub <noreply@github.com>
Sun, 4 May 2025 23:46:21 +0000 (23:46 +0000)
PR #131419 broke this, but we failed to run tests on the PR due to a bug
in our script.

Lib/test/test_asdl_parser.py
Parser/asdl.py

index 2c198a6b8b23eefa78897cb83d74ef1839e59f13..b9df6568123ea9ef530df6e027a2b991344a4e2b 100644 (file)
@@ -62,17 +62,17 @@ class TestAsdlParser(unittest.TestCase):
         alias = self.types['alias']
         self.assertEqual(
             str(alias),
-            'Product([Field(identifier, name), Field(identifier, asname, opt=True)], '
+            'Product([Field(identifier, name), Field(identifier, asname, quantifiers=[OPTIONAL])], '
             '[Field(int, lineno), Field(int, col_offset), '
-            'Field(int, end_lineno, opt=True), Field(int, end_col_offset, opt=True)])')
+            'Field(int, end_lineno, quantifiers=[OPTIONAL]), Field(int, end_col_offset, quantifiers=[OPTIONAL])])')
 
     def test_attributes(self):
         stmt = self.types['stmt']
         self.assertEqual(len(stmt.attributes), 4)
         self.assertEqual(repr(stmt.attributes[0]), 'Field(int, lineno)')
         self.assertEqual(repr(stmt.attributes[1]), 'Field(int, col_offset)')
-        self.assertEqual(repr(stmt.attributes[2]), 'Field(int, end_lineno, opt=True)')
-        self.assertEqual(repr(stmt.attributes[3]), 'Field(int, end_col_offset, opt=True)')
+        self.assertEqual(repr(stmt.attributes[2]), 'Field(int, end_lineno, quantifiers=[OPTIONAL])')
+        self.assertEqual(repr(stmt.attributes[3]), 'Field(int, end_col_offset, quantifiers=[OPTIONAL])')
 
     def test_constructor_fields(self):
         ehandler = self.types['excepthandler']
index 7a9c9d8628dce6b158cdfa988feba0f37b38000a..f762ed8110d44f9c575eb3f7842efd1a0dc1763b 100644 (file)
@@ -91,17 +91,21 @@ class Field(AST):
         return "{}{} {}".format(self.type, extra, self.name)
 
     def __repr__(self):
-        extra = ""
-        for mod in self.quantifiers:
-            if mod is Quantifier.SEQUENCE:
-                extra += ", SEQUENCE"
-            elif mod is Quantifier.OPTIONAL:
-                extra += ", OPTIONAL"
+        if self.quantifiers:
+            texts = []
+            for mod in self.quantifiers:
+                if mod is Quantifier.SEQUENCE:
+                    texts.append("SEQUENCE")
+                elif mod is Quantifier.OPTIONAL:
+                    texts.append("OPTIONAL")
+            extra = ", quantifiers=[{}]".format(", ".join(texts))
+        else:
+            extra = ""
 
         if self.name is None:
-            return 'Field({0.type}, quantifiers=[{1}])'.format(self, extra)
+            return 'Field({0.type}{1})'.format(self, extra)
         else:
-            return 'Field({0.type}, {0.name}, quantifiers=[{1}])'.format(self, extra)
+            return 'Field({0.type}, {0.name}{1})'.format(self, extra)
 
 class Sum(AST):
     def __init__(self, types, attributes=None):