mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Make tabnanny recognize IndentationErrors raised by tokenize.
Add a test to test_inspect to make sure indented source is recognized correctly. (fixes #1224621)
This commit is contained in:
parent
26a07b5198
commit
2463f8f831
4 changed files with 18 additions and 1 deletions
|
@ -109,6 +109,10 @@ def check(file):
|
|||
errprint("%r: Token Error: %s" % (file, msg))
|
||||
return
|
||||
|
||||
except IndentationError, msg:
|
||||
errprint("%r: Indentation Error: %s" % (file, msg))
|
||||
return
|
||||
|
||||
except NannyNag, nag:
|
||||
badline = nag.get_lineno()
|
||||
line = nag.get_line()
|
||||
|
|
|
@ -88,3 +88,12 @@ extra85 = 'stop'
|
|||
def func88():
|
||||
# comment
|
||||
return 90
|
||||
|
||||
# line 92
|
||||
def f():
|
||||
class X:
|
||||
def g():
|
||||
"doc"
|
||||
return 42
|
||||
return X
|
||||
method_in_dynamic_class = f().g.im_func
|
||||
|
|
|
@ -274,6 +274,9 @@ class TestBuggyCases(GetSourceBase):
|
|||
def test_with_comment_instead_of_docstring(self):
|
||||
self.assertSourceEqual(mod2.func88, 88, 90)
|
||||
|
||||
def test_method_in_dynamic_class(self):
|
||||
self.assertSourceEqual(mod2.method_in_dynamic_class, 95, 97)
|
||||
|
||||
# Helper for testing classify_class_attrs.
|
||||
def attrs_wo_objs(cls):
|
||||
return [t[:3] for t in inspect.classify_class_attrs(cls)]
|
||||
|
|
|
@ -273,7 +273,8 @@ def generate_tokens(readline):
|
|||
while column < indents[-1]:
|
||||
if column not in indents:
|
||||
raise IndentationError(
|
||||
"unindent does not match any outer indentation level")
|
||||
"unindent does not match any outer indentation level",
|
||||
("<tokenize>", lnum, pos, line))
|
||||
indents = indents[:-1]
|
||||
yield (DEDENT, '', (lnum, pos), (lnum, pos), line)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue