aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/generics.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/generics.rs')
-rw-r--r--crates/ra_hir/src/generics.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/crates/ra_hir/src/generics.rs b/crates/ra_hir/src/generics.rs
index b6c5e18d3..462b136b7 100644
--- a/crates/ra_hir/src/generics.rs
+++ b/crates/ra_hir/src/generics.rs
@@ -8,8 +8,10 @@ use std::sync::Arc;
8use ra_syntax::ast::{self, NameOwner, TypeParamsOwner, TypeBoundsOwner, DefaultTypeParamOwner}; 8use ra_syntax::ast::{self, NameOwner, TypeParamsOwner, TypeBoundsOwner, DefaultTypeParamOwner};
9 9
10use crate::{ 10use crate::{
11 HasSource,
12 Name, AsName, Function, Struct, Union, Enum, Trait, TypeAlias, ImplBlock, Container, AdtDef,
11 db::{HirDatabase, DefDatabase, AstDatabase}, 13 db::{HirDatabase, DefDatabase, AstDatabase},
12 Name, AsName, Function, Struct, Union, Enum, Trait, TypeAlias, ImplBlock, Container, path::Path, type_ref::TypeRef, AdtDef 14 path::Path, type_ref::TypeRef,
13}; 15};
14 16
15/// Data about a generic parameter (to a function, struct, impl, ...). 17/// Data about a generic parameter (to a function, struct, impl, ...).
@@ -68,10 +70,10 @@ impl GenericParams {
68 generics.parent_params = parent.map(|p| db.generic_params(p)); 70 generics.parent_params = parent.map(|p| db.generic_params(p));
69 let start = generics.parent_params.as_ref().map(|p| p.params.len()).unwrap_or(0) as u32; 71 let start = generics.parent_params.as_ref().map(|p| p.params.len()).unwrap_or(0) as u32;
70 match def { 72 match def {
71 GenericDef::Function(it) => generics.fill(&*it.source(db).1, start), 73 GenericDef::Function(it) => generics.fill(&*it.source(db).ast, start),
72 GenericDef::Struct(it) => generics.fill(&*it.source(db).1, start), 74 GenericDef::Struct(it) => generics.fill(&*it.source(db).ast, start),
73 GenericDef::Union(it) => generics.fill(&*it.source(db).1, start), 75 GenericDef::Union(it) => generics.fill(&*it.source(db).ast, start),
74 GenericDef::Enum(it) => generics.fill(&*it.source(db).1, start), 76 GenericDef::Enum(it) => generics.fill(&*it.source(db).ast, start),
75 GenericDef::Trait(it) => { 77 GenericDef::Trait(it) => {
76 // traits get the Self type as an implicit first type parameter 78 // traits get the Self type as an implicit first type parameter
77 generics.params.push(GenericParam { 79 generics.params.push(GenericParam {
@@ -79,10 +81,10 @@ impl GenericParams {
79 name: Name::self_type(), 81 name: Name::self_type(),
80 default: None, 82 default: None,
81 }); 83 });
82 generics.fill(&*it.source(db).1, start + 1); 84 generics.fill(&*it.source(db).ast, start + 1);
83 } 85 }
84 GenericDef::TypeAlias(it) => generics.fill(&*it.source(db).1, start), 86 GenericDef::TypeAlias(it) => generics.fill(&*it.source(db).ast, start),
85 GenericDef::ImplBlock(it) => generics.fill(&*it.source(db).1, start), 87 GenericDef::ImplBlock(it) => generics.fill(&*it.source(db).ast, start),
86 } 88 }
87 89
88 Arc::new(generics) 90 Arc::new(generics)