From 40f91341595508833d39eb6d97e4ec2ac7f685cb Mon Sep 17 00:00:00 2001 From: uHOOCCOOHu Date: Mon, 9 Sep 2019 20:54:02 +0800 Subject: Make macro scope a real name scope Fix some details about module scoping --- crates/ra_hir/src/nameres/tests.rs | 46 ++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 22 deletions(-) (limited to 'crates/ra_hir/src/nameres/tests.rs') diff --git a/crates/ra_hir/src/nameres/tests.rs b/crates/ra_hir/src/nameres/tests.rs index 4ff897ca5..bc4b47b70 100644 --- a/crates/ra_hir/src/nameres/tests.rs +++ b/crates/ra_hir/src/nameres/tests.rs @@ -12,8 +12,7 @@ use test_utils::covers; use crate::{ mock::{CrateGraphFixture, MockDatabase}, - nameres::Resolution, - Crate, Either, + Crate, }; use super::*; @@ -37,35 +36,38 @@ fn render_crate_def_map(map: &CrateDefMap) -> String { *buf += path; *buf += "\n"; - let items = map.modules[module].scope.items.iter().map(|(name, it)| (name, Either::A(it))); - let macros = map.modules[module].scope.macros.iter().map(|(name, m)| (name, Either::B(m))); - let mut entries = items.chain(macros).collect::>(); - + let mut entries = map.modules[module] + .scope + .items + .iter() + .map(|(name, res)| (name, res.def)) + .collect::>(); entries.sort_by_key(|(name, _)| *name); + for (name, res) in entries { - match res { - Either::A(it) => { - *buf += &format!("{}: {}\n", name, dump_resolution(it)); - } - Either::B(_) => { - *buf += &format!("{}: m\n", name); - } + *buf += &format!("{}:", name); + + if res.types.is_some() { + *buf += " t"; + } + if res.values.is_some() { + *buf += " v"; + } + if res.macros.is_some() { + *buf += " m"; + } + if res.is_none() { + *buf += " _"; } + + *buf += "\n"; } + for (name, child) in map.modules[module].children.iter() { let path = path.to_string() + &format!("::{}", name); go(buf, map, &path, *child); } } - - fn dump_resolution(resolution: &Resolution) -> &'static str { - match (resolution.def.types.is_some(), resolution.def.values.is_some()) { - (true, true) => "t v", - (true, false) => "t", - (false, true) => "v", - (false, false) => "_", - } - } } fn def_map(fixtute: &str) -> String { -- cgit v1.2.3