diff --git a/crates/ty_python_semantic/src/types/constraints.rs b/crates/ty_python_semantic/src/types/constraints.rs index 4d6c302901..8d0d56448a 100644 --- a/crates/ty_python_semantic/src/types/constraints.rs +++ b/crates/ty_python_semantic/src/types/constraints.rs @@ -2697,6 +2697,24 @@ impl<'db> SequentMap<'db> { (bound_constraint.lower(db), constrained_upper) } + // (CL ≤ C ≤ pivot) ∧ (pivot ≤ B ≤ BU) → (CL ≤ C ≤ B) + (constrained_lower, constrained_upper) + if constrained_upper == bound_constraint.lower(db) + && !constrained_upper.is_never() + && !constrained_upper.is_object() => + { + (constrained_lower, Type::TypeVar(bound_typevar)) + } + + // (pivot ≤ C ≤ CU) ∧ (BL ≤ B ≤ pivot) → (B ≤ C ≤ CU) + (constrained_lower, constrained_upper) + if constrained_lower == bound_constraint.upper(db) + && !constrained_lower.is_never() + && !constrained_lower.is_object() => + { + (Type::TypeVar(bound_typevar), constrained_upper) + } + _ => return, };