[ty] Fix broken property tests for disjointness (#18384)

This commit is contained in:
Alex Waygood 2025-05-30 16:49:20 +01:00 committed by GitHub
parent e730f27f80
commit 77c8ddf101
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 11 deletions

View file

@ -2180,23 +2180,22 @@ impl<'db> Type<'db> {
(
Type::Callable(_) | Type::DataclassDecorator(_) | Type::DataclassTransformer(_),
Type::NominalInstance(instance),
instance @ Type::NominalInstance(NominalInstanceType { class, .. }),
)
| (
Type::NominalInstance(instance),
instance @ Type::NominalInstance(NominalInstanceType { class, .. }),
Type::Callable(_) | Type::DataclassDecorator(_) | Type::DataclassTransformer(_),
) if instance.class.is_final(db) => {
let member = self.member_lookup_with_policy(
) if class.is_final(db) => instance
.member_lookup_with_policy(
db,
Name::new_static("__call__"),
MemberLookupPolicy::NO_INSTANCE_FALLBACK,
);
match member.symbol {
// TODO: ideally this would check disjointness of the `__call__` signature and the callable signature
Symbol::Type(ty, _) => !ty.is_assignable_to(db, CallableType::unknown(db)),
Symbol::Unbound => true,
}
}
)
.symbol
.ignore_possibly_unbound()
.is_none_or(|dunder_call| {
!dunder_call.is_assignable_to(db, CallableType::unknown(db))
}),
(
Type::Callable(_) | Type::DataclassDecorator(_) | Type::DataclassTransformer(_),