diff options
Diffstat (limited to 'crates/ra_hir_def')
-rw-r--r-- | crates/ra_hir_def/src/db.rs | 6 | ||||
-rw-r--r-- | crates/ra_hir_def/src/nameres/collector.rs | 2 | ||||
-rw-r--r-- | crates/ra_hir_def/src/nameres/path_resolution.rs | 8 | ||||
-rw-r--r-- | crates/ra_hir_def/src/nameres/raw.rs | 18 | ||||
-rw-r--r-- | crates/ra_hir_def/src/resolver.rs | 8 | ||||
-rw-r--r-- | crates/ra_hir_def/src/visibility.rs | 38 |
6 files changed, 40 insertions, 40 deletions
diff --git a/crates/ra_hir_def/src/db.rs b/crates/ra_hir_def/src/db.rs index 1761e2187..6bc0a8486 100644 --- a/crates/ra_hir_def/src/db.rs +++ b/crates/ra_hir_def/src/db.rs | |||
@@ -14,7 +14,7 @@ use crate::{ | |||
14 | generics::GenericParams, | 14 | generics::GenericParams, |
15 | lang_item::{LangItemTarget, LangItems}, | 15 | lang_item::{LangItemTarget, LangItems}, |
16 | nameres::{raw::RawItems, CrateDefMap}, | 16 | nameres::{raw::RawItems, CrateDefMap}, |
17 | visibility::Visibility, | 17 | visibility::RawVisibility, |
18 | AttrDefId, ConstId, ConstLoc, DefWithBodyId, EnumId, EnumLoc, FunctionId, FunctionLoc, | 18 | AttrDefId, ConstId, ConstLoc, DefWithBodyId, EnumId, EnumLoc, FunctionId, FunctionLoc, |
19 | GenericDefId, ImplId, ImplLoc, ModuleId, StaticId, StaticLoc, StructId, StructLoc, TraitId, | 19 | GenericDefId, ImplId, ImplLoc, ModuleId, StaticId, StaticLoc, StructId, StructLoc, TraitId, |
20 | TraitLoc, TypeAliasId, TypeAliasLoc, UnionId, UnionLoc, VisibilityDefId, | 20 | TraitLoc, TypeAliasId, TypeAliasLoc, UnionId, UnionLoc, VisibilityDefId, |
@@ -91,8 +91,8 @@ pub trait DefDatabase: InternDatabase + AstDatabase { | |||
91 | #[salsa::invoke(Attrs::attrs_query)] | 91 | #[salsa::invoke(Attrs::attrs_query)] |
92 | fn attrs(&self, def: AttrDefId) -> Attrs; | 92 | fn attrs(&self, def: AttrDefId) -> Attrs; |
93 | 93 | ||
94 | #[salsa::invoke(Visibility::visibility_query)] | 94 | #[salsa::invoke(RawVisibility::visibility_query)] |
95 | fn visibility(&self, def: VisibilityDefId) -> Visibility; | 95 | fn visibility(&self, def: VisibilityDefId) -> RawVisibility; |
96 | 96 | ||
97 | #[salsa::invoke(LangItems::module_lang_items_query)] | 97 | #[salsa::invoke(LangItems::module_lang_items_query)] |
98 | fn module_lang_items(&self, module: ModuleId) -> Option<Arc<LangItems>>; | 98 | fn module_lang_items(&self, module: ModuleId) -> Option<Arc<LangItems>>; |
diff --git a/crates/ra_hir_def/src/nameres/collector.rs b/crates/ra_hir_def/src/nameres/collector.rs index a80c4f8e9..f4678d145 100644 --- a/crates/ra_hir_def/src/nameres/collector.rs +++ b/crates/ra_hir_def/src/nameres/collector.rs | |||
@@ -743,7 +743,7 @@ where | |||
743 | name: Name, | 743 | name: Name, |
744 | declaration: AstId<ast::Module>, | 744 | declaration: AstId<ast::Module>, |
745 | definition: Option<FileId>, | 745 | definition: Option<FileId>, |
746 | visibility: &crate::visibility::Visibility, | 746 | visibility: &crate::visibility::RawVisibility, |
747 | ) -> LocalModuleId { | 747 | ) -> LocalModuleId { |
748 | let vis = self | 748 | let vis = self |
749 | .def_collector | 749 | .def_collector |
diff --git a/crates/ra_hir_def/src/nameres/path_resolution.rs b/crates/ra_hir_def/src/nameres/path_resolution.rs index a56e3f08b..8a6256eee 100644 --- a/crates/ra_hir_def/src/nameres/path_resolution.rs +++ b/crates/ra_hir_def/src/nameres/path_resolution.rs | |||
@@ -21,7 +21,7 @@ use crate::{ | |||
21 | nameres::{BuiltinShadowMode, CrateDefMap}, | 21 | nameres::{BuiltinShadowMode, CrateDefMap}, |
22 | path::{ModPath, PathKind}, | 22 | path::{ModPath, PathKind}, |
23 | per_ns::PerNs, | 23 | per_ns::PerNs, |
24 | visibility::{ResolvedVisibility, Visibility}, | 24 | visibility::{RawVisibility, ResolvedVisibility}, |
25 | AdtId, CrateId, EnumVariantId, LocalModuleId, ModuleDefId, ModuleId, | 25 | AdtId, CrateId, EnumVariantId, LocalModuleId, ModuleDefId, ModuleId, |
26 | }; | 26 | }; |
27 | 27 | ||
@@ -71,10 +71,10 @@ impl CrateDefMap { | |||
71 | &self, | 71 | &self, |
72 | db: &impl DefDatabase, | 72 | db: &impl DefDatabase, |
73 | original_module: LocalModuleId, | 73 | original_module: LocalModuleId, |
74 | visibility: &Visibility, | 74 | visibility: &RawVisibility, |
75 | ) -> Option<ResolvedVisibility> { | 75 | ) -> Option<ResolvedVisibility> { |
76 | match visibility { | 76 | match visibility { |
77 | Visibility::Module(path) => { | 77 | RawVisibility::Module(path) => { |
78 | let (result, remaining) = | 78 | let (result, remaining) = |
79 | self.resolve_path(db, original_module, &path, BuiltinShadowMode::Module); | 79 | self.resolve_path(db, original_module, &path, BuiltinShadowMode::Module); |
80 | if remaining.is_some() { | 80 | if remaining.is_some() { |
@@ -89,7 +89,7 @@ impl CrateDefMap { | |||
89 | } | 89 | } |
90 | } | 90 | } |
91 | } | 91 | } |
92 | Visibility::Public => Some(ResolvedVisibility::Public), | 92 | RawVisibility::Public => Some(ResolvedVisibility::Public), |
93 | } | 93 | } |
94 | } | 94 | } |
95 | 95 | ||
diff --git a/crates/ra_hir_def/src/nameres/raw.rs b/crates/ra_hir_def/src/nameres/raw.rs index 59f79f7cd..fac1169ef 100644 --- a/crates/ra_hir_def/src/nameres/raw.rs +++ b/crates/ra_hir_def/src/nameres/raw.rs | |||
@@ -22,7 +22,7 @@ use ra_syntax::{ | |||
22 | use test_utils::tested_by; | 22 | use test_utils::tested_by; |
23 | 23 | ||
24 | use crate::{ | 24 | use crate::{ |
25 | attr::Attrs, db::DefDatabase, path::ModPath, visibility::Visibility, FileAstId, HirFileId, | 25 | attr::Attrs, db::DefDatabase, path::ModPath, visibility::RawVisibility, FileAstId, HirFileId, |
26 | InFile, | 26 | InFile, |
27 | }; | 27 | }; |
28 | 28 | ||
@@ -127,12 +127,12 @@ impl_arena_id!(Module); | |||
127 | pub(super) enum ModuleData { | 127 | pub(super) enum ModuleData { |
128 | Declaration { | 128 | Declaration { |
129 | name: Name, | 129 | name: Name, |
130 | visibility: Visibility, | 130 | visibility: RawVisibility, |
131 | ast_id: FileAstId<ast::Module>, | 131 | ast_id: FileAstId<ast::Module>, |
132 | }, | 132 | }, |
133 | Definition { | 133 | Definition { |
134 | name: Name, | 134 | name: Name, |
135 | visibility: Visibility, | 135 | visibility: RawVisibility, |
136 | ast_id: FileAstId<ast::Module>, | 136 | ast_id: FileAstId<ast::Module>, |
137 | items: Vec<RawItem>, | 137 | items: Vec<RawItem>, |
138 | }, | 138 | }, |
@@ -150,7 +150,7 @@ pub struct ImportData { | |||
150 | pub(super) is_prelude: bool, | 150 | pub(super) is_prelude: bool, |
151 | pub(super) is_extern_crate: bool, | 151 | pub(super) is_extern_crate: bool, |
152 | pub(super) is_macro_use: bool, | 152 | pub(super) is_macro_use: bool, |
153 | pub(super) visibility: Visibility, | 153 | pub(super) visibility: RawVisibility, |
154 | } | 154 | } |
155 | 155 | ||
156 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 156 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
@@ -161,7 +161,7 @@ impl_arena_id!(Def); | |||
161 | pub(super) struct DefData { | 161 | pub(super) struct DefData { |
162 | pub(super) name: Name, | 162 | pub(super) name: Name, |
163 | pub(super) kind: DefKind, | 163 | pub(super) kind: DefKind, |
164 | pub(super) visibility: Visibility, | 164 | pub(super) visibility: RawVisibility, |
165 | } | 165 | } |
166 | 166 | ||
167 | #[derive(Debug, PartialEq, Eq, Clone, Copy)] | 167 | #[derive(Debug, PartialEq, Eq, Clone, Copy)] |
@@ -232,7 +232,7 @@ impl RawItemsCollector { | |||
232 | 232 | ||
233 | fn add_item(&mut self, current_module: Option<Module>, item: ast::ModuleItem) { | 233 | fn add_item(&mut self, current_module: Option<Module>, item: ast::ModuleItem) { |
234 | let attrs = self.parse_attrs(&item); | 234 | let attrs = self.parse_attrs(&item); |
235 | let visibility = Visibility::from_ast_with_hygiene(item.visibility(), &self.hygiene); | 235 | let visibility = RawVisibility::from_ast_with_hygiene(item.visibility(), &self.hygiene); |
236 | let (kind, name) = match item { | 236 | let (kind, name) = match item { |
237 | ast::ModuleItem::Module(module) => { | 237 | ast::ModuleItem::Module(module) => { |
238 | self.add_module(current_module, module); | 238 | self.add_module(current_module, module); |
@@ -292,7 +292,7 @@ impl RawItemsCollector { | |||
292 | None => return, | 292 | None => return, |
293 | }; | 293 | }; |
294 | let attrs = self.parse_attrs(&module); | 294 | let attrs = self.parse_attrs(&module); |
295 | let visibility = Visibility::from_ast_with_hygiene(module.visibility(), &self.hygiene); | 295 | let visibility = RawVisibility::from_ast_with_hygiene(module.visibility(), &self.hygiene); |
296 | 296 | ||
297 | let ast_id = self.source_ast_id_map.ast_id(&module); | 297 | let ast_id = self.source_ast_id_map.ast_id(&module); |
298 | if module.has_semi() { | 298 | if module.has_semi() { |
@@ -320,7 +320,7 @@ impl RawItemsCollector { | |||
320 | // FIXME: cfg_attr | 320 | // FIXME: cfg_attr |
321 | let is_prelude = use_item.has_atom_attr("prelude_import"); | 321 | let is_prelude = use_item.has_atom_attr("prelude_import"); |
322 | let attrs = self.parse_attrs(&use_item); | 322 | let attrs = self.parse_attrs(&use_item); |
323 | let visibility = Visibility::from_ast_with_hygiene(use_item.visibility(), &self.hygiene); | 323 | let visibility = RawVisibility::from_ast_with_hygiene(use_item.visibility(), &self.hygiene); |
324 | 324 | ||
325 | let mut buf = Vec::new(); | 325 | let mut buf = Vec::new(); |
326 | ModPath::expand_use_item( | 326 | ModPath::expand_use_item( |
@@ -352,7 +352,7 @@ impl RawItemsCollector { | |||
352 | if let Some(name_ref) = extern_crate.name_ref() { | 352 | if let Some(name_ref) = extern_crate.name_ref() { |
353 | let path = ModPath::from_name_ref(&name_ref); | 353 | let path = ModPath::from_name_ref(&name_ref); |
354 | let visibility = | 354 | let visibility = |
355 | Visibility::from_ast_with_hygiene(extern_crate.visibility(), &self.hygiene); | 355 | RawVisibility::from_ast_with_hygiene(extern_crate.visibility(), &self.hygiene); |
356 | let alias = extern_crate.alias().and_then(|a| a.name()).map(|it| it.as_name()); | 356 | let alias = extern_crate.alias().and_then(|a| a.name()).map(|it| it.as_name()); |
357 | let attrs = self.parse_attrs(&extern_crate); | 357 | let attrs = self.parse_attrs(&extern_crate); |
358 | // FIXME: cfg_attr | 358 | // FIXME: cfg_attr |
diff --git a/crates/ra_hir_def/src/resolver.rs b/crates/ra_hir_def/src/resolver.rs index 950bf6c79..8e7a83ffe 100644 --- a/crates/ra_hir_def/src/resolver.rs +++ b/crates/ra_hir_def/src/resolver.rs | |||
@@ -19,7 +19,7 @@ use crate::{ | |||
19 | nameres::CrateDefMap, | 19 | nameres::CrateDefMap, |
20 | path::{ModPath, PathKind}, | 20 | path::{ModPath, PathKind}, |
21 | per_ns::PerNs, | 21 | per_ns::PerNs, |
22 | visibility::{ResolvedVisibility, Visibility}, | 22 | visibility::{RawVisibility, ResolvedVisibility}, |
23 | AdtId, AssocContainerId, ConstId, ContainerId, DefWithBodyId, EnumId, EnumVariantId, | 23 | AdtId, AssocContainerId, ConstId, ContainerId, DefWithBodyId, EnumId, EnumVariantId, |
24 | FunctionId, GenericDefId, HasModule, ImplId, LocalModuleId, Lookup, ModuleDefId, ModuleId, | 24 | FunctionId, GenericDefId, HasModule, ImplId, LocalModuleId, Lookup, ModuleDefId, ModuleId, |
25 | StaticId, StructId, TraitId, TypeAliasId, TypeParamId, VariantId, | 25 | StaticId, StructId, TraitId, TypeAliasId, TypeParamId, VariantId, |
@@ -235,17 +235,17 @@ impl Resolver { | |||
235 | pub fn resolve_visibility( | 235 | pub fn resolve_visibility( |
236 | &self, | 236 | &self, |
237 | db: &impl DefDatabase, | 237 | db: &impl DefDatabase, |
238 | visibility: &Visibility, | 238 | visibility: &RawVisibility, |
239 | ) -> Option<ResolvedVisibility> { | 239 | ) -> Option<ResolvedVisibility> { |
240 | match visibility { | 240 | match visibility { |
241 | Visibility::Module(_) => { | 241 | RawVisibility::Module(_) => { |
242 | let (item_map, module) = match self.module() { | 242 | let (item_map, module) = match self.module() { |
243 | Some(it) => it, | 243 | Some(it) => it, |
244 | None => return None, | 244 | None => return None, |
245 | }; | 245 | }; |
246 | item_map.resolve_visibility(db, module, visibility) | 246 | item_map.resolve_visibility(db, module, visibility) |
247 | } | 247 | } |
248 | Visibility::Public => Some(ResolvedVisibility::Public), | 248 | RawVisibility::Public => Some(ResolvedVisibility::Public), |
249 | } | 249 | } |
250 | } | 250 | } |
251 | 251 | ||
diff --git a/crates/ra_hir_def/src/visibility.rs b/crates/ra_hir_def/src/visibility.rs index 990b2975c..b11e9bc52 100644 --- a/crates/ra_hir_def/src/visibility.rs +++ b/crates/ra_hir_def/src/visibility.rs | |||
@@ -16,7 +16,7 @@ use crate::{ | |||
16 | 16 | ||
17 | /// Visibility of an item, not yet resolved. | 17 | /// Visibility of an item, not yet resolved. |
18 | #[derive(Debug, Clone, PartialEq, Eq)] | 18 | #[derive(Debug, Clone, PartialEq, Eq)] |
19 | pub enum Visibility { | 19 | pub enum RawVisibility { |
20 | // FIXME: We could avoid the allocation in many cases by special-casing | 20 | // FIXME: We could avoid the allocation in many cases by special-casing |
21 | // pub(crate), pub(super) and private. Alternatively, `ModPath` could be | 21 | // pub(crate), pub(super) and private. Alternatively, `ModPath` could be |
22 | // made to contain an Arc<[Segment]> instead of a Vec? | 22 | // made to contain an Arc<[Segment]> instead of a Vec? |
@@ -27,16 +27,16 @@ pub enum Visibility { | |||
27 | Public, | 27 | Public, |
28 | } | 28 | } |
29 | 29 | ||
30 | impl Visibility { | 30 | impl RawVisibility { |
31 | pub(crate) fn visibility_query(db: &impl DefDatabase, def: VisibilityDefId) -> Visibility { | 31 | pub(crate) fn visibility_query(db: &impl DefDatabase, def: VisibilityDefId) -> RawVisibility { |
32 | match def { | 32 | match def { |
33 | VisibilityDefId::ModuleId(module) => { | 33 | VisibilityDefId::ModuleId(module) => { |
34 | let def_map = db.crate_def_map(module.krate); | 34 | let def_map = db.crate_def_map(module.krate); |
35 | let src = match def_map[module.local_id].declaration_source(db) { | 35 | let src = match def_map[module.local_id].declaration_source(db) { |
36 | Some(it) => it, | 36 | Some(it) => it, |
37 | None => return Visibility::private(), | 37 | None => return RawVisibility::private(), |
38 | }; | 38 | }; |
39 | Visibility::from_ast(db, src.map(|it| it.visibility())) | 39 | RawVisibility::from_ast(db, src.map(|it| it.visibility())) |
40 | } | 40 | } |
41 | VisibilityDefId::StructFieldId(it) => { | 41 | VisibilityDefId::StructFieldId(it) => { |
42 | let src = it.parent.child_source(db); | 42 | let src = it.parent.child_source(db); |
@@ -49,9 +49,9 @@ impl Visibility { | |||
49 | Either::Right(record) => record.visibility(), | 49 | Either::Right(record) => record.visibility(), |
50 | }); | 50 | }); |
51 | if vis_node.value.is_none() && is_enum { | 51 | if vis_node.value.is_none() && is_enum { |
52 | Visibility::Public | 52 | RawVisibility::Public |
53 | } else { | 53 | } else { |
54 | Visibility::from_ast(db, vis_node) | 54 | RawVisibility::from_ast(db, vis_node) |
55 | } | 55 | } |
56 | } | 56 | } |
57 | VisibilityDefId::AdtId(it) => match it { | 57 | VisibilityDefId::AdtId(it) => match it { |
@@ -67,41 +67,41 @@ impl Visibility { | |||
67 | } | 67 | } |
68 | } | 68 | } |
69 | 69 | ||
70 | fn private() -> Visibility { | 70 | fn private() -> RawVisibility { |
71 | let path = ModPath { kind: PathKind::Super(0), segments: Vec::new() }; | 71 | let path = ModPath { kind: PathKind::Super(0), segments: Vec::new() }; |
72 | Visibility::Module(Arc::new(path)) | 72 | RawVisibility::Module(Arc::new(path)) |
73 | } | 73 | } |
74 | 74 | ||
75 | fn from_ast(db: &impl DefDatabase, node: InFile<Option<ast::Visibility>>) -> Visibility { | 75 | fn from_ast(db: &impl DefDatabase, node: InFile<Option<ast::Visibility>>) -> RawVisibility { |
76 | Self::from_ast_with_hygiene(node.value, &Hygiene::new(db, node.file_id)) | 76 | Self::from_ast_with_hygiene(node.value, &Hygiene::new(db, node.file_id)) |
77 | } | 77 | } |
78 | 78 | ||
79 | pub(crate) fn from_ast_with_hygiene( | 79 | pub(crate) fn from_ast_with_hygiene( |
80 | node: Option<ast::Visibility>, | 80 | node: Option<ast::Visibility>, |
81 | hygiene: &Hygiene, | 81 | hygiene: &Hygiene, |
82 | ) -> Visibility { | 82 | ) -> RawVisibility { |
83 | let node = match node { | 83 | let node = match node { |
84 | None => return Visibility::private(), | 84 | None => return RawVisibility::private(), |
85 | Some(node) => node, | 85 | Some(node) => node, |
86 | }; | 86 | }; |
87 | match node.kind() { | 87 | match node.kind() { |
88 | ast::VisibilityKind::In(path) => { | 88 | ast::VisibilityKind::In(path) => { |
89 | let path = ModPath::from_src(path, hygiene); | 89 | let path = ModPath::from_src(path, hygiene); |
90 | let path = match path { | 90 | let path = match path { |
91 | None => return Visibility::private(), | 91 | None => return RawVisibility::private(), |
92 | Some(path) => path, | 92 | Some(path) => path, |
93 | }; | 93 | }; |
94 | Visibility::Module(Arc::new(path)) | 94 | RawVisibility::Module(Arc::new(path)) |
95 | } | 95 | } |
96 | ast::VisibilityKind::PubCrate => { | 96 | ast::VisibilityKind::PubCrate => { |
97 | let path = ModPath { kind: PathKind::Crate, segments: Vec::new() }; | 97 | let path = ModPath { kind: PathKind::Crate, segments: Vec::new() }; |
98 | Visibility::Module(Arc::new(path)) | 98 | RawVisibility::Module(Arc::new(path)) |
99 | } | 99 | } |
100 | ast::VisibilityKind::PubSuper => { | 100 | ast::VisibilityKind::PubSuper => { |
101 | let path = ModPath { kind: PathKind::Super(1), segments: Vec::new() }; | 101 | let path = ModPath { kind: PathKind::Super(1), segments: Vec::new() }; |
102 | Visibility::Module(Arc::new(path)) | 102 | RawVisibility::Module(Arc::new(path)) |
103 | } | 103 | } |
104 | ast::VisibilityKind::Pub => Visibility::Public, | 104 | ast::VisibilityKind::Pub => RawVisibility::Public, |
105 | } | 105 | } |
106 | } | 106 | } |
107 | 107 | ||
@@ -156,11 +156,11 @@ impl ResolvedVisibility { | |||
156 | } | 156 | } |
157 | } | 157 | } |
158 | 158 | ||
159 | fn visibility_from_loc<T>(node: T, db: &impl DefDatabase) -> Visibility | 159 | fn visibility_from_loc<T>(node: T, db: &impl DefDatabase) -> RawVisibility |
160 | where | 160 | where |
161 | T: HasSource, | 161 | T: HasSource, |
162 | T::Value: ast::VisibilityOwner, | 162 | T::Value: ast::VisibilityOwner, |
163 | { | 163 | { |
164 | let src = node.source(db); | 164 | let src = node.source(db); |
165 | Visibility::from_ast(db, src.map(|n| n.visibility())) | 165 | RawVisibility::from_ast(db, src.map(|n| n.visibility())) |
166 | } | 166 | } |