From 242d9b163d0505bd1dc76e7b2150d997c35df588 Mon Sep 17 00:00:00 2001 From: David Peter Date: Tue, 22 Apr 2025 21:47:27 +0200 Subject: [PATCH] [red-knot] Eliminate `None` in equality-comparison narrowing --- crates/red_knot_python_semantic/src/types/narrow.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/red_knot_python_semantic/src/types/narrow.rs b/crates/red_knot_python_semantic/src/types/narrow.rs index b884d1da85..e66a28fc1e 100644 --- a/crates/red_knot_python_semantic/src/types/narrow.rs +++ b/crates/red_knot_python_semantic/src/types/narrow.rs @@ -446,6 +446,11 @@ impl<'db> NarrowingConstraintsBuilder<'db> { } } ast::CmpOp::Eq if lhs_ty.is_literal_string() => Some(rhs_ty), + ast::CmpOp::Eq if !rhs_ty.is_none(self.db) => Some( + IntersectionBuilder::new(self.db) + .add_negative(Type::none(self.db)) + .build(), + ), ast::CmpOp::In => self.evaluate_expr_in(lhs_ty, rhs_ty), ast::CmpOp::NotIn => self .evaluate_expr_in(lhs_ty, rhs_ty)