summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_grammar.py5
-rw-r--r--Python/graminit.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 45e3c49..4bb4e45 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -815,6 +815,11 @@ x = 10; t = False; g = ((i,j) for i in range(x) if t for j in range(x))
x = 5; t = True;
verify([(i,j) for i in range(10) for j in range(5)] == list(g))
+# Grammar allows multiple adjacent 'if's in listcomps and genexps,
+# even though it's silly. Make sure it works (ifelse broke this.)
+verify([ x for x in range(10) if x % 2 if x % 3 ], [1, 5, 7])
+verify((x for x in range(10) if x % 2 if x % 3), [1, 5, 7])
+
# Test ifelse expressions in various cases
def _checkeval(msg, ret):
"helper to check that evaluation of expressions is done correctly"
diff --git a/Python/graminit.c b/Python/graminit.c
index 1853ca4..ae367ce 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -1678,7 +1678,7 @@ static arc arcs_77_0[1] = {
{91, 1},
};
static arc arcs_77_1[1] = {
- {26, 2},
+ {105, 2},
};
static arc arcs_77_2[2] = {
{162, 3},
@@ -1735,7 +1735,7 @@ static arc arcs_80_0[1] = {
{91, 1},
};
static arc arcs_80_1[1] = {
- {26, 2},
+ {105, 2},
};
static arc arcs_80_2[2] = {
{164, 3},