diff options
author | Florian Diebold <[email protected]> | 2019-12-24 22:45:14 +0000 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2019-12-26 15:23:40 +0000 |
commit | 79c90b5641d2934864c587380e4f050ab63ac029 (patch) | |
tree | b87f4cdb1f6a2b477e111bf611db797f8360e6de /crates/ra_hir_def/src/visibility.rs | |
parent | c31dae2aca8f0847df23b6976c3475cea57ada27 (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.rs | 14 |
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 | ||
5 | use either::Either; | 5 | use either::Either; |
6 | 6 | ||
7 | use hir_expand::InFile; | 7 | use hir_expand::{hygiene::Hygiene, InFile}; |
8 | use ra_syntax::ast::{self, VisibilityOwner}; | 8 | use ra_syntax::ast::{self, VisibilityOwner}; |
9 | 9 | ||
10 | use crate::{ | 10 | use 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, |