mirror of https://github.com/astral-sh/ruff
Avoid detecting continuations at non-start-of-line (#6219)
## Summary Previously, given: ```python a = \ 5; ``` When detecting continuations starting at the offset of the `;`, we'd flag the previous line as a continuation. We should only flag a continuation if there isn't leading content prior to the offset. Closes https://github.com/astral-sh/ruff/issues/6214
This commit is contained in:
parent
bf584c6d74
commit
88b984e885
|
|
@ -66,3 +66,6 @@ while 1:
|
|||
#: E703:2:1
|
||||
0\
|
||||
;
|
||||
#: E701:2:3
|
||||
a = \
|
||||
5;
|
||||
|
|
|
|||
|
|
@ -70,6 +70,8 @@ E70.py:68:1: E703 [*] Statement ends with an unnecessary semicolon
|
|||
67 | 0\
|
||||
68 | ;
|
||||
| ^ E703
|
||||
69 | #: E701:2:3
|
||||
70 | a = \
|
||||
|
|
||||
= help: Remove unnecessary semicolon
|
||||
|
||||
|
|
@ -80,5 +82,24 @@ E70.py:68:1: E703 [*] Statement ends with an unnecessary semicolon
|
|||
67 |-0\
|
||||
68 |-;
|
||||
67 |+0
|
||||
69 68 | #: E701:2:3
|
||||
70 69 | a = \
|
||||
71 70 | 5;
|
||||
|
||||
E70.py:71:4: E703 [*] Statement ends with an unnecessary semicolon
|
||||
|
|
||||
69 | #: E701:2:3
|
||||
70 | a = \
|
||||
71 | 5;
|
||||
| ^ E703
|
||||
|
|
||||
= help: Remove unnecessary semicolon
|
||||
|
||||
ℹ Fix
|
||||
68 68 | ;
|
||||
69 69 | #: E701:2:3
|
||||
70 70 | a = \
|
||||
71 |- 5;
|
||||
71 |+ 5
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -228,8 +228,18 @@ impl Indexer {
|
|||
offset: TextSize,
|
||||
locator: &Locator,
|
||||
) -> Option<TextSize> {
|
||||
// Find the first preceding continuation.
|
||||
let mut continuation = self.find_continuation(locator.line_start(offset), locator)?;
|
||||
// Find the first preceding continuation. If the offset isn't the first non-whitespace
|
||||
// character on the line, then we can't have a continuation.
|
||||
let previous_line_end = locator.line_start(offset);
|
||||
if !locator
|
||||
.slice(TextRange::new(previous_line_end, offset))
|
||||
.chars()
|
||||
.all(is_python_whitespace)
|
||||
{
|
||||
return None;
|
||||
}
|
||||
|
||||
let mut continuation = self.find_continuation(previous_line_end, locator)?;
|
||||
|
||||
// Continue searching for continuations, in the unlikely event that we have multiple
|
||||
// continuations in a row.
|
||||
|
|
|
|||
Loading…
Reference in New Issue