aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/lib.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2020-03-01 13:31:35 +0000
committerFlorian Diebold <[email protected]>2020-03-01 13:31:35 +0000
commit336a3c6121edf54a19728dbbd880f62bc835d7c8 (patch)
tree7cfbf56ccaf53e8e008798a3569c70e21516c5c9 /crates/ra_hir_ty/src/lib.rs
parent6db2da4993d3956fc7c8ebf152963a132611426a (diff)
Fix #3373
Basically, we need to allow variables in the caller self type to unify with the impl's declared self type. That requires some more contortions in the variable handling. I'm looking forward to (hopefully) handling this in a cleaner way when we switch to Chalk's types and unification code.
Diffstat (limited to 'crates/ra_hir_ty/src/lib.rs')
-rw-r--r--crates/ra_hir_ty/src/lib.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/crates/ra_hir_ty/src/lib.rs b/crates/ra_hir_ty/src/lib.rs
index 0009c426c..ca194f806 100644
--- a/crates/ra_hir_ty/src/lib.rs
+++ b/crates/ra_hir_ty/src/lib.rs
@@ -355,6 +355,10 @@ impl Substs {
355 Substs(self.0[..std::cmp::min(self.0.len(), n)].into()) 355 Substs(self.0[..std::cmp::min(self.0.len(), n)].into())
356 } 356 }
357 357
358 pub fn suffix(&self, n: usize) -> Substs {
359 Substs(self.0[self.0.len() - std::cmp::min(self.0.len(), n)..].into())
360 }
361
358 pub fn as_single(&self) -> &Ty { 362 pub fn as_single(&self) -> &Ty {
359 if self.0.len() != 1 { 363 if self.0.len() != 1 {
360 panic!("expected substs of len 1, got {:?}", self); 364 panic!("expected substs of len 1, got {:?}", self);