Skip to content

Commit 915dd92

Browse files
committed
don't create a query cycle in the cycle recovery function
1 parent d0145c6 commit 915dd92

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

crates/ty_python_semantic/src/types.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12129,7 +12129,8 @@ impl<'db> UnionType<'db> {
1212912129
.fold(
1213012130
UnionBuilder::new(db)
1213112131
.order_elements(false)
12132-
.unpack_aliases(false),
12132+
.unpack_aliases(false)
12133+
.cycle_recovery(true),
1213312134
UnionBuilder::add,
1213412135
)
1213512136
.build()

crates/ty_python_semantic/src/types/instance.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::types::constraints::{ConstraintSet, IteratorConstraintsExtension};
1111
use crate::types::enums::is_single_member_enum;
1212
use crate::types::generics::{InferableTypeVars, walk_specialization};
1313
use crate::types::protocol_class::walk_protocol_interface;
14-
use crate::types::tuple::{TupleSpec, TupleType};
14+
use crate::types::tuple::{TupleSpec, TupleType, walk_tuple_type};
1515
use crate::types::{
1616
ApplyTypeMappingVisitor, ClassBase, ClassLiteral, FindLegacyTypeVarsVisitor,
1717
HasRelationToVisitor, IsDisjointVisitor, IsEquivalentVisitor, NormalizedVisitor,
@@ -196,7 +196,15 @@ pub(super) fn walk_nominal_instance_type<'db, V: super::visitor::TypeVisitor<'db
196196
nominal: NominalInstanceType<'db>,
197197
visitor: &V,
198198
) {
199-
visitor.visit_type(db, nominal.class(db).into());
199+
match nominal.0 {
200+
NominalInstanceInner::ExactTuple(tuple) => {
201+
walk_tuple_type(db, tuple, visitor);
202+
}
203+
NominalInstanceInner::Object => {}
204+
NominalInstanceInner::NonTuple(class) => {
205+
visitor.visit_type(db, class.into());
206+
}
207+
}
200208
}
201209

202210
impl<'db> NominalInstanceType<'db> {

0 commit comments

Comments
 (0)