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:
Charlie Marsh 2023-08-01 00:20:29 -04:00 committed by GitHub
parent bf584c6d74
commit 88b984e885
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 2 deletions

View file

@ -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.