[red-knot] Minor 'member_lookup_with_policy' fix (#17407)

## Summary

Couldn't really think of a regression test, but it's probably better to
fix this if we ever add new member-lookup-policies.
This commit is contained in:
David Peter 2025-04-15 13:28:51 +02:00 committed by GitHub
parent 03adae80dc
commit 1f85e0d0a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2637,24 +2637,27 @@ impl<'db> Type<'db> {
_ => {
KnownClass::MethodType
.to_instance(db)
.member(db, &name)
.member_lookup_with_policy(db, name.clone(), policy)
.or_fall_back_to(db, || {
// If an attribute is not available on the bound method object,
// it will be looked up on the underlying function object:
Type::FunctionLiteral(bound_method.function(db)).member(db, &name)
Type::FunctionLiteral(bound_method.function(db))
.member_lookup_with_policy(db, name, policy)
})
}
},
Type::MethodWrapper(_) => KnownClass::MethodWrapperType
.to_instance(db)
.member(db, &name),
.member_lookup_with_policy(db, name, policy),
Type::WrapperDescriptor(_) => KnownClass::WrapperDescriptorType
.to_instance(db)
.member(db, &name),
Type::DataclassDecorator(_) => {
KnownClass::FunctionType.to_instance(db).member(db, &name)
}
Type::Callable(_) => KnownClass::Object.to_instance(db).member(db, &name),
.member_lookup_with_policy(db, name, policy),
Type::DataclassDecorator(_) => KnownClass::FunctionType
.to_instance(db)
.member_lookup_with_policy(db, name, policy),
Type::Callable(_) => KnownClass::Object
.to_instance(db)
.member_lookup_with_policy(db, name, policy),
Type::Instance(InstanceType { class })
if matches!(name.as_str(), "major" | "minor")