diff options
Diffstat (limited to 'crates/hir/src')
-rw-r--r-- | crates/hir/src/lib.rs | 4 | ||||
-rw-r--r-- | crates/hir/src/semantics.rs | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index b14c9a675..ccfe348a4 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs | |||
@@ -702,7 +702,7 @@ impl_from!(Struct, Union, Enum for Adt); | |||
702 | impl Adt { | 702 | impl Adt { |
703 | pub fn has_non_default_type_params(self, db: &dyn HirDatabase) -> bool { | 703 | pub fn has_non_default_type_params(self, db: &dyn HirDatabase) -> bool { |
704 | let subst = db.generic_defaults(self.into()); | 704 | let subst = db.generic_defaults(self.into()); |
705 | subst.iter().any(|ty| ty.value.is_unknown()) | 705 | subst.iter().any(|ty| ty.skip_binders().is_unknown()) |
706 | } | 706 | } |
707 | 707 | ||
708 | /// Turns this ADT into a type. Any type parameters of the ADT will be | 708 | /// Turns this ADT into a type. Any type parameters of the ADT will be |
@@ -1089,7 +1089,7 @@ pub struct TypeAlias { | |||
1089 | impl TypeAlias { | 1089 | impl TypeAlias { |
1090 | pub fn has_non_default_type_params(self, db: &dyn HirDatabase) -> bool { | 1090 | pub fn has_non_default_type_params(self, db: &dyn HirDatabase) -> bool { |
1091 | let subst = db.generic_defaults(self.id.into()); | 1091 | let subst = db.generic_defaults(self.id.into()); |
1092 | subst.iter().any(|ty| ty.value.is_unknown()) | 1092 | subst.iter().any(|ty| ty.skip_binders().is_unknown()) |
1093 | } | 1093 | } |
1094 | 1094 | ||
1095 | pub fn module(self, db: &dyn HirDatabase) -> Module { | 1095 | pub fn module(self, db: &dyn HirDatabase) -> Module { |
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 3bf722d2a..7955bf0b5 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs | |||
@@ -494,9 +494,9 @@ impl<'db> SemanticsImpl<'db> { | |||
494 | fn resolve_method_call_as_callable(&self, call: &ast::MethodCallExpr) -> Option<Callable> { | 494 | fn resolve_method_call_as_callable(&self, call: &ast::MethodCallExpr) -> Option<Callable> { |
495 | // FIXME: this erases Substs | 495 | // FIXME: this erases Substs |
496 | let func = self.resolve_method_call(call)?; | 496 | let func = self.resolve_method_call(call)?; |
497 | let ty = self.db.value_ty(func.into()); | 497 | let (ty, _) = self.db.value_ty(func.into()).into_value_and_skipped_binders(); |
498 | let resolver = self.analyze(call.syntax()).resolver; | 498 | let resolver = self.analyze(call.syntax()).resolver; |
499 | let ty = Type::new_with_resolver(self.db, &resolver, ty.value)?; | 499 | let ty = Type::new_with_resolver(self.db, &resolver, ty)?; |
500 | let mut res = ty.as_callable(self.db)?; | 500 | let mut res = ty.as_callable(self.db)?; |
501 | res.is_bound_method = true; | 501 | res.is_bound_method = true; |
502 | Some(res) | 502 | Some(res) |