From 93efda54aa3e61db815e62505f2e6dd41d07bf10 Mon Sep 17 00:00:00 2001 From: Douglas Creager Date: Thu, 30 Jan 2025 17:46:39 -0500 Subject: [PATCH] =?UTF-8?q?Should=20A=20=E2=88=A7=20!A=20always=20be=20fal?= =?UTF-8?q?se=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/visibility_constraints.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/crates/red_knot_python_semantic/src/visibility_constraints.rs b/crates/red_knot_python_semantic/src/visibility_constraints.rs index f19144fb5e072..286c188c192e6 100644 --- a/crates/red_knot_python_semantic/src/visibility_constraints.rs +++ b/crates/red_knot_python_semantic/src/visibility_constraints.rs @@ -221,11 +221,18 @@ impl<'db> VisibilityConstraints<'db> { b: ScopedVisibilityConstraintId, ) -> ScopedVisibilityConstraintId { if a == ScopedVisibilityConstraintId::ALWAYS_TRUE { - b + return b; } else if b == ScopedVisibilityConstraintId::ALWAYS_TRUE { - a - } else { - self.add(VisibilityConstraint::KleeneAnd(a, b)) + return a; + } + match (&self.constraints[a], &self.constraints[b]) { + (_, VisibilityConstraint::VisibleIfNot(id)) if a == *id => self.add( + VisibilityConstraint::VisibleIfNot(ScopedVisibilityConstraintId::ALWAYS_TRUE), + ), + (VisibilityConstraint::VisibleIfNot(id), _) if *id == b => self.add( + VisibilityConstraint::VisibleIfNot(ScopedVisibilityConstraintId::ALWAYS_TRUE), + ), + _ => self.add(VisibilityConstraint::KleeneAnd(a, b)), } }