diff options
Diffstat (limited to 'crates/ra_hir/src/generics.rs')
-rw-r--r-- | crates/ra_hir/src/generics.rs | 18 |
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; | |||
8 | use ra_syntax::ast::{self, NameOwner, TypeParamsOwner, TypeBoundsOwner, DefaultTypeParamOwner}; | 8 | use ra_syntax::ast::{self, NameOwner, TypeParamsOwner, TypeBoundsOwner, DefaultTypeParamOwner}; |
9 | 9 | ||
10 | use crate::{ | 10 | use 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) |