diff options
Diffstat (limited to 'crates/hir_ty/src/traits/chalk.rs')
-rw-r--r-- | crates/hir_ty/src/traits/chalk.rs | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/crates/hir_ty/src/traits/chalk.rs b/crates/hir_ty/src/traits/chalk.rs index cbe5cd7dd..a6c247f87 100644 --- a/crates/hir_ty/src/traits/chalk.rs +++ b/crates/hir_ty/src/traits/chalk.rs | |||
@@ -3,7 +3,7 @@ use std::sync::Arc; | |||
3 | 3 | ||
4 | use log::debug; | 4 | use log::debug; |
5 | 5 | ||
6 | use chalk_ir::{fold::shift::Shift, CanonicalVarKinds, GenericArg, TypeName}; | 6 | use chalk_ir::{fold::shift::Shift, CanonicalVarKinds, GenericArg}; |
7 | use chalk_solve::rust_ir::{self, OpaqueTyDatumBound, WellKnownTrait}; | 7 | use chalk_solve::rust_ir::{self, OpaqueTyDatumBound, WellKnownTrait}; |
8 | 8 | ||
9 | use base_db::{salsa::InternKey, CrateId}; | 9 | use base_db::{salsa::InternKey, CrateId}; |
@@ -81,7 +81,10 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> { | |||
81 | 81 | ||
82 | let ty: Ty = from_chalk(self.db, parameters[0].assert_ty_ref(&Interner).clone()); | 82 | let ty: Ty = from_chalk(self.db, parameters[0].assert_ty_ref(&Interner).clone()); |
83 | 83 | ||
84 | fn binder_kind(ty: &Ty, binders: &CanonicalVarKinds<Interner>) -> Option<chalk_ir::TyKind> { | 84 | fn binder_kind( |
85 | ty: &Ty, | ||
86 | binders: &CanonicalVarKinds<Interner>, | ||
87 | ) -> Option<chalk_ir::TyVariableKind> { | ||
85 | if let Ty::Bound(bv) = ty { | 88 | if let Ty::Bound(bv) = ty { |
86 | let binders = binders.as_slice(&Interner); | 89 | let binders = binders.as_slice(&Interner); |
87 | if bv.debruijn == DebruijnIndex::INNERMOST { | 90 | if bv.debruijn == DebruijnIndex::INNERMOST { |
@@ -95,8 +98,8 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> { | |||
95 | 98 | ||
96 | let self_ty_fp = TyFingerprint::for_impl(&ty); | 99 | let self_ty_fp = TyFingerprint::for_impl(&ty); |
97 | let fps: &[TyFingerprint] = match binder_kind(&ty, binders) { | 100 | let fps: &[TyFingerprint] = match binder_kind(&ty, binders) { |
98 | Some(chalk_ir::TyKind::Integer) => &ALL_INT_FPS, | 101 | Some(chalk_ir::TyVariableKind::Integer) => &ALL_INT_FPS, |
99 | Some(chalk_ir::TyKind::Float) => &ALL_FLOAT_FPS, | 102 | Some(chalk_ir::TyVariableKind::Float) => &ALL_FLOAT_FPS, |
100 | _ => self_ty_fp.as_ref().map(std::slice::from_ref).unwrap_or(&[]), | 103 | _ => self_ty_fp.as_ref().map(std::slice::from_ref).unwrap_or(&[]), |
101 | }; | 104 | }; |
102 | 105 | ||
@@ -129,12 +132,8 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> { | |||
129 | debug!("impls_for_trait returned {} impls", result.len()); | 132 | debug!("impls_for_trait returned {} impls", result.len()); |
130 | result | 133 | result |
131 | } | 134 | } |
132 | fn impl_provided_for( | 135 | fn impl_provided_for(&self, auto_trait_id: TraitId, kind: &chalk_ir::TyKind<Interner>) -> bool { |
133 | &self, | 136 | debug!("impl_provided_for {:?}, {:?}", auto_trait_id, kind); |
134 | auto_trait_id: TraitId, | ||
135 | application_ty: &chalk_ir::ApplicationTy<Interner>, | ||
136 | ) -> bool { | ||
137 | debug!("impl_provided_for {:?}, {:?}", auto_trait_id, application_ty); | ||
138 | false // FIXME | 137 | false // FIXME |
139 | } | 138 | } |
140 | fn associated_ty_value(&self, id: AssociatedTyValueId) -> Arc<AssociatedTyValue> { | 139 | fn associated_ty_value(&self, id: AssociatedTyValueId) -> Arc<AssociatedTyValue> { |
@@ -466,7 +465,7 @@ pub(crate) fn struct_datum_query( | |||
466 | struct_id: AdtId, | 465 | struct_id: AdtId, |
467 | ) -> Arc<StructDatum> { | 466 | ) -> Arc<StructDatum> { |
468 | debug!("struct_datum {:?}", struct_id); | 467 | debug!("struct_datum {:?}", struct_id); |
469 | let type_ctor: TypeCtor = from_chalk(db, TypeName::Adt(struct_id)); | 468 | let type_ctor = TypeCtor::Adt(from_chalk(db, struct_id)); |
470 | debug!("struct {:?} = {:?}", struct_id, type_ctor); | 469 | debug!("struct {:?} = {:?}", struct_id, type_ctor); |
471 | let num_params = type_ctor.num_ty_params(db); | 470 | let num_params = type_ctor.num_ty_params(db); |
472 | let upstream = type_ctor.krate(db) != Some(krate); | 471 | let upstream = type_ctor.krate(db) != Some(krate); |