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.rs14
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<'_>,