Fix a bug in the parser's future statement handling that led to "with"

not being recognized as a keyword after, e.g., this statement:
from __future__ import division, with_statement
This commit is contained in:
Georg Brandl 2006-09-24 12:35:36 +00:00
parent 2c94bf7d41
commit a10d3afed2
3 changed files with 37 additions and 10 deletions

View file

@ -82,6 +82,27 @@ class FutureTest(unittest.TestCase):
else:
self.fail("expected exception didn't occur")
def test_parserhack(self):
# test that the parser.c::future_hack function works as expected
# Note: although this test must pass, it's not testing the original
# bug as of 2.6 since the with statement is not optional and
# 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"
except SyntaxError:
pass
else:
self.fail("syntax error didn't occur")
try:
exec "from __future__ import (with_statement, division); with = 0"
except SyntaxError:
pass
else:
self.fail("syntax error didn't occur")
def test_main():
test_support.run_unittest(FutureTest)