Skip to content

Commit 4704c2a

Browse files
authored
[ty] Remove unnecessary intermediate collection in StaticClassLiteral::fields (#24208)
1 parent c628e3e commit 4704c2a

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

crates/ty_python_semantic/src/types/class/static_literal.rs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2063,24 +2063,18 @@ impl<'db> StaticClassLiteral<'db> {
20632063
return self.own_fields(db, specialization, field_policy);
20642064
}
20652065

2066-
let matching_classes_in_mro: Vec<(StaticClassLiteral<'db>, Option<Specialization<'db>>)> =
2067-
self.iter_mro(db, specialization)
2068-
.filter_map(|superclass| {
2069-
let class = superclass.into_class()?;
2070-
// Dynamic classes don't have fields (no class body).
2071-
let (class_literal, specialization) = class.static_class_literal(db)?;
2072-
if field_policy.matches(db, class_literal.into(), specialization) {
2073-
Some((class_literal, specialization))
2074-
} else {
2075-
None
2076-
}
2077-
})
2078-
// We need to collect into a `Vec` here because we iterate the MRO in reverse order
2079-
.collect();
2080-
2081-
matching_classes_in_mro
2082-
.into_iter()
2066+
self.iter_mro(db, specialization)
20832067
.rev()
2068+
.filter_map(|superclass| {
2069+
let class = superclass.into_class()?;
2070+
// Dynamic classes don't have fields (no class body).
2071+
let (class_literal, specialization) = class.static_class_literal(db)?;
2072+
if field_policy.matches(db, class_literal.into(), specialization) {
2073+
Some((class_literal, specialization))
2074+
} else {
2075+
None
2076+
}
2077+
})
20842078
.flat_map(|(class, specialization)| class.own_fields(db, specialization, field_policy))
20852079
// KW_ONLY sentinels are markers, not real fields. Exclude them so
20862080
// they cannot shadow an inherited field with the same name.

0 commit comments

Comments
 (0)