From 32f5276465266522ebc01b8417feeba99bf00f6f Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Fri, 6 Mar 2020 01:02:14 +0200 Subject: Show mod path in hover tooltip --- crates/ra_hir/src/code_model.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 2944926e6..dca5f27b2 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -480,6 +480,14 @@ impl Adt { pub fn krate(self, db: &impl HirDatabase) -> Option { Some(self.module(db).krate()) } + + pub fn name(&self, db: &impl HirDatabase) -> Name { + match self { + Adt::Struct(s) => s.name(db), + Adt::Union(u) => u.name(db), + Adt::Enum(e) => e.name(db), + } + } } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] @@ -507,6 +515,14 @@ impl VariantDef { } } + pub fn name(&self, db: &impl HirDatabase) -> Name { + match self { + VariantDef::Struct(s) => s.name(db), + VariantDef::Union(u) => u.name(db), + VariantDef::EnumVariant(e) => e.name(db), + } + } + pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc { match self { VariantDef::Struct(it) => it.variant_data(db), @@ -534,6 +550,14 @@ impl DefWithBody { DefWithBody::Static(s) => s.module(db), } } + + pub fn name(self, db: &impl HirDatabase) -> Option { + match self { + DefWithBody::Function(f) => Some(f.name(db)), + DefWithBody::Static(s) => s.name(db), + DefWithBody::Const(c) => c.name(db), + } + } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -- cgit v1.2.3 From e1aa96f2c5b6cdbf0fb7f49b47209055b7a937f2 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Mon, 9 Mar 2020 11:26:46 +0200 Subject: Less abstract CrateData api --- crates/ra_hir/src/code_model.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index dca5f27b2..9685d6982 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -55,7 +55,9 @@ pub struct CrateDependency { impl Crate { pub fn dependencies(self, db: &impl DefDatabase) -> Vec { db.crate_graph() - .dependencies(self.id) + .crate_data(&self.id) + .dependencies + .iter() .map(|dep| { let krate = Crate { id: dep.crate_id() }; let name = dep.as_name(); @@ -69,7 +71,9 @@ impl Crate { let crate_graph = db.crate_graph(); crate_graph .iter() - .filter(|&krate| crate_graph.dependencies(krate).any(|it| it.crate_id == self.id)) + .filter(|&krate| { + crate_graph.crate_data(&krate).dependencies.iter().any(|it| it.crate_id == self.id) + }) .map(|id| Crate { id }) .collect() } @@ -80,12 +84,11 @@ impl Crate { } pub fn root_file(self, db: &impl DefDatabase) -> FileId { - db.crate_graph().crate_root(self.id) + db.crate_graph().crate_data(&self.id).root_file_id } pub fn edition(self, db: &impl DefDatabase) -> Edition { - let crate_graph = db.crate_graph(); - crate_graph.edition(self.id) + db.crate_graph().crate_data(&self.id).edition } pub fn all(db: &impl DefDatabase) -> Vec { -- cgit v1.2.3