Skip to content

Commit 08b262c

Browse files
committed
fix recursive typevar display
1 parent fcd8402 commit 08b262c

File tree

6 files changed

+20
-13
lines changed

6 files changed

+20
-13
lines changed

crates/ty_python_semantic/src/semantic_index/definition.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ impl DefinitionKind<'_> {
702702
)
703703
}
704704

705-
pub(crate) fn into_typevar(&self) -> Option<&AstNodeRef<ast::TypeParamTypeVar>> {
705+
pub(crate) fn as_typevar(&self) -> Option<&AstNodeRef<ast::TypeParamTypeVar>> {
706706
match self {
707707
DefinitionKind::TypeVar(type_var) => Some(type_var),
708708
_ => None,

crates/ty_python_semantic/src/types.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7004,7 +7004,7 @@ impl<'db> TypeVarInstance<'db> {
70047004
fn lazy_bound(self, db: &'db dyn Db) -> Option<TypeVarBoundOrConstraints<'db>> {
70057005
let definition = self.definition(db)?;
70067006
let module = parsed_module(db, definition.file(db)).load(db);
7007-
let typevar_node = definition.kind(db).into_typevar()?.node(&module);
7007+
let typevar_node = definition.kind(db).as_typevar()?.node(&module);
70087008
let ty = definition_expression_type(db, definition, typevar_node.bound.as_ref()?);
70097009
Some(TypeVarBoundOrConstraints::UpperBound(ty))
70107010
}
@@ -7013,7 +7013,7 @@ impl<'db> TypeVarInstance<'db> {
70137013
fn lazy_constraints(self, db: &'db dyn Db) -> Option<TypeVarBoundOrConstraints<'db>> {
70147014
let definition = self.definition(db)?;
70157015
let module = parsed_module(db, definition.file(db)).load(db);
7016-
let typevar_node = definition.kind(db).into_typevar()?.node(&module);
7016+
let typevar_node = definition.kind(db).as_typevar()?.node(&module);
70177017
let ty = definition_expression_type(db, definition, typevar_node.bound.as_ref()?)
70187018
.into_union()?;
70197019
Some(TypeVarBoundOrConstraints::Constraints(ty))
@@ -7023,7 +7023,7 @@ impl<'db> TypeVarInstance<'db> {
70237023
fn lazy_default(self, db: &'db dyn Db) -> Option<Type<'db>> {
70247024
let definition = self.definition(db)?;
70257025
let module = parsed_module(db, definition.file(db)).load(db);
7026-
let typevar_node = definition.kind(db).into_typevar()?.node(&module);
7026+
let typevar_node = definition.kind(db).as_typevar()?.node(&module);
70277027
Some(definition_expression_type(
70287028
db,
70297029
definition,

crates/ty_python_semantic/src/types/class.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4558,7 +4558,7 @@ impl KnownClass {
45584558
Some(containing_assignment),
45594559
bound_or_constraint,
45604560
variance,
4561-
default.map(|ty| TypeVarDefault::Eager(ty)),
4561+
default.map(TypeVarDefault::Eager),
45624562
TypeVarKind::Legacy,
45634563
),
45644564
)));

crates/ty_python_semantic/src/types/cyclic.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ impl Default for TypeTransformer<'_> {
3838
}
3939
}
4040

41-
pub(crate) type TypeVisitor<'db> = CycleDetector<Type<'db>, bool>;
4241
pub(crate) type PairVisitor<'db> = CycleDetector<(Type<'db>, Type<'db>), bool>;
4342

4443
#[derive(Debug)]

crates/ty_python_semantic/src/types/display.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -433,17 +433,21 @@ impl Display for DisplayTypeVarInstance<'_> {
433433
display_quoted_string(self.typevar.name(self.db)).fmt(f)?;
434434
match self.typevar.bound_or_constraints(self.db) {
435435
Some(TypeVarBoundOrConstraints::UpperBound(bound)) => {
436-
write!(f, ", bound={}", bound.display(self.db))?;
436+
write!(f, ", bound={}", bound.normalized(self.db).display(self.db))?;
437437
}
438438
Some(TypeVarBoundOrConstraints::Constraints(constraints)) => {
439439
for constraint in constraints.iter(self.db) {
440-
write!(f, ", {}", constraint.display(self.db))?;
440+
write!(f, ", {}", constraint.normalized(self.db).display(self.db))?;
441441
}
442442
}
443443
None => {}
444444
}
445445
if let Some(default_type) = self.typevar.default_type(self.db) {
446-
write!(f, ", default={}", default_type.display(self.db))?;
446+
write!(
447+
f,
448+
", default={}",
449+
default_type.normalized(self.db).display(self.db)
450+
)?;
447451
}
448452
Ok(())
449453
}
@@ -473,22 +477,26 @@ impl Display for DisplayBoundTypeVarInstance<'_> {
473477
f.write_str(typevar.name(self.db))?;
474478
match typevar.bound_or_constraints(self.db) {
475479
Some(TypeVarBoundOrConstraints::UpperBound(bound)) => {
476-
write!(f, ": {}", bound.display(self.db))?;
480+
write!(f, ": {}", bound.normalized(self.db).display(self.db))?;
477481
}
478482
Some(TypeVarBoundOrConstraints::Constraints(constraints)) => {
479483
f.write_str(": (")?;
480484
for (idx, constraint) in constraints.iter(self.db).enumerate() {
481485
if idx > 0 {
482486
f.write_str(", ")?;
483487
}
484-
constraint.display(self.db).fmt(f)?;
488+
constraint.normalized(self.db).display(self.db).fmt(f)?;
485489
}
486490
f.write_char(')')?;
487491
}
488492
None => {}
489493
}
490494
if let Some(default_type) = self.bound_typevar.default_type(self.db) {
491-
write!(f, " = {}", default_type.display(self.db))?;
495+
write!(
496+
f,
497+
" = {}",
498+
default_type.normalized(self.db).display(self.db)
499+
)?;
492500
}
493501
Ok(())
494502
}

crates/ty_python_semantic/src/types/infer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3464,7 +3464,7 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> {
34643464
self.infer_type_expression(expr);
34653465
}
34663466
None => {}
3467-
};
3467+
}
34683468
self.infer_optional_type_expression(default.as_deref());
34693469
}
34703470

0 commit comments

Comments
 (0)