diff --git a/crates/ruff_python_formatter/src/lib.rs b/crates/ruff_python_formatter/src/lib.rs index 80494d4626..b6b96f506b 100644 --- a/crates/ruff_python_formatter/src/lib.rs +++ b/crates/ruff_python_formatter/src/lib.rs @@ -50,17 +50,24 @@ where let node_comments = comments.leading_dangling_trailing_comments(node.as_any_node_ref()); - leading_comments(node_comments.leading).fmt(f)?; - self.fmt_node(node, f)?; - self.fmt_dangling_comments(node_comments.dangling, f)?; - trailing_comments(node_comments.trailing).fmt(f) - } + write!( + f, + [ + leading_comments(node_comments.leading), + source_position(node.start()) + ] + )?; - /// Formats the node without comments. Ignores any suppression comments. - fn fmt_node(&self, node: &N, f: &mut PyFormatter) -> FormatResult<()> { - write!(f, [source_position(node.start())])?; self.fmt_fields(node, f)?; - write!(f, [source_position(node.end())]) + self.fmt_dangling_comments(node_comments.dangling, f)?; + + write!( + f, + [ + source_position(node.end()), + trailing_comments(node_comments.trailing) + ] + ) } /// Formats the node's fields. diff --git a/crates/ruff_python_trivia/src/tokenizer.rs b/crates/ruff_python_trivia/src/tokenizer.rs index 7aef8b947d..6da3e5d779 100644 --- a/crates/ruff_python_trivia/src/tokenizer.rs +++ b/crates/ruff_python_trivia/src/tokenizer.rs @@ -85,7 +85,11 @@ pub fn lines_after_ignoring_trivia(offset: TextSize, code: &str) -> u32 { } fn is_identifier_start(c: char) -> bool { - c.is_ascii_alphabetic() || c == '_' || is_non_ascii_identifier_start(c) + if c.is_ascii() { + c.is_ascii_alphabetic() || c == '_' + } else { + is_xid_start(c) + } } // Checks if the character c is a valid continuation character as described @@ -98,10 +102,6 @@ fn is_identifier_continuation(c: char) -> bool { } } -fn is_non_ascii_identifier_start(c: char) -> bool { - is_xid_start(c) -} - #[derive(Clone, Debug, Eq, PartialEq, Hash)] pub struct SimpleToken { pub kind: SimpleTokenKind,