aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/generics.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2020-06-17 11:24:05 +0100
committerJonas Schievink <[email protected]>2020-06-24 15:53:16 +0100
commitc12f7b610be49901190cde994dfe4f594150dbf9 (patch)
treedcbcf0f72f8fb23601f415fb390561dff94ffb9a /crates/ra_hir_def/src/generics.rs
parent864b650f92388f4e82d130713b2de9afe637102f (diff)
Lower generics
Diffstat (limited to 'crates/ra_hir_def/src/generics.rs')
-rw-r--r--crates/ra_hir_def/src/generics.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/crates/ra_hir_def/src/generics.rs b/crates/ra_hir_def/src/generics.rs
index 09a5241f7..ed4f60c66 100644
--- a/crates/ra_hir_def/src/generics.rs
+++ b/crates/ra_hir_def/src/generics.rs
@@ -42,7 +42,7 @@ pub enum TypeParamProvenance {
42} 42}
43 43
44/// Data about the generic parameters of a function, struct, impl, etc. 44/// Data about the generic parameters of a function, struct, impl, etc.
45#[derive(Clone, PartialEq, Eq, Debug)] 45#[derive(Clone, PartialEq, Eq, Debug, Default)]
46pub struct GenericParams { 46pub struct GenericParams {
47 pub types: Arena<TypeParamData>, 47 pub types: Arena<TypeParamData>,
48 // lifetimes: Arena<LocalLifetimeParamId, LifetimeParamData>, 48 // lifetimes: Arena<LocalLifetimeParamId, LifetimeParamData>,
@@ -156,7 +156,12 @@ impl GenericParams {
156 (generics, InFile::new(file_id, sm)) 156 (generics, InFile::new(file_id, sm))
157 } 157 }
158 158
159 fn fill(&mut self, lower_ctx: &LowerCtx, sm: &mut SourceMap, node: &dyn TypeParamsOwner) { 159 pub(crate) fn fill(
160 &mut self,
161 lower_ctx: &LowerCtx,
162 sm: &mut SourceMap,
163 node: &dyn TypeParamsOwner,
164 ) {
160 if let Some(params) = node.type_param_list() { 165 if let Some(params) = node.type_param_list() {
161 self.fill_params(lower_ctx, sm, params) 166 self.fill_params(lower_ctx, sm, params)
162 } 167 }
@@ -165,7 +170,7 @@ impl GenericParams {
165 } 170 }
166 } 171 }
167 172
168 fn fill_bounds( 173 pub(crate) fn fill_bounds(
169 &mut self, 174 &mut self,
170 lower_ctx: &LowerCtx, 175 lower_ctx: &LowerCtx,
171 node: &dyn ast::TypeBoundsOwner, 176 node: &dyn ast::TypeBoundsOwner,
@@ -229,7 +234,7 @@ impl GenericParams {
229 .push(WherePredicate { target: WherePredicateTarget::TypeRef(type_ref), bound }); 234 .push(WherePredicate { target: WherePredicateTarget::TypeRef(type_ref), bound });
230 } 235 }
231 236
232 fn fill_implicit_impl_trait_args(&mut self, type_ref: &TypeRef) { 237 pub(crate) fn fill_implicit_impl_trait_args(&mut self, type_ref: &TypeRef) {
233 type_ref.walk(&mut |type_ref| { 238 type_ref.walk(&mut |type_ref| {
234 if let TypeRef::ImplTrait(bounds) = type_ref { 239 if let TypeRef::ImplTrait(bounds) = type_ref {
235 let param = TypeParamData { 240 let param = TypeParamData {