Kaydet (Commit) d86254bc authored tarafından Johannes Gijsbers's avatar Johannes Gijsbers

Backport of patch #1159931/bug #1143895: inspect.getsource failed when

functions, etc., had comments after the colon, and some other cases.
This patch take a simpler approach that doesn't rely on looking for a
':'. Test cases are not backported, as test_inspect.py has been
rewritten using unittest on the trunk.

Thanks Simon Percivall!
üst e3fa0611
......@@ -503,6 +503,7 @@ class BlockFinder:
"""Provide a tokeneater() method to detect the end of a code block."""
def __init__(self):
self.indent = 0
self.islambda = False
self.started = False
self.passline = False
self.last = 0
......@@ -510,11 +511,8 @@ class BlockFinder:
def tokeneater(self, type, token, (srow, scol), (erow, ecol), line):
if not self.started:
if token in ("def", "class", "lambda"):
lastcolon = line.rfind(":")
if lastcolon:
oneline = re.search(r"\w", line[lastcolon:])
if oneline and line[-2:] != "\\\n":
raise EndOfBlock, srow
if token == "lambda":
self.islambda = True
self.started = True
self.passline = True
elif type == tokenize.NEWLINE:
......@@ -522,6 +520,8 @@ class BlockFinder:
self.last = srow
elif self.passline:
pass
elif self.islambda:
raise EndOfBlock, self.last
elif type == tokenize.INDENT:
self.indent = self.indent + 1
self.passline = True
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment