Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/generics.rs')
| -rw-r--r-- | crates/hir-def/src/generics.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/crates/hir-def/src/generics.rs b/crates/hir-def/src/generics.rs index 8082019379..ed5038c5ae 100644 --- a/crates/hir-def/src/generics.rs +++ b/crates/hir-def/src/generics.rs @@ -10,6 +10,7 @@ use hir_expand::{ name::{AsName, Name}, ExpandResult, }; +use intern::sym; use la_arena::{Arena, RawIdx}; use stdx::{ impl_from, @@ -446,12 +447,23 @@ impl GenericParams { #[derive(Clone, Default)] pub(crate) struct GenericParamsCollector { - pub(crate) type_or_consts: Arena<TypeOrConstParamData>, + type_or_consts: Arena<TypeOrConstParamData>, lifetimes: Arena<LifetimeParamData>, where_predicates: Vec<WherePredicate>, } impl GenericParamsCollector { + pub(crate) fn fill_self_param(&mut self) { + self.type_or_consts.alloc( + TypeParamData { + name: Some(Name::new_symbol_root(sym::Self_.clone())), + default: None, + provenance: TypeParamProvenance::TraitSelf, + } + .into(), + ); + } + pub(crate) fn fill( &mut self, lower_ctx: &mut LowerCtx<'_>, |