mirror of https://github.com/python/cpython
Issue2495: tokenize.untokenize did not insert space between two consecutive string literals:
"" "" becomes """", which is invalid code. Backport of r61979.
This commit is contained in:
parent
bfdbfd4d91
commit
198e353735
|
@ -656,4 +656,10 @@ test_tokenize
|
|||
177,11-177,15: NAME 'pass'
|
||||
177,15-177,16: NEWLINE '\n'
|
||||
178,0-178,1: NL '\n'
|
||||
179,0-179,0: ENDMARKER ''
|
||||
179,0-179,13: COMMENT '# Issue 2495\n'
|
||||
180,0-180,1: NAME 'x'
|
||||
180,2-180,3: OP '='
|
||||
180,4-180,6: STRING "''"
|
||||
180,7-180,9: STRING "''"
|
||||
180,9-180,10: NEWLINE '\n'
|
||||
181,0-181,0: ENDMARKER ''
|
||||
|
|
|
@ -176,3 +176,5 @@ x = sys.modules['time'].time()
|
|||
@staticmethod
|
||||
def foo(): pass
|
||||
|
||||
# Issue 2495
|
||||
x = '' ''
|
||||
|
|
|
@ -176,6 +176,7 @@ def untokenize(iterable):
|
|||
"""
|
||||
|
||||
startline = False
|
||||
prevstring = False
|
||||
indents = []
|
||||
toks = []
|
||||
toks_append = toks.append
|
||||
|
@ -185,6 +186,14 @@ def untokenize(iterable):
|
|||
if toknum in (NAME, NUMBER):
|
||||
tokval += ' '
|
||||
|
||||
# Insert a space between two consecutive strings
|
||||
if toknum == STRING:
|
||||
if prevstring:
|
||||
tokval = ' ' + tokval
|
||||
prevstring = True
|
||||
else:
|
||||
prevstring = False
|
||||
|
||||
if toknum == INDENT:
|
||||
indents.append(tokval)
|
||||
continue
|
||||
|
|
|
@ -27,6 +27,10 @@ Core and builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #2495: tokenize.untokenize now inserts a space between two consecutive
|
||||
string literals; previously, ["" ""] was rendered as [""""], which is
|
||||
incorrect python code.
|
||||
|
||||
- Issue #2482: Make sure that the coefficient of a Decimal is always
|
||||
stored as a str instance, not as a unicode instance. This ensures
|
||||
that str(Decimal) is always an instance of str. This fixes a
|
||||
|
|
Loading…
Reference in New Issue