From 3c811c19d4f1e304c1192e19eeb35b8868042561 Mon Sep 17 00:00:00 2001 From: Douglas Creager Date: Sat, 13 Dec 2025 20:05:49 -0500 Subject: [PATCH] canonical ordering for constraint set mappings --- crates/ty_python_semantic/src/types/generics.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/ty_python_semantic/src/types/generics.rs b/crates/ty_python_semantic/src/types/generics.rs index 2ca4b21564..d672d0c43b 100644 --- a/crates/ty_python_semantic/src/types/generics.rs +++ b/crates/ty_python_semantic/src/types/generics.rs @@ -1589,10 +1589,20 @@ impl<'db> SpecializationBuilder<'db> { let upper = constraint.upper(self.db); if !upper.is_object() { let variance = formal.variance_of(self.db, typevar); - self.add_type_mapping(typevar, upper, variance, &mut f); + self.add_type_mapping( + typevar, + upper.canonically_ordered(self.db), + variance, + &mut f, + ); } else if !lower.is_never() { let variance = formal.variance_of(self.db, typevar); - self.add_type_mapping(typevar, lower, variance, &mut f); + self.add_type_mapping( + typevar, + lower.canonically_ordered(self.db), + variance, + &mut f, + ); } if let Type::TypeVar(lower_bound_typevar) = lower { let variance = formal.variance_of(self.db, lower_bound_typevar);