Skip to content

Commit c6b4a9f

Browse files
committed
wip
1 parent 895c98a commit c6b4a9f

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

crates/ty_python_semantic/src/types.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3464,6 +3464,7 @@ impl<'db> Type<'db> {
34643464
},
34653465

34663466
Type::NominalInstance(instance) => match instance.class.known(db) {
3467+
Some(KnownClass::Tuple) => try_dunder_bool()?,
34673468
Some(known_class) => known_class.bool(),
34683469
None => try_dunder_bool()?,
34693470
},

crates/ty_python_semantic/src/types/generics.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,16 @@ impl<'db> Specialization<'db> {
592592
}
593593
}
594594

595+
match (self.tuple_inner(db), other.tuple_inner(db)) {
596+
(Some(_), None) | (None, Some(_)) => return false,
597+
(None, None) => {}
598+
(Some(self_tuple), Some(other_tuple)) => {
599+
if !self_tuple.is_equivalent_to(db, other_tuple) {
600+
return false;
601+
}
602+
}
603+
}
604+
595605
true
596606
}
597607

crates/ty_python_semantic/src/types/instance.rs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,10 @@ impl<'db> Type<'db> {
3333
let Some(tuple) = tuple else {
3434
return Type::Never;
3535
};
36-
let Some(tuple_class) = KnownClass::Tuple.try_to_class_literal(db) else {
37-
return Type::unknown();
38-
};
39-
let specialization = Specialization::new(
40-
db,
41-
GenericContext::new(db, FxOrderSet::default()),
42-
Box::from([UnionType::from_elements(db, tuple.tuple(db).all_elements())]),
43-
Some(tuple),
44-
);
45-
let alias = GenericAlias::new(db, tuple_class, specialization);
46-
Type::NominalInstance(NominalInstanceType {
47-
class: ClassType::Generic(alias),
48-
_phantom: PhantomData,
49-
})
36+
tuple
37+
.to_class_type(db)
38+
.map(|class| Type::instance(db, class))
39+
.unwrap_or_else(Type::unknown)
5040
}
5141

5242
pub(crate) const fn into_nominal_instance(self) -> Option<NominalInstanceType<'db>> {

0 commit comments

Comments
 (0)