aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/nameres/raw.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-12-26 14:49:13 +0000
committerFlorian Diebold <[email protected]>2019-12-26 15:23:40 +0000
commit04e8eaa14b11c432d43ad95f3766f8649da30347 (patch)
tree16b1180e9ff423276932e171f390ad97f3b7ca87 /crates/ra_hir_def/src/nameres/raw.rs
parent1a4a3eb69bcd48d79da0e227c6e2998d7910e6a7 (diff)
Handle privacy for modules
Diffstat (limited to 'crates/ra_hir_def/src/nameres/raw.rs')
-rw-r--r--crates/ra_hir_def/src/nameres/raw.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/crates/ra_hir_def/src/nameres/raw.rs b/crates/ra_hir_def/src/nameres/raw.rs
index 9dabb5b6d..59f79f7cd 100644
--- a/crates/ra_hir_def/src/nameres/raw.rs
+++ b/crates/ra_hir_def/src/nameres/raw.rs
@@ -125,8 +125,17 @@ impl_arena_id!(Module);
125 125
126#[derive(Debug, PartialEq, Eq)] 126#[derive(Debug, PartialEq, Eq)]
127pub(super) enum ModuleData { 127pub(super) enum ModuleData {
128 Declaration { name: Name, ast_id: FileAstId<ast::Module> }, 128 Declaration {
129 Definition { name: Name, ast_id: FileAstId<ast::Module>, items: Vec<RawItem> }, 129 name: Name,
130 visibility: Visibility,
131 ast_id: FileAstId<ast::Module>,
132 },
133 Definition {
134 name: Name,
135 visibility: Visibility,
136 ast_id: FileAstId<ast::Module>,
137 items: Vec<RawItem>,
138 },
130} 139}
131 140
132#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 141#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
@@ -283,10 +292,12 @@ impl RawItemsCollector {
283 None => return, 292 None => return,
284 }; 293 };
285 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);
286 296
287 let ast_id = self.source_ast_id_map.ast_id(&module); 297 let ast_id = self.source_ast_id_map.ast_id(&module);
288 if module.has_semi() { 298 if module.has_semi() {
289 let item = self.raw_items.modules.alloc(ModuleData::Declaration { name, ast_id }); 299 let item =
300 self.raw_items.modules.alloc(ModuleData::Declaration { name, visibility, ast_id });
290 self.push_item(current_module, attrs, RawItemKind::Module(item)); 301 self.push_item(current_module, attrs, RawItemKind::Module(item));
291 return; 302 return;
292 } 303 }
@@ -294,6 +305,7 @@ impl RawItemsCollector {
294 if let Some(item_list) = module.item_list() { 305 if let Some(item_list) = module.item_list() {
295 let item = self.raw_items.modules.alloc(ModuleData::Definition { 306 let item = self.raw_items.modules.alloc(ModuleData::Definition {
296 name, 307 name,
308 visibility,
297 ast_id, 309 ast_id,
298 items: Vec::new(), 310 items: Vec::new(),
299 }); 311 });