Don't duplicate ContainerId type
This commit is contained in:
parent
64c21ed195
commit
ee95a35664
@ -12,8 +12,8 @@ use hir_def::{
|
||||
builtin_type::BuiltinType,
|
||||
traits::TraitData,
|
||||
type_ref::{Mutability, TypeRef},
|
||||
AssocItemId, CrateModuleId, FunctionContainerId, HasModule, ImplId, LocalEnumVariantId,
|
||||
LocalStructFieldId, Lookup, ModuleId, TypeAliasContainerId, UnionId,
|
||||
AssocItemId, ContainerId, CrateModuleId, HasModule, ImplId, LocalEnumVariantId,
|
||||
LocalStructFieldId, Lookup, ModuleId, UnionId,
|
||||
};
|
||||
use hir_expand::{
|
||||
diagnostics::DiagnosticSink,
|
||||
@ -697,9 +697,9 @@ impl Function {
|
||||
|
||||
pub fn container(self, db: &impl DefDatabase) -> Option<Container> {
|
||||
match self.id.lookup(db).container {
|
||||
FunctionContainerId::TraitId(it) => Some(Container::Trait(it.into())),
|
||||
FunctionContainerId::ImplId(it) => Some(Container::ImplBlock(it.into())),
|
||||
FunctionContainerId::ModuleId(_) => None,
|
||||
ContainerId::TraitId(it) => Some(Container::Trait(it.into())),
|
||||
ContainerId::ImplId(it) => Some(Container::ImplBlock(it.into())),
|
||||
ContainerId::ModuleId(_) => None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -979,9 +979,9 @@ impl TypeAlias {
|
||||
|
||||
pub fn container(self, db: &impl DefDatabase) -> Option<Container> {
|
||||
match self.id.lookup(db).container {
|
||||
TypeAliasContainerId::TraitId(it) => Some(Container::Trait(it.into())),
|
||||
TypeAliasContainerId::ImplId(it) => Some(Container::ImplBlock(it.into())),
|
||||
TypeAliasContainerId::ModuleId(_) => None,
|
||||
ContainerId::TraitId(it) => Some(Container::Trait(it.into())),
|
||||
ContainerId::ImplId(it) => Some(Container::ImplBlock(it.into())),
|
||||
ContainerId::ModuleId(_) => None,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,8 +9,8 @@ use hir_expand::AstId;
|
||||
use ra_syntax::ast;
|
||||
|
||||
use crate::{
|
||||
db::DefDatabase2, type_ref::TypeRef, AssocItemId, AstItemDef, ConstId, FunctionContainerId,
|
||||
FunctionLoc, ImplId, Intern, LocationCtx, TypeAliasContainerId, TypeAliasLoc,
|
||||
db::DefDatabase2, type_ref::TypeRef, AssocItemId, AstItemDef, ConstId, ContainerId,
|
||||
FunctionLoc, ImplId, Intern, LocationCtx, TypeAliasLoc,
|
||||
};
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
@ -37,7 +37,7 @@ impl ImplData {
|
||||
.map(|item_node| match item_node {
|
||||
ast::ImplItem::FnDef(it) => {
|
||||
let def = FunctionLoc {
|
||||
container: FunctionContainerId::ImplId(id),
|
||||
container: ContainerId::ImplId(id),
|
||||
ast_id: AstId::new(src.file_id, items.ast_id(&it)),
|
||||
}
|
||||
.intern(db);
|
||||
@ -48,7 +48,7 @@ impl ImplData {
|
||||
}
|
||||
ast::ImplItem::TypeAliasDef(it) => {
|
||||
let def = TypeAliasLoc {
|
||||
container: TypeAliasContainerId::ImplId(id),
|
||||
container: ContainerId::ImplId(id),
|
||||
ast_id: AstId::new(src.file_id, items.ast_id(&it)),
|
||||
}
|
||||
.intern(db);
|
||||
|
@ -201,7 +201,7 @@ impl_intern_key!(FunctionId);
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct FunctionLoc {
|
||||
pub container: FunctionContainerId,
|
||||
pub container: ContainerId,
|
||||
pub ast_id: AstId<ast::FnDef>,
|
||||
}
|
||||
|
||||
@ -219,13 +219,6 @@ impl Lookup for FunctionId {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum FunctionContainerId {
|
||||
ModuleId(ModuleId),
|
||||
ImplId(ImplId),
|
||||
TraitId(TraitId),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct StructOrUnionId(salsa::InternId);
|
||||
impl_intern_key!(StructOrUnionId);
|
||||
@ -335,7 +328,7 @@ impl_intern_key!(TypeAliasId);
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct TypeAliasLoc {
|
||||
pub container: TypeAliasContainerId,
|
||||
pub container: ContainerId,
|
||||
pub ast_id: AstId<ast::TypeAliasDef>,
|
||||
}
|
||||
|
||||
@ -353,13 +346,6 @@ impl Lookup for TypeAliasId {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum TypeAliasContainerId {
|
||||
ModuleId(ModuleId),
|
||||
ImplId(ImplId),
|
||||
TraitId(TraitId),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct ImplId(salsa::InternId);
|
||||
impl_intern_key!(ImplId);
|
||||
@ -391,6 +377,13 @@ macro_rules! impl_froms {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum ContainerId {
|
||||
ModuleId(ModuleId),
|
||||
ImplId(ImplId),
|
||||
TraitId(TraitId),
|
||||
}
|
||||
|
||||
/// A Data Type
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub enum AdtId {
|
||||
@ -488,9 +481,9 @@ pub trait HasModule {
|
||||
impl HasModule for FunctionLoc {
|
||||
fn module(&self, db: &impl db::DefDatabase2) -> ModuleId {
|
||||
match self.container {
|
||||
FunctionContainerId::ModuleId(it) => it,
|
||||
FunctionContainerId::ImplId(it) => it.module(db),
|
||||
FunctionContainerId::TraitId(it) => it.module(db),
|
||||
ContainerId::ModuleId(it) => it,
|
||||
ContainerId::ImplId(it) => it.module(db),
|
||||
ContainerId::TraitId(it) => it.module(db),
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -498,9 +491,9 @@ impl HasModule for FunctionLoc {
|
||||
impl HasModule for TypeAliasLoc {
|
||||
fn module(&self, db: &impl db::DefDatabase2) -> ModuleId {
|
||||
match self.container {
|
||||
TypeAliasContainerId::ModuleId(it) => it,
|
||||
TypeAliasContainerId::ImplId(it) => it.module(db),
|
||||
TypeAliasContainerId::TraitId(it) => it.module(db),
|
||||
ContainerId::ModuleId(it) => it,
|
||||
ContainerId::ImplId(it) => it.module(db),
|
||||
ContainerId::TraitId(it) => it.module(db),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,9 +19,9 @@ use crate::{
|
||||
per_ns::PerNs, raw, CrateDefMap, ModuleData, Resolution, ResolveMode,
|
||||
},
|
||||
path::{Path, PathKind},
|
||||
AdtId, AstId, AstItemDef, ConstId, CrateModuleId, EnumId, EnumVariantId, FunctionContainerId,
|
||||
AdtId, AstId, AstItemDef, ConstId, ContainerId, CrateModuleId, EnumId, EnumVariantId,
|
||||
FunctionLoc, ImplId, Intern, LocationCtx, ModuleDefId, ModuleId, StaticId, StructId,
|
||||
StructOrUnionId, TraitId, TypeAliasContainerId, TypeAliasLoc, UnionId,
|
||||
StructOrUnionId, TraitId, TypeAliasLoc, UnionId,
|
||||
};
|
||||
|
||||
pub(super) fn collect_defs(db: &impl DefDatabase2, mut def_map: CrateDefMap) -> CrateDefMap {
|
||||
@ -674,7 +674,7 @@ where
|
||||
let def: PerNs = match def.kind {
|
||||
raw::DefKind::Function(ast_id) => {
|
||||
let def = FunctionLoc {
|
||||
container: FunctionContainerId::ModuleId(module),
|
||||
container: ContainerId::ModuleId(module),
|
||||
ast_id: AstId::new(self.file_id, ast_id),
|
||||
}
|
||||
.intern(self.def_collector.db);
|
||||
@ -699,7 +699,7 @@ where
|
||||
raw::DefKind::Trait(ast_id) => PerNs::types(TraitId::from_ast_id(ctx, ast_id).into()),
|
||||
raw::DefKind::TypeAlias(ast_id) => {
|
||||
let def = TypeAliasLoc {
|
||||
container: TypeAliasContainerId::ModuleId(module),
|
||||
container: ContainerId::ModuleId(module),
|
||||
ast_id: AstId::new(self.file_id, ast_id),
|
||||
}
|
||||
.intern(self.def_collector.db);
|
||||
|
@ -11,8 +11,8 @@ use ra_syntax::ast::{self, NameOwner};
|
||||
use rustc_hash::FxHashMap;
|
||||
|
||||
use crate::{
|
||||
db::DefDatabase2, AssocItemId, AstItemDef, ConstId, FunctionContainerId, FunctionLoc, Intern,
|
||||
LocationCtx, ModuleDefId, ModuleId, TraitId, TypeAliasContainerId, TypeAliasLoc,
|
||||
db::DefDatabase2, AssocItemId, AstItemDef, ConstId, ContainerId, FunctionLoc, Intern,
|
||||
LocationCtx, ModuleDefId, ModuleId, TraitId, TypeAliasLoc,
|
||||
};
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
@ -35,14 +35,14 @@ impl TraitData {
|
||||
.impl_items()
|
||||
.map(|item_node| match item_node {
|
||||
ast::ImplItem::FnDef(it) => FunctionLoc {
|
||||
container: FunctionContainerId::TraitId(tr),
|
||||
container: ContainerId::TraitId(tr),
|
||||
ast_id: AstId::new(src.file_id, ast_id_map.ast_id(&it)),
|
||||
}
|
||||
.intern(db)
|
||||
.into(),
|
||||
ast::ImplItem::ConstDef(it) => ConstId::from_ast(ctx, &it).into(),
|
||||
ast::ImplItem::TypeAliasDef(it) => TypeAliasLoc {
|
||||
container: TypeAliasContainerId::TraitId(tr),
|
||||
container: ContainerId::TraitId(tr),
|
||||
ast_id: AstId::new(src.file_id, ast_id_map.ast_id(&it)),
|
||||
}
|
||||
.intern(db)
|
||||
|
Loading…
x
Reference in New Issue
Block a user