mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 10:48:32 +00:00
Avoid attempting to fix PT018 in multi-statement lines (#6829)
## Summary These fixes will _always_ fail, so we should avoid trying to construct them in the first place. Closes https://github.com/astral-sh/ruff/issues/6812.
This commit is contained in:
parent
9b6e008cf1
commit
847432cacf
13 changed files with 109 additions and 52 deletions
|
@ -1,10 +1,8 @@
|
|||
use crate::{Ranged, Stmt};
|
||||
use ruff_python_trivia::{indentation_at_offset, is_python_whitespace, PythonWhitespace};
|
||||
use ruff_source_file::{newlines::UniversalNewlineIterator, Locator};
|
||||
use ruff_text_size::{TextRange, TextSize};
|
||||
|
||||
use ruff_python_trivia::{
|
||||
has_trailing_content, indentation_at_offset, is_python_whitespace, PythonWhitespace,
|
||||
};
|
||||
use ruff_source_file::{newlines::UniversalNewlineIterator, Locator};
|
||||
use crate::{Ranged, Stmt};
|
||||
|
||||
/// Extract the leading indentation from a line.
|
||||
#[inline]
|
||||
|
@ -18,20 +16,12 @@ where
|
|||
/// Return the end offset at which the empty lines following a statement.
|
||||
pub fn trailing_lines_end(stmt: &Stmt, locator: &Locator) -> TextSize {
|
||||
let line_end = locator.full_line_end(stmt.end());
|
||||
let rest = &locator.contents()[usize::from(line_end)..];
|
||||
|
||||
UniversalNewlineIterator::with_offset(rest, line_end)
|
||||
UniversalNewlineIterator::with_offset(locator.after(line_end), line_end)
|
||||
.take_while(|line| line.trim_whitespace().is_empty())
|
||||
.last()
|
||||
.map_or(line_end, |line| line.full_end())
|
||||
}
|
||||
|
||||
/// Return `true` if a `Stmt` appears to be part of a multi-statement line, with
|
||||
/// other statements following it.
|
||||
pub fn followed_by_multi_statement_line(stmt: &Stmt, locator: &Locator) -> bool {
|
||||
has_trailing_content(stmt.end(), locator)
|
||||
}
|
||||
|
||||
/// If a [`Ranged`] has a trailing comment, return the index of the hash.
|
||||
pub fn trailing_comment_start_offset<T>(located: &T, locator: &Locator) -> Option<TextSize>
|
||||
where
|
||||
|
@ -39,7 +29,7 @@ where
|
|||
{
|
||||
let line_end = locator.line_end(located.end());
|
||||
|
||||
let trailing = &locator.contents()[TextRange::new(located.end(), line_end)];
|
||||
let trailing = locator.slice(TextRange::new(located.end(), line_end));
|
||||
|
||||
for (index, char) in trailing.char_indices() {
|
||||
if char == '#' {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue