From 5e83b7a9cce3c619c98f929c8cd425058fc49139 Mon Sep 17 00:00:00 2001 From: "Michael W. Hudson" Date: Wed, 29 Jan 2003 14:20:23 +0000 Subject: [PATCH] Teach the parsermodule about floor division. Fixes [ 676521 ] parser module validation failure bugfix candidate. --- Lib/test/test_parser.py | 5 +++++ Modules/parsermodule.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py index c0b1bfcedec..81708b53095 100644 --- a/Lib/test/test_parser.py +++ b/Lib/test/test_parser.py @@ -51,6 +51,10 @@ class RoundtripLegalSyntaxTestCase(unittest.TestCase): self.check_expr("foo(a, b, c, *args, **kw)") self.check_expr("foo(a, b, c, **kw)") self.check_expr("foo + bar") + self.check_expr("foo - bar") + self.check_expr("foo * bar") + self.check_expr("foo / bar") + self.check_expr("foo // bar") self.check_expr("lambda: 0") self.check_expr("lambda x: 0") self.check_expr("lambda *y: 0") @@ -85,6 +89,7 @@ class RoundtripLegalSyntaxTestCase(unittest.TestCase): self.check_suite("a -= b") self.check_suite("a *= b") self.check_suite("a /= b") + self.check_suite("a //= b") self.check_suite("a %= b") self.check_suite("a &= b") self.check_suite("a |= b") diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c index e0c74313c82..fd030678e6f 100644 --- a/Modules/parsermodule.c +++ b/Modules/parsermodule.c @@ -1440,6 +1440,7 @@ validate_expr_stmt(node *tree) || strcmp(s, "-=") == 0 || strcmp(s, "*=") == 0 || strcmp(s, "/=") == 0 + || strcmp(s, "//=") == 0 || strcmp(s, "%=") == 0 || strcmp(s, "&=") == 0 || strcmp(s, "|=") == 0 @@ -2095,6 +2096,7 @@ validate_term(node *tree) for ( ; res && (pos < nch); pos += 2) res = (((TYPE(CHILD(tree, pos)) == STAR) || (TYPE(CHILD(tree, pos)) == SLASH) + || (TYPE(CHILD(tree, pos)) == DOUBLESLASH) || (TYPE(CHILD(tree, pos)) == PERCENT)) && validate_factor(CHILD(tree, pos + 1)));