aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/generics.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-24 22:31:32 +0000
committerAleksey Kladov <[email protected]>2019-01-24 22:31:32 +0000
commit0f2f3a21e7e624f920d182869896347af309e909 (patch)
tree8c16d0a479021c2d558a865df94eb01316a208b2 /crates/ra_hir/src/generics.rs
parent00ba70a0957b8af2813940787238a733298dfa5f (diff)
Migrate trait & type to new ids
Diffstat (limited to 'crates/ra_hir/src/generics.rs')
-rw-r--r--crates/ra_hir/src/generics.rs23
1 files changed, 7 insertions, 16 deletions
diff --git a/crates/ra_hir/src/generics.rs b/crates/ra_hir/src/generics.rs
index a8cacbb4a..64c20a462 100644
--- a/crates/ra_hir/src/generics.rs
+++ b/crates/ra_hir/src/generics.rs
@@ -5,9 +5,9 @@
5 5
6use std::sync::Arc; 6use std::sync::Arc;
7 7
8use ra_syntax::ast::{self, AstNode, NameOwner, TypeParamsOwner}; 8use ra_syntax::ast::{self, NameOwner, TypeParamsOwner};
9 9
10use crate::{db::HirDatabase, DefId, Name, AsName, Function, Struct, Enum}; 10use crate::{db::HirDatabase, Name, AsName, Function, Struct, Enum, Trait, Type};
11 11
12/// Data about a generic parameter (to a function, struct, impl, ...). 12/// Data about a generic parameter (to a function, struct, impl, ...).
13#[derive(Clone, PartialEq, Eq, Debug)] 13#[derive(Clone, PartialEq, Eq, Debug)]
@@ -27,15 +27,10 @@ pub enum GenericDef {
27 Function(Function), 27 Function(Function),
28 Struct(Struct), 28 Struct(Struct),
29 Enum(Enum), 29 Enum(Enum),
30 Def(DefId), 30 Trait(Trait),
31} 31 Type(Type),
32impl_froms!(GenericDef: Function, Struct, Enum);
33
34impl From<DefId> for GenericDef {
35 fn from(def_id: DefId) -> GenericDef {
36 GenericDef::Def(def_id)
37 }
38} 32}
33impl_froms!(GenericDef: Function, Struct, Enum, Trait, Type);
39 34
40impl GenericParams { 35impl GenericParams {
41 pub(crate) fn generic_params_query( 36 pub(crate) fn generic_params_query(
@@ -47,12 +42,8 @@ impl GenericParams {
47 GenericDef::Function(it) => generics.fill(&*it.source(db).1), 42 GenericDef::Function(it) => generics.fill(&*it.source(db).1),
48 GenericDef::Struct(it) => generics.fill(&*it.source(db).1), 43 GenericDef::Struct(it) => generics.fill(&*it.source(db).1),
49 GenericDef::Enum(it) => generics.fill(&*it.source(db).1), 44 GenericDef::Enum(it) => generics.fill(&*it.source(db).1),
50 GenericDef::Def(def_id) => { 45 GenericDef::Trait(it) => generics.fill(&*it.source(db).1),
51 let (_file_id, node) = def_id.source(db); 46 GenericDef::Type(it) => generics.fill(&*it.source(db).1),
52 if let Some(type_param_list) = node.children().find_map(ast::TypeParamList::cast) {
53 generics.fill_params(type_param_list)
54 }
55 }
56 } 47 }
57 48
58 Arc::new(generics) 49 Arc::new(generics)