From 00f3b6c59ae3df9a7bfb1cd8b694d5f9b6a78be4 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 13 May 2020 16:06:42 +0300 Subject: Correctly fill default type parameters --- crates/ra_hir/src/code_model.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index e8e3211fc..3c56f39c1 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -989,6 +989,11 @@ impl TypeParam { ty: InEnvironment { value: ty, environment }, } } + + pub fn default(self, db: &dyn HirDatabase) -> Option { + let params = db.generic_params(self.id.parent); + params.types[self.id.local_id].default.clone() + } } // FIXME: rename from `ImplDef` to `Impl` -- cgit v1.2.3 From a55ad203888b5e43cf6cbf015d562d7bd1abe0bb Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Thu, 14 May 2020 09:56:20 +0300 Subject: Use generic_defaults and display_source_code --- crates/ra_hir/src/code_model.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 3c56f39c1..3936f5aaa 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -990,9 +990,10 @@ impl TypeParam { } } - pub fn default(self, db: &dyn HirDatabase) -> Option { - let params = db.generic_params(self.id.parent); - params.types[self.id.local_id].default.clone() + pub fn default(self, db: &dyn HirDatabase) -> Option { + let params = db.generic_defaults(self.id.parent); + let local_idx: u32 = self.id.local_id.into_raw().into(); + params.get(local_idx as usize).map(|d| d.clone()) } } -- cgit v1.2.3 From 12bf008ab12f87b2e6d4805681f5a389d9e2f425 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Thu, 14 May 2020 13:47:36 +0300 Subject: Adds a param_idx helper --- crates/ra_hir/src/code_model.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 3936f5aaa..cdbf475b3 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -992,8 +992,8 @@ impl TypeParam { pub fn default(self, db: &dyn HirDatabase) -> Option { let params = db.generic_defaults(self.id.parent); - let local_idx: u32 = self.id.local_id.into_raw().into(); - params.get(local_idx as usize).map(|d| d.clone()) + let local_idx = hir_ty::param_idx(db, self.id)?; + params.get(local_idx).map(|d| d.clone()) } } -- cgit v1.2.3 From ccd526837459724211c8281926aa86522b2506d5 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Thu, 14 May 2020 13:53:45 +0300 Subject: Ty -> Type --- crates/ra_hir/src/code_model.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index cdbf475b3..840cfdfc8 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -990,10 +990,15 @@ impl TypeParam { } } - pub fn default(self, db: &dyn HirDatabase) -> Option { + pub fn default(self, db: &dyn HirDatabase) -> Option { let params = db.generic_defaults(self.id.parent); let local_idx = hir_ty::param_idx(db, self.id)?; - params.get(local_idx).map(|d| d.clone()) + let resolver = self.id.parent.resolver(db.upcast()); + let environment = TraitEnvironment::lower(db, &resolver); + params.get(local_idx).cloned().map(|ty| Type { + krate: self.id.parent.module(db.upcast()).krate, + ty: InEnvironment { value: ty, environment }, + }) } } -- cgit v1.2.3