aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty.rs
diff options
context:
space:
mode:
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 {