fix __future__ imports when multiple features are given

This commit is contained in:
Benjamin Peterson 2008-10-26 20:21:13 +00:00
parent adc93b9499
commit bdca942ffc
3 changed files with 9 additions and 5 deletions

View 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)

View File

@ -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.

View 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;
}
}
}