aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-06-15 17:20:59 +0100
committerFlorian Diebold <[email protected]>2019-06-15 17:21:23 +0100
commit3e78a6e3e0dbe5ad2ae712ec5c94a3792745f26c (patch)
treea6f46e5b38ab632474dd6f87734d9ddfa8b83757 /crates/ra_hir/src/ty.rs
parentca5ed2307c6dd8396f58460652c77a6a63704e0b (diff)
Somewhat handle variables in the derefed type, and add another test
Diffstat (limited to 'crates/ra_hir/src/ty.rs')
-rw-r--r--crates/ra_hir/src/ty.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs
index d2f92a1f2..4ed19f860 100644
--- a/crates/ra_hir/src/ty.rs
+++ b/crates/ra_hir/src/ty.rs
@@ -474,6 +474,17 @@ impl Ty {
474 _ => None, 474 _ => None,
475 } 475 }
476 } 476 }
477
478 /// Shifts up `Ty::Bound` vars by `n`.
479 pub fn shift_bound_vars(self, n: i32) -> Ty {
480 self.fold(&mut |ty| match ty {
481 Ty::Bound(idx) => {
482 assert!(idx as i32 >= -n);
483 Ty::Bound((idx as i32 + n) as u32)
484 }
485 ty => ty,
486 })
487 }
477} 488}
478 489
479impl HirDisplay for &Ty { 490impl HirDisplay for &Ty {