]> granicus.if.org Git - python/commitdiff
fix __future__ imports when multiple features are given
authorBenjamin Peterson <benjamin@python.org>
Sun, 26 Oct 2008 20:21:13 +0000 (20:21 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sun, 26 Oct 2008 20:21:13 +0000 (20:21 +0000)
Lib/test/test_future.py
Misc/NEWS
Parser/parser.c

index ec604895394ccb72a6222088f27575c0e5da6f8d..1432e749006df4f4a9fc08b46e8c10be23cde45c 100644 (file)
@@ -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)
index 9202c400192e8551f9ee921d3aa9e746b7b256cc..ae89094241e6df14ac6c2f80187eec45c02ce121 100644 (file)
--- 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.
 
index 8d52153c038e95dbd2df45ea9ed12e86f10065e6..e597ea28c17890690aff59c84be3d89248cf23c7 100644 (file)
@@ -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;
                        }
                }
        }