Commit 2463f8f8 authored by Georg Brandl's avatar Georg Brandl

Make tabnanny recognize IndentationErrors raised by tokenize.

Add a test to test_inspect to make sure indented source
is recognized correctly. (fixes #1224621)
parent 26a07b51
......@@ -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)
......
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