Fix INTERNAL ERROR caused by removing parens from pointless string (#1888)

Fixes #1846.
This commit is contained in:
Bryan Bugyi 2020-12-28 15:30:23 -05:00 committed by GitHub
parent a497570fcb
commit e912c7ff54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 1 deletions

View File

@ -3271,7 +3271,8 @@ class StringParenStripper(StringTransformer):
Requirements:
The line contains a string which is surrounded by parentheses and:
- The target string is NOT the only argument to a function call).
- The target string is NOT the only argument to a function call.
- The target string is NOT a "pointless" string.
- If the target string contains a PERCENT, the brackets are not
preceeded or followed by an operator with higher precedence than
PERCENT.
@ -3295,6 +3296,14 @@ def do_match(self, line: Line) -> TMatchResult:
if leaf.type != token.STRING:
continue
# If this is a "pointless" string...
if (
leaf.parent
and leaf.parent.parent
and leaf.parent.parent.type == syms.simple_stmt
):
continue
# Should be preceded by a non-empty LPAR...
if (
not is_valid_index(idx - 1)

View File

@ -375,6 +375,27 @@ def xxxxxxx_xxxxxx(xxxx):
print(f"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. {[f'{i}' for i in range(10)]}")
x = f"This is a long string which contains an f-expr that should not split {{{[i for i in range(5)]}}}."
# The parens should NOT be removed in this case.
(
"my very long string that should get formatted if I'm careful to make sure it goes"
" over 88 characters which it has now"
)
# The parens should NOT be removed in this case.
(
"my very long string that should get formatted if I'm careful to make sure it goes over 88 characters which"
" it has now"
)
# The parens should NOT be removed in this case.
(
"my very long string"
" that should get formatted"
" if I'm careful to make sure"
" it goes over 88 characters which"
" it has now"
)
# output
@ -844,3 +865,24 @@ def xxxxxxx_xxxxxx(xxxx):
"This is a long string which contains an f-expr that should not split"
f" {{{[i for i in range(5)]}}}."
)
# The parens should NOT be removed in this case.
(
"my very long string that should get formatted if I'm careful to make sure it goes"
" over 88 characters which it has now"
)
# The parens should NOT be removed in this case.
(
"my very long string that should get formatted if I'm careful to make sure it goes"
" over 88 characters which it has now"
)
# The parens should NOT be removed in this case.
(
"my very long string"
" that should get formatted"
" if I'm careful to make sure"
" it goes over 88 characters which"
" it has now"
)