mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 21:43:37 +00:00
Support for nested statics, consts and type aliases
This commit is contained in:
parent
ac5a3f611b
commit
fe1b160dcf
3 changed files with 18 additions and 5 deletions
|
@ -25,7 +25,8 @@ use crate::{
|
||||||
path::GenericArgs,
|
path::GenericArgs,
|
||||||
path::Path,
|
path::Path,
|
||||||
type_ref::{Mutability, TypeRef},
|
type_ref::{Mutability, TypeRef},
|
||||||
ContainerId, DefWithBodyId, EnumLoc, FunctionLoc, Intern, ModuleDefId, StructLoc, UnionLoc,
|
ConstLoc, ContainerId, DefWithBodyId, EnumLoc, FunctionLoc, Intern, ModuleDefId, StaticLoc,
|
||||||
|
StructLoc, TypeAliasLoc, UnionLoc,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub(super) fn lower(
|
pub(super) fn lower(
|
||||||
|
@ -497,6 +498,18 @@ where
|
||||||
let ast_id = self.expander.ast_id(&def);
|
let ast_id = self.expander.ast_id(&def);
|
||||||
FunctionLoc { container: container.into(), ast_id }.intern(self.db).into()
|
FunctionLoc { container: container.into(), ast_id }.intern(self.db).into()
|
||||||
}
|
}
|
||||||
|
ast::ModuleItem::TypeAliasDef(def) => {
|
||||||
|
let ast_id = self.expander.ast_id(&def);
|
||||||
|
TypeAliasLoc { container: container.into(), ast_id }.intern(self.db).into()
|
||||||
|
}
|
||||||
|
ast::ModuleItem::ConstDef(def) => {
|
||||||
|
let ast_id = self.expander.ast_id(&def);
|
||||||
|
ConstLoc { container: container.into(), ast_id }.intern(self.db).into()
|
||||||
|
}
|
||||||
|
ast::ModuleItem::StaticDef(def) => {
|
||||||
|
let ast_id = self.expander.ast_id(&def);
|
||||||
|
StaticLoc { container, ast_id }.intern(self.db).into()
|
||||||
|
}
|
||||||
ast::ModuleItem::StructDef(def) => {
|
ast::ModuleItem::StructDef(def) => {
|
||||||
let ast_id = self.expander.ast_id(&def);
|
let ast_id = self.expander.ast_id(&def);
|
||||||
StructLoc { container, ast_id }.intern(self.db).into()
|
StructLoc { container, ast_id }.intern(self.db).into()
|
||||||
|
|
|
@ -211,7 +211,7 @@ impl_intern_key!(StaticId);
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct StaticLoc {
|
pub struct StaticLoc {
|
||||||
pub container: ModuleId,
|
pub container: ContainerId,
|
||||||
pub ast_id: AstId<ast::StaticDef>,
|
pub ast_id: AstId<ast::StaticDef>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -558,7 +558,7 @@ impl HasModule for GenericDefId {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HasModule for StaticLoc {
|
impl HasModule for StaticLoc {
|
||||||
fn module(&self, _db: &impl db::DefDatabase) -> ModuleId {
|
fn module(&self, db: &impl db::DefDatabase) -> ModuleId {
|
||||||
self.container
|
self.container.module(db)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -796,7 +796,7 @@ where
|
||||||
PerNs::values(def.into())
|
PerNs::values(def.into())
|
||||||
}
|
}
|
||||||
raw::DefKind::Static(ast_id) => {
|
raw::DefKind::Static(ast_id) => {
|
||||||
let def = StaticLoc { container: module, ast_id: AstId::new(self.file_id, ast_id) }
|
let def = StaticLoc { container, ast_id: AstId::new(self.file_id, ast_id) }
|
||||||
.intern(self.def_collector.db);
|
.intern(self.def_collector.db);
|
||||||
|
|
||||||
PerNs::values(def.into())
|
PerNs::values(def.into())
|
||||||
|
|
Loading…
Reference in a new issue