mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 05:45:12 +00:00
Decouple Resolver
This commit is contained in:
parent
612a72fc4e
commit
0102fb4133
10 changed files with 188 additions and 108 deletions
|
@ -3,9 +3,14 @@
|
|||
//! It's unclear if we need this long-term, but it's definitelly useful while we
|
||||
//! are splitting the hir.
|
||||
|
||||
use hir_def::{AdtId, AssocItemId, DefWithBodyId, EnumVariantId, GenericDefId, ModuleDefId};
|
||||
use hir_def::{
|
||||
AdtId, AssocItemId, DefWithBodyId, EnumId, EnumVariantId, GenericDefId, ModuleDefId, StructId,
|
||||
TypeAliasId, UnionId,
|
||||
};
|
||||
|
||||
use crate::{Adt, AssocItem, DefWithBody, EnumVariant, GenericDef, ModuleDef};
|
||||
use crate::{
|
||||
ty::TypableDef, Adt, AssocItem, DefWithBody, EnumVariant, GenericDef, ModuleDef, TypeAlias,
|
||||
};
|
||||
|
||||
macro_rules! from_id {
|
||||
($(($id:path, $ty:path)),*) => {$(
|
||||
|
@ -83,6 +88,16 @@ impl From<DefWithBody> for DefWithBodyId {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<DefWithBodyId> for DefWithBody {
|
||||
fn from(def: DefWithBodyId) -> Self {
|
||||
match def {
|
||||
DefWithBodyId::FunctionId(it) => DefWithBody::Function(it.into()),
|
||||
DefWithBodyId::StaticId(it) => DefWithBody::Static(it.into()),
|
||||
DefWithBodyId::ConstId(it) => DefWithBody::Const(it.into()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<AssocItemId> for AssocItem {
|
||||
fn from(def: AssocItemId) -> Self {
|
||||
match def {
|
||||
|
@ -122,3 +137,49 @@ impl From<GenericDefId> for GenericDef {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<AdtId> for TypableDef {
|
||||
fn from(id: AdtId) -> Self {
|
||||
Adt::from(id).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<StructId> for TypableDef {
|
||||
fn from(id: StructId) -> Self {
|
||||
AdtId::StructId(id).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<UnionId> for TypableDef {
|
||||
fn from(id: UnionId) -> Self {
|
||||
AdtId::UnionId(id).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<EnumId> for TypableDef {
|
||||
fn from(id: EnumId) -> Self {
|
||||
AdtId::EnumId(id).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<EnumVariantId> for TypableDef {
|
||||
fn from(id: EnumVariantId) -> Self {
|
||||
EnumVariant::from(id).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<TypeAliasId> for TypableDef {
|
||||
fn from(id: TypeAliasId) -> Self {
|
||||
TypeAlias::from(id).into()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Adt> for GenericDefId {
|
||||
fn from(id: Adt) -> Self {
|
||||
match id {
|
||||
Adt::Struct(it) => it.id.into(),
|
||||
Adt::Union(it) => it.id.into(),
|
||||
Adt::Enum(it) => it.id.into(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue