From 0f2f3a21e7e624f920d182869896347af309e909 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 25 Jan 2019 01:31:32 +0300 Subject: Migrate trait & type to new ids --- crates/ra_hir/src/code_model_api.rs | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) (limited to 'crates/ra_hir/src/code_model_api.rs') diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index d82dda79a..e2979617d 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -13,10 +13,9 @@ use crate::{ ty::{InferenceResult, VariantDef}, adt::VariantData, generics::GenericParams, - code_model_impl::def_id_to_ast, docs::{Documentation, Docs, docs_from_ast}, module_tree::ModuleId, - ids::{FunctionId, StructId, EnumId, EnumVariantId, AstItemDef, ConstId, StaticId}, + ids::{FunctionId, StructId, EnumId, EnumVariantId, AstItemDef, ConstId, StaticId, TraitId, TypeId}, }; /// hir::Crate describes a single crate. It's the main interface with which @@ -47,8 +46,6 @@ impl Crate { #[derive(Debug)] pub enum Def { - Trait(Trait), - Type(Type), Item, } @@ -68,6 +65,8 @@ pub enum ModuleDef { EnumVariant(EnumVariant), Const(Const), Static(Static), + Trait(Trait), + Type(Type), // Can't be directly declared, but can be imported. Def(DefId), } @@ -78,7 +77,9 @@ impl_froms!( Enum, EnumVariant, Const, - Static + Static, + Trait, + Type ); impl From for ModuleDef { @@ -428,22 +429,18 @@ impl Docs for Static { } } -#[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct Trait { - pub(crate) def_id: DefId, + pub(crate) id: TraitId, } impl Trait { - pub(crate) fn new(def_id: DefId) -> Trait { - Trait { def_id } - } - pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { - def_id_to_ast(db, self.def_id) + self.id.source(db) } pub fn generic_params(&self, db: &impl HirDatabase) -> Arc { - db.generic_params(self.def_id.into()) + db.generic_params((*self).into()) } } @@ -453,22 +450,18 @@ impl Docs for Trait { } } -#[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct Type { - pub(crate) def_id: DefId, + pub(crate) id: TypeId, } impl Type { - pub(crate) fn new(def_id: DefId) -> Type { - Type { def_id } - } - pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { - def_id_to_ast(db, self.def_id) + self.id.source(db) } pub fn generic_params(&self, db: &impl HirDatabase) -> Arc { - db.generic_params(self.def_id.into()) + db.generic_params((*self).into()) } } -- cgit v1.2.3