From fffd3e5cfbf03b6b502bb4a34d49ef8f5e3bc802 Mon Sep 17 00:00:00 2001 From: Micha Reiser Date: Sat, 27 Dec 2025 17:06:30 +0100 Subject: [PATCH] [ty] Re-use vec when building a `VariableLengthTypeVarTuple` with the builder (#22225) --- crates/ty_python_semantic/src/types/tuple.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/crates/ty_python_semantic/src/types/tuple.rs b/crates/ty_python_semantic/src/types/tuple.rs index 88c1ffd264..f1e130503e 100644 --- a/crates/ty_python_semantic/src/types/tuple.rs +++ b/crates/ty_python_semantic/src/types/tuple.rs @@ -689,6 +689,8 @@ impl VariableLengthTuple { elements.push(element?); } + elements.shrink_to_fit(); + Some(Self { elements, variable_index, @@ -706,6 +708,21 @@ impl VariableLengthTuple { let variable_index = elements.len(); elements.push(variable); elements.extend(suffix); + elements.shrink_to_fit(); + + Self { + elements, + variable_index, + } + } + + fn new_from_vec(prefix: Vec, variable: T, suffix: Vec) -> Self { + let mut elements = SmallVec::from_vec(prefix); + + let variable_index = elements.len(); + elements.push(variable); + elements.extend(suffix); + elements.shrink_to_fit(); Self { elements, @@ -1998,7 +2015,7 @@ impl<'db> TupleSpecBuilder<'db> { prefix, variable, suffix, - } => TupleSpec::Variable(VariableLengthTuple::new(prefix, variable, suffix)), + } => TupleSpec::Variable(VariableLengthTuple::new_from_vec(prefix, variable, suffix)), } } }