diff --git a/crates/hir_def/src/item_scope.rs b/crates/hir_def/src/item_scope.rs index 4ddfd9ee6c8..a8ee5eeac9f 100644 --- a/crates/hir_def/src/item_scope.rs +++ b/crates/hir_def/src/item_scope.rs @@ -287,14 +287,25 @@ impl ItemScope { } pub(crate) fn shrink_to_fit(&mut self) { - self.types.shrink_to_fit(); - self.values.shrink_to_fit(); - self.macros.shrink_to_fit(); - self.unresolved.shrink_to_fit(); - self.defs.shrink_to_fit(); - self.impls.shrink_to_fit(); - self.unnamed_trait_imports.shrink_to_fit(); - self.legacy_macros.shrink_to_fit(); + // Exhaustive match to require handling new fields. + let Self { + types, + values, + macros, + unresolved, + defs, + impls, + unnamed_trait_imports, + legacy_macros, + } = self; + types.shrink_to_fit(); + values.shrink_to_fit(); + macros.shrink_to_fit(); + unresolved.shrink_to_fit(); + defs.shrink_to_fit(); + impls.shrink_to_fit(); + unnamed_trait_imports.shrink_to_fit(); + legacy_macros.shrink_to_fit(); } } diff --git a/crates/hir_def/src/nameres.rs b/crates/hir_def/src/nameres.rs index 6a09ad420b4..7dd68219fde 100644 --- a/crates/hir_def/src/nameres.rs +++ b/crates/hir_def/src/nameres.rs @@ -411,11 +411,25 @@ impl DefMap { } fn shrink_to_fit(&mut self) { - self.extern_prelude.shrink_to_fit(); - self.exported_proc_macros.shrink_to_fit(); - self.diagnostics.shrink_to_fit(); - self.modules.shrink_to_fit(); - for (_, module) in self.modules.iter_mut() { + // Exhaustive match to require handling new fields. + let Self { + _c: _, + exported_proc_macros, + extern_prelude, + diagnostics, + modules, + block: _, + edition: _, + krate: _, + prelude: _, + root: _, + } = self; + + extern_prelude.shrink_to_fit(); + exported_proc_macros.shrink_to_fit(); + diagnostics.shrink_to_fit(); + modules.shrink_to_fit(); + for (_, module) in modules.iter_mut() { module.children.shrink_to_fit(); module.scope.shrink_to_fit(); }