mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 04:44:57 +00:00
Add data queries for macros
This commit is contained in:
parent
55ec93a337
commit
c37fe779c6
8 changed files with 102 additions and 19 deletions
|
@ -340,7 +340,7 @@ impl ModuleDef {
|
|||
ModuleDef::Variant(it) => it.name(db),
|
||||
ModuleDef::TypeAlias(it) => it.name(db),
|
||||
ModuleDef::Static(it) => it.name(db),
|
||||
ModuleDef::Macro(it) => it.name(db)?,
|
||||
ModuleDef::Macro(it) => it.name(db),
|
||||
ModuleDef::BuiltinType(it) => it.name(),
|
||||
};
|
||||
Some(name)
|
||||
|
@ -426,8 +426,7 @@ impl HasVisibility for ModuleDef {
|
|||
ModuleDef::Trait(it) => it.visibility(db),
|
||||
ModuleDef::TypeAlias(it) => it.visibility(db),
|
||||
ModuleDef::Variant(it) => it.visibility(db),
|
||||
// FIXME
|
||||
ModuleDef::Macro(_) => Visibility::Public,
|
||||
ModuleDef::Macro(it) => it.visibility(db),
|
||||
ModuleDef::BuiltinType(_) => Visibility::Public,
|
||||
}
|
||||
}
|
||||
|
@ -1766,14 +1765,12 @@ impl Macro {
|
|||
Module { id: self.id.module(db.upcast()) }
|
||||
}
|
||||
|
||||
pub fn name(self, _db: &dyn HirDatabase) -> Option<Name> {
|
||||
// match self.id {
|
||||
// MacroId::Macro2Id(id) => db.macro2_data(id).name.clone(),
|
||||
// MacroId::MacroRulesId(id) => db.macro_rules_data(id).name.clone(),
|
||||
// MacroId::ProcMacroId(id) => db.proc_macro_data(id).name.clone(),
|
||||
// }
|
||||
// FIXME
|
||||
None
|
||||
pub fn name(self, db: &dyn HirDatabase) -> Name {
|
||||
match self.id {
|
||||
MacroId::Macro2Id(id) => db.macro2_data(id).name.clone(),
|
||||
MacroId::MacroRulesId(id) => db.macro_rules_data(id).name.clone(),
|
||||
MacroId::ProcMacroId(id) => db.proc_macro_data(id).name.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn kind(&self, db: &dyn HirDatabase) -> MacroKind {
|
||||
|
@ -1826,6 +1823,20 @@ impl Macro {
|
|||
}
|
||||
}
|
||||
|
||||
impl HasVisibility for Macro {
|
||||
fn visibility(&self, db: &dyn HirDatabase) -> Visibility {
|
||||
match self.id {
|
||||
MacroId::Macro2Id(id) => {
|
||||
let data = db.macro2_data(id);
|
||||
let visibility = &data.visibility;
|
||||
visibility.resolve(db.upcast(), &self.id.resolver(db.upcast()))
|
||||
}
|
||||
MacroId::MacroRulesId(_) => Visibility::Public,
|
||||
MacroId::ProcMacroId(_) => Visibility::Public,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)]
|
||||
pub enum ItemInNs {
|
||||
Types(ModuleDef),
|
||||
|
@ -3374,3 +3385,9 @@ impl HasCrate for Type {
|
|||
self.krate.into()
|
||||
}
|
||||
}
|
||||
|
||||
impl HasCrate for Macro {
|
||||
fn krate(&self, db: &dyn HirDatabase) -> Crate {
|
||||
self.module(db).krate()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue