diff options
Diffstat (limited to 'crates/ra_hir/src/ty.rs')
-rw-r--r-- | crates/ra_hir/src/ty.rs | 11 |
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 | ||
479 | impl HirDisplay for &Ty { | 490 | impl HirDisplay for &Ty { |