From 107e07458c5db92612ddff3a6a196075161694a0 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 12 Jul 2021 20:00:17 +0300 Subject: [PATCH] internal: remove erroneous Default impl for ModuleOrigin In rust-analyzer, we avoid defualt impls for types which don't have sensible, "empty" defaults. In particular, we avoid using invalid indices for defaults and similar hacks. --- crates/hir_def/src/nameres.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/crates/hir_def/src/nameres.rs b/crates/hir_def/src/nameres.rs index 9e6aa96075b..b4bd1d2e213 100644 --- a/crates/hir_def/src/nameres.rs +++ b/crates/hir_def/src/nameres.rs @@ -145,12 +145,6 @@ pub enum ModuleOrigin { }, } -impl Default for ModuleOrigin { - fn default() -> Self { - ModuleOrigin::CrateRoot { definition: FileId(0) } - } -} - impl ModuleOrigin { fn declaration(&self) -> Option> { match self { @@ -196,7 +190,7 @@ impl ModuleOrigin { } } -#[derive(Default, Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq)] pub struct ModuleData { pub parent: Option, pub children: FxHashMap, @@ -206,6 +200,17 @@ pub struct ModuleData { pub origin: ModuleOrigin, } +impl Default for ModuleData { + fn default() -> Self { + ModuleData { + parent: None, + children: FxHashMap::default(), + scope: ItemScope::default(), + origin: ModuleOrigin::CrateRoot { definition: FileId(!0) }, + } + } +} + impl DefMap { pub(crate) fn crate_def_map_query(db: &dyn DefDatabase, krate: CrateId) -> Arc { let _p = profile::span("crate_def_map_query").detail(|| {