retain ordering of unions and intersections

This commit is contained in:
Douglas Creager 2025-12-15 13:48:00 -05:00
parent cba45acd86
commit ad27c4cf4a
1 changed files with 3 additions and 3 deletions

View File

@ -520,7 +520,7 @@ impl<'db> ConstrainedTypeVar<'db> {
if let Type::Union(lower_union) = lower { if let Type::Union(lower_union) = lower {
let mut result = Node::AlwaysTrue; let mut result = Node::AlwaysTrue;
for lower_element in lower_union.elements(db) { for lower_element in lower_union.elements(db) {
result = result.and( result = result.and_with_offset(
db, db,
ConstrainedTypeVar::new_node(db, typevar, *lower_element, upper), ConstrainedTypeVar::new_node(db, typevar, *lower_element, upper),
); );
@ -535,13 +535,13 @@ impl<'db> ConstrainedTypeVar<'db> {
{ {
let mut result = Node::AlwaysTrue; let mut result = Node::AlwaysTrue;
for upper_element in upper_intersection.iter_positive(db) { for upper_element in upper_intersection.iter_positive(db) {
result = result.and( result = result.and_with_offset(
db, db,
ConstrainedTypeVar::new_node(db, typevar, lower, upper_element), ConstrainedTypeVar::new_node(db, typevar, lower, upper_element),
); );
} }
for upper_element in upper_intersection.iter_negative(db) { for upper_element in upper_intersection.iter_negative(db) {
result = result.and( result = result.and_with_offset(
db, db,
ConstrainedTypeVar::new_node(db, typevar, lower, upper_element.negate(db)), ConstrainedTypeVar::new_node(db, typevar, lower, upper_element.negate(db)),
); );