mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-25 12:54:45 +00:00
Avoid printing continuations within import identifiers (#7744)
## Summary It turns out that _some_ identifiers can contain newlines -- specifically, dot-delimited import identifiers, like: ```python import foo\ .bar ``` At present, we print all identifiers verbatim, which causes us to retain the `\` in the formatted output. This also leads to violating some debug assertions (see the linked issue, though that's a symptom of this formatting failure). This PR adds detection for import identifiers that contain newlines, and formats them via `text` (slow) rather than `source_code_slice` (fast) in those cases. Closes https://github.com/astral-sh/ruff/issues/7734. ## Test Plan `cargo test`
This commit is contained in:
parent
0df27375ba
commit
c71ff7eae1
5 changed files with 63 additions and 2 deletions
|
@ -6,6 +6,7 @@ use ruff_text_size::Ranged;
|
|||
use crate::builders::{parenthesize_if_expands, PyFormatterExtensions, TrailingComma};
|
||||
use crate::comments::{SourceComment, SuppressionKind};
|
||||
use crate::expression::parentheses::parenthesized;
|
||||
use crate::other::identifier::DotDelimitedIdentifier;
|
||||
use crate::prelude::*;
|
||||
|
||||
#[derive(Default)]
|
||||
|
@ -31,7 +32,7 @@ impl FormatNodeRule<StmtImportFrom> for FormatStmtImportFrom {
|
|||
}
|
||||
Ok(())
|
||||
}),
|
||||
module.as_ref().map(AsFormat::format),
|
||||
module.as_ref().map(DotDelimitedIdentifier::new),
|
||||
space(),
|
||||
token("import"),
|
||||
space(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue