diff --git a/Lib/test/test_asdl_parser.py b/Lib/test/test_asdl_parser.py index 2c198a6b8b2..b9df6568123 100644 --- a/Lib/test/test_asdl_parser.py +++ b/Lib/test/test_asdl_parser.py @@ -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'] diff --git a/Parser/asdl.py b/Parser/asdl.py index 7a9c9d8628d..f762ed8110d 100644 --- a/Parser/asdl.py +++ b/Parser/asdl.py @@ -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):