Issue #20387: Restore retention of indentation during untokenize.
This commit is contained in:
parent
b6d1cdda8e
commit
e411b6629f
|
@ -244,6 +244,8 @@ class Untokenizer:
|
||||||
|
|
||||||
def untokenize(self, iterable):
|
def untokenize(self, iterable):
|
||||||
it = iter(iterable)
|
it = iter(iterable)
|
||||||
|
indents = []
|
||||||
|
startline = False
|
||||||
for t in it:
|
for t in it:
|
||||||
if len(t) == 2:
|
if len(t) == 2:
|
||||||
self.compat(t, it)
|
self.compat(t, it)
|
||||||
|
@ -254,6 +256,21 @@ class Untokenizer:
|
||||||
continue
|
continue
|
||||||
if tok_type == ENDMARKER:
|
if tok_type == ENDMARKER:
|
||||||
break
|
break
|
||||||
|
if tok_type == INDENT:
|
||||||
|
indents.append(token)
|
||||||
|
continue
|
||||||
|
elif tok_type == DEDENT:
|
||||||
|
indents.pop()
|
||||||
|
self.prev_row, self.prev_col = end
|
||||||
|
continue
|
||||||
|
elif tok_type in (NEWLINE, NL):
|
||||||
|
startline = True
|
||||||
|
elif startline and indents:
|
||||||
|
indent = indents[-1]
|
||||||
|
if start[1] >= len(indent):
|
||||||
|
self.tokens.append(indent)
|
||||||
|
self.prev_col = len(indent)
|
||||||
|
startline = False
|
||||||
self.add_whitespace(start)
|
self.add_whitespace(start)
|
||||||
self.tokens.append(token)
|
self.tokens.append(token)
|
||||||
self.prev_row, self.prev_col = end
|
self.prev_row, self.prev_col = end
|
||||||
|
|
Loading…
Reference in New Issue