@@ -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