diff --git a/crates/red_knot_python_semantic/src/types/class.rs b/crates/red_knot_python_semantic/src/types/class.rs index b3c28473fc..0a48704475 100644 --- a/crates/red_knot_python_semantic/src/types/class.rs +++ b/crates/red_knot_python_semantic/src/types/class.rs @@ -534,7 +534,7 @@ impl<'db> ClassLiteral<'db> { /// Determine if this class is a protocol. pub(super) fn is_protocol(self, db: &'db dyn Db) -> bool { - self.explicit_bases(db).iter().any(|base| { + self.explicit_bases(db).iter().rev().take(3).any(|base| { matches!( base, Type::KnownInstance(KnownInstanceType::Protocol)