From fb304ec382e225a6134f332c2f86dfb92e59bbf1 Mon Sep 17 00:00:00 2001 From: Cameron Clark Date: Tue, 30 Jun 2026 16:10:08 +0100 Subject: [PATCH] perf(formatter): inline AnyNodeRef range access --- crates/ruff_python_ast/generate.py | 2 ++ crates/ruff_python_ast/src/generated.rs | 5 +++++ .../ruff_python_formatter/src/comments/visitor.rs | 15 +++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/crates/ruff_python_ast/generate.py b/crates/ruff_python_ast/generate.py index 6b85baba8a6e6b..9a80dc81836c4e 100644 --- a/crates/ruff_python_ast/generate.py +++ b/crates/ruff_python_ast/generate.py @@ -685,6 +685,8 @@ def write_anynoderef(out: list[str], ast: Ast) -> None: out.append(""" impl ruff_text_size::Ranged for AnyNodeRef<'_> { + #[expect(clippy::inline_always, reason = "enables constant-folding for known `AnyNodeRef` variants")] + #[inline(always)] fn range(&self) -> ruff_text_size::TextRange { match self { """) diff --git a/crates/ruff_python_ast/src/generated.rs b/crates/ruff_python_ast/src/generated.rs index 006ea651ddc426..d250d72e869c01 100644 --- a/crates/ruff_python_ast/src/generated.rs +++ b/crates/ruff_python_ast/src/generated.rs @@ -6889,6 +6889,11 @@ impl<'a> From<&'a crate::Identifier> for AnyNodeRef<'a> { } impl ruff_text_size::Ranged for AnyNodeRef<'_> { + #[expect( + clippy::inline_always, + reason = "enables constant-folding for known `AnyNodeRef` variants" + )] + #[inline(always)] fn range(&self) -> ruff_text_size::TextRange { match self { AnyNodeRef::ModModule(node) => node.range(), diff --git a/crates/ruff_python_formatter/src/comments/visitor.rs b/crates/ruff_python_formatter/src/comments/visitor.rs index f18c2f0d7c2237..73155fa8102d7e 100644 --- a/crates/ruff_python_formatter/src/comments/visitor.rs +++ b/crates/ruff_python_formatter/src/comments/visitor.rs @@ -70,6 +70,11 @@ impl<'a, 'builder> CommentsVisitor<'a, 'builder> { } impl<'ast> SourceOrderVisitor<'ast> for CommentsVisitor<'ast, '_> { + #[expect( + clippy::inline_always, + reason = "enables constant-folding of `AnyNodeRef` helpers" + )] + #[inline(always)] fn enter_node(&mut self, node: AnyNodeRef<'ast>) -> TraversalSignal { let node_range = node.range(); @@ -111,6 +116,11 @@ impl<'ast> SourceOrderVisitor<'ast> for CommentsVisitor<'ast, '_> { } } + #[expect( + clippy::inline_always, + reason = "enables constant-folding of `AnyNodeRef` helpers" + )] + #[inline(always)] fn leave_node(&mut self, node: AnyNodeRef<'ast>) { // We are leaving this node, pop it from the parent stack. self.parents.pop(); @@ -147,6 +157,11 @@ impl<'ast> SourceOrderVisitor<'ast> for CommentsVisitor<'ast, '_> { self.preceding_node = Some(node); } + #[expect( + clippy::inline_always, + reason = "enables constant-folding of `AnyNodeRef` helpers" + )] + #[inline(always)] fn visit_body(&mut self, body: &'ast [Stmt]) { match body { [] => {