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)), } } }