Fix an f-string crash in ESP. (#3463)

This commit is contained in:
Yilei "Dolee" Yang 2022-12-20 06:36:42 -08:00 committed by GitHub
parent 9ce75726fc
commit 1e8217fd62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 2 deletions

View File

@ -19,6 +19,8 @@
- Fix a crash in preview style with assert + parenthesized string (#3415)
- Fix crashes in preview style with walrus operators used in function return annotations
and except clauses (#3423)
- Fix a crash in preview advanced string processing where mixed implicitly concatenated
regular and f-strings start with an empty span (#3463)
- Do not put the closing quotes in a docstring on a separate line, even if the line is
too long (#3430)
- Long values in dict literals are now wrapped in parentheses; correspondingly

View File

@ -1359,9 +1359,14 @@ def more_splits_should_be_made() -> bool:
# prefix, and the current custom split did NOT originally use a
# prefix...
if (
next_value != self._normalize_f_string(next_value, prefix)
and use_custom_breakpoints
use_custom_breakpoints
and not csplit.has_prefix
and (
# `next_value == prefix + QUOTE` happens when the custom
# split is an empty string.
next_value == prefix + QUOTE
or next_value != self._normalize_f_string(next_value, prefix)
)
):
# Then `csplit.break_idx` will be off by one after removing
# the 'f' prefix.

View File

@ -531,6 +531,18 @@ async def foo(self):
r"signiferumque, duo ea vocibus consetetur scriptorem. Facer \t",
}
# Regression test for https://github.com/psf/black/issues/3459.
xxxx(
empty_str_as_first_split=''
f'xxxxxxx {xxxxxxxxxx} xxx xxxxxxxxxx xxxxx xxx xxx xx '
'xxxxx xxxxxxxxx xxxxxxx, xxx xxxxxxxxxxx xxx xxxxx. '
f'xxxxxxxxxxxxx xxxx xx xxxxxxxxxx. xxxxx: {x.xxx}',
empty_u_str_as_first_split=u''
f'xxxxxxx {xxxxxxxxxx} xxx xxxxxxxxxx xxxxx xxx xxx xx '
'xxxxx xxxxxxxxx xxxxxxx, xxx xxxxxxxxxxx xxx xxxxx. '
f'xxxxxxxxxxxxx xxxx xx xxxxxxxxxx. xxxxx: {x.xxx}',
)
# output
@ -1193,3 +1205,19 @@ async def foo(self):
r"signiferumque, duo ea vocibus consetetur scriptorem. Facer \t"
),
}
# Regression test for https://github.com/psf/black/issues/3459.
xxxx(
empty_str_as_first_split=(
""
f"xxxxxxx {xxxxxxxxxx} xxx xxxxxxxxxx xxxxx xxx xxx xx "
"xxxxx xxxxxxxxx xxxxxxx, xxx xxxxxxxxxxx xxx xxxxx. "
f"xxxxxxxxxxxxx xxxx xx xxxxxxxxxx. xxxxx: {x.xxx}"
),
empty_u_str_as_first_split=(
""
f"xxxxxxx {xxxxxxxxxx} xxx xxxxxxxxxx xxxxx xxx xxx xx "
"xxxxx xxxxxxxxx xxxxxxx, xxx xxxxxxxxxxx xxx xxxxx. "
f"xxxxxxxxxxxxx xxxx xx xxxxxxxxxx. xxxxx: {x.xxx}"
),
)