diff options
author | Jonas Schievink <[email protected]> | 2020-06-17 11:24:05 +0100 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2020-06-24 15:53:16 +0100 |
commit | c12f7b610be49901190cde994dfe4f594150dbf9 (patch) | |
tree | dcbcf0f72f8fb23601f415fb390561dff94ffb9a /crates/ra_hir_def/src/generics.rs | |
parent | 864b650f92388f4e82d130713b2de9afe637102f (diff) |
Lower generics
Diffstat (limited to 'crates/ra_hir_def/src/generics.rs')
-rw-r--r-- | crates/ra_hir_def/src/generics.rs | 13 |
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)] |
46 | pub struct GenericParams { | 46 | pub 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 { |