mirror of
https://github.com/python/cpython.git
synced 2026-01-06 23:42:34 +00:00
- Finally fixed the bug in compile() and exec where a string ending
with an indented code block but no newline would raise SyntaxError. This would have been a four-line change in parsetok.c... Except codeop.py depends on this behavior, so a compilation flag had to be invented that causes the tokenizer to revert to the old behavior; this required extra changes to 2 .h files, 2 .c files, and 2 .py files. (Fixes SF bug #501622.)
This commit is contained in:
parent
5aa3da6495
commit
4b499dd3fb
10 changed files with 47 additions and 13 deletions
|
|
@ -5,13 +5,13 @@
|
|||
import unittest
|
||||
from test.test_support import run_unittest
|
||||
|
||||
from codeop import compile_command
|
||||
from codeop import compile_command, PyCF_DONT_IMPLY_DEDENT
|
||||
|
||||
class CodeopTests(unittest.TestCase):
|
||||
|
||||
def assertValid(self, str, symbol='single'):
|
||||
'''succeed iff str is a valid piece of code'''
|
||||
expected = compile(str, "<input>", symbol)
|
||||
expected = compile(str, "<input>", symbol, PyCF_DONT_IMPLY_DEDENT)
|
||||
self.assertEquals( compile_command(str, "<input>", symbol), expected)
|
||||
|
||||
|
||||
|
|
@ -42,7 +42,8 @@ def test_valid(self):
|
|||
|
||||
# special case
|
||||
self.assertEquals(compile_command(""),
|
||||
compile("pass", "<input>", 'single'))
|
||||
compile("pass", "<input>", 'single',
|
||||
PyCF_DONT_IMPLY_DEDENT))
|
||||
|
||||
av("3**3","eval")
|
||||
av("(lambda z: \n z**3)","eval")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue