From 2fbe79ed9adaeb93e0c9b8bc1d7f67dff075b8dd Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 13 Sep 2019 16:38:59 +0300 Subject: make PerNs non-generic --- crates/ra_hir/src/nameres/collector.rs | 6 +++--- crates/ra_hir/src/nameres/per_ns.rs | 30 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 18 deletions(-) (limited to 'crates/ra_hir/src/nameres') diff --git a/crates/ra_hir/src/nameres/collector.rs b/crates/ra_hir/src/nameres/collector.rs index 7d2f313c1..1446c49a0 100644 --- a/crates/ra_hir/src/nameres/collector.rs +++ b/crates/ra_hir/src/nameres/collector.rs @@ -243,7 +243,7 @@ where &self, module_id: CrateModuleId, import: &raw::ImportData, - ) -> (PerNs, ReachedFixedPoint) { + ) -> (PerNs, ReachedFixedPoint) { log::debug!("resolving import: {:?} ({:?})", import, self.def_map.edition); if import.is_extern_crate { let res = self.def_map.resolve_name_in_extern_prelude( @@ -268,7 +268,7 @@ where fn record_resolved_import( &mut self, module_id: CrateModuleId, - def: PerNs, + def: PerNs, import_id: raw::ImportId, import: &raw::ImportData, ) { @@ -662,7 +662,7 @@ where }; } let name = def.name.clone(); - let def: PerNs = match def.kind { + let def: PerNs = match def.kind { raw::DefKind::Function(ast_id) => PerNs::values(def!(Function, ast_id)), raw::DefKind::Struct(ast_id) => { let s = def!(Struct, ast_id); diff --git a/crates/ra_hir/src/nameres/per_ns.rs b/crates/ra_hir/src/nameres/per_ns.rs index b0f4dff33..964da2794 100644 --- a/crates/ra_hir/src/nameres/per_ns.rs +++ b/crates/ra_hir/src/nameres/per_ns.rs @@ -1,4 +1,4 @@ -use crate::MacroDef; +use crate::{MacroDef, ModuleDef}; #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum Namespace { @@ -9,38 +9,38 @@ pub enum Namespace { } #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -pub struct PerNs { - pub types: Option, - pub values: Option, +pub struct PerNs { + pub types: Option, + pub values: Option, /// Since macros has different type, many methods simply ignore it. /// We can only use special method like `get_macros` to access it. pub macros: Option, } -impl Default for PerNs { +impl Default for PerNs { fn default() -> Self { PerNs { types: None, values: None, macros: None } } } -impl PerNs { - pub fn none() -> PerNs { +impl PerNs { + pub fn none() -> PerNs { PerNs { types: None, values: None, macros: None } } - pub fn values(t: T) -> PerNs { + pub fn values(t: ModuleDef) -> PerNs { PerNs { types: None, values: Some(t), macros: None } } - pub fn types(t: T) -> PerNs { + pub fn types(t: ModuleDef) -> PerNs { PerNs { types: Some(t), values: None, macros: None } } - pub fn both(types: T, values: T) -> PerNs { + pub fn both(types: ModuleDef, values: ModuleDef) -> PerNs { PerNs { types: Some(types), values: Some(values), macros: None } } - pub fn macros(macro_: MacroDef) -> PerNs { + pub fn macros(macro_: MacroDef) -> PerNs { PerNs { types: None, values: None, macros: Some(macro_) } } @@ -52,11 +52,11 @@ impl PerNs { self.types.is_some() && self.values.is_some() && self.macros.is_some() } - pub fn take_types(self) -> Option { + pub fn take_types(self) -> Option { self.types } - pub fn take_values(self) -> Option { + pub fn take_values(self) -> Option { self.values } @@ -64,11 +64,11 @@ impl PerNs { self.macros } - pub fn only_macros(&self) -> PerNs { + pub fn only_macros(&self) -> PerNs { PerNs { types: None, values: None, macros: self.macros } } - pub fn or(self, other: PerNs) -> PerNs { + pub fn or(self, other: PerNs) -> PerNs { PerNs { types: self.types.or(other.types), values: self.values.or(other.values), -- cgit v1.2.3