aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/visibility.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-12-24 22:45:14 +0000
committerFlorian Diebold <[email protected]>2019-12-26 15:23:40 +0000
commit79c90b5641d2934864c587380e4f050ab63ac029 (patch)
treeb87f4cdb1f6a2b477e111bf611db797f8360e6de /crates/ra_hir_def/src/visibility.rs
parentc31dae2aca8f0847df23b6976c3475cea57ada27 (diff)
Collect visibility of items during nameres
Diffstat (limited to 'crates/ra_hir_def/src/visibility.rs')
-rw-r--r--crates/ra_hir_def/src/visibility.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/crates/ra_hir_def/src/visibility.rs b/crates/ra_hir_def/src/visibility.rs
index ef7732749..8cac52630 100644
--- a/crates/ra_hir_def/src/visibility.rs
+++ b/crates/ra_hir_def/src/visibility.rs
@@ -4,7 +4,7 @@ use std::sync::Arc;
4 4
5use either::Either; 5use either::Either;
6 6
7use hir_expand::InFile; 7use hir_expand::{hygiene::Hygiene, InFile};
8use ra_syntax::ast::{self, VisibilityOwner}; 8use ra_syntax::ast::{self, VisibilityOwner};
9 9
10use crate::{ 10use crate::{
@@ -73,14 +73,20 @@ impl Visibility {
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>>) -> Visibility {
76 let file_id = node.file_id; 76 Self::from_ast_with_hygiene(node.value, &Hygiene::new(db, node.file_id))
77 let node = match node.value { 77 }
78
79 pub(crate) fn from_ast_with_hygiene(
80 node: Option<ast::Visibility>,
81 hygiene: &Hygiene,
82 ) -> Visibility {
83 let node = match node {
78 None => return Visibility::private(), 84 None => return Visibility::private(),
79 Some(node) => node, 85 Some(node) => node,
80 }; 86 };
81 match node.kind() { 87 match node.kind() {
82 ast::VisibilityKind::In(path) => { 88 ast::VisibilityKind::In(path) => {
83 let path = ModPath::from_src(path, &hir_expand::hygiene::Hygiene::new(db, file_id)); 89 let path = ModPath::from_src(path, hygiene);
84 let path = match path { 90 let path = match path {
85 None => return Visibility::private(), 91 None => return Visibility::private(),
86 Some(path) => path, 92 Some(path) => path,