summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2008-10-26 20:21:13 (GMT)
committerBenjamin Peterson <benjamin@python.org>2008-10-26 20:21:13 (GMT)
commitbdca942ffcdb6e14758d3e2f7a9e9fbbfa931c06 (patch)
tree47ab776f87d60ae4372e5ef3c010fc3f7117332e
parentadc93b9499cc04c41499c313a08b45ea34606e21 (diff)
downloadcpython-bdca942ffcdb6e14758d3e2f7a9e9fbbfa931c06.zip
cpython-bdca942ffcdb6e14758d3e2f7a9e9fbbfa931c06.tar.gz
cpython-bdca942ffcdb6e14758d3e2f7a9e9fbbfa931c06.tar.bz2
fix __future__ imports when multiple features are given
-rw-r--r--Lib/test/test_future.py8
-rw-r--r--Misc/NEWS3
-rw-r--r--Parser/parser.c3
3 files changed, 9 insertions, 5 deletions
diff --git a/Lib/test/test_future.py b/Lib/test/test_future.py
index ec60489..1432e74 100644
--- a/Lib/test/test_future.py
+++ b/Lib/test/test_future.py
@@ -89,19 +89,23 @@ class FutureTest(unittest.TestCase):
# the parser hack disabled. If a new keyword is introduced in
# 2.6, change this to refer to the new future import.
try:
- exec "from __future__ import division, with_statement; with = 0"
+ exec "from __future__ import print_function; print 0"
except SyntaxError:
pass
else:
self.fail("syntax error didn't occur")
try:
- exec "from __future__ import (with_statement, division); with = 0"
+ exec "from __future__ import (print_function); print 0"
except SyntaxError:
pass
else:
self.fail("syntax error didn't occur")
+ def test_multiple_features(self):
+ test_support.unload("test.test_future5")
+ from test import test_future5
+
def test_main():
test_support.run_unittest(FutureTest)
diff --git a/Misc/NEWS b/Misc/NEWS
index 9202c40..ae89094 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.7 alpha 1
Core and Builtins
-----------------
+- Issue #4209: Enabling unicode_literals and the print_function in the same
+ __future__ import didn't work.
+
- Using ``nonlocal`` as a variable name will now raise a Py3k SyntaxWarning
because it is a reserved word in 3.x.
diff --git a/Parser/parser.c b/Parser/parser.c
index 8d52153..e597ea2 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -206,13 +206,10 @@ future_hack(parser_state *ps)
char *str_ch = STR(CHILD(cch, 0));
if (strcmp(str_ch, FUTURE_WITH_STATEMENT) == 0) {
ps->p_flags |= CO_FUTURE_WITH_STATEMENT;
- break;
} else if (strcmp(str_ch, FUTURE_PRINT_FUNCTION) == 0) {
ps->p_flags |= CO_FUTURE_PRINT_FUNCTION;
- break;
} else if (strcmp(str_ch, FUTURE_UNICODE_LITERALS) == 0) {
ps->p_flags |= CO_FUTURE_UNICODE_LITERALS;
- break;
}
}
}