diff options
author | Florian Diebold <[email protected]> | 2019-06-15 17:20:59 +0100 |
---|---|---|
committer | Florian Diebold <[email protected]> | 2019-06-15 17:21:23 +0100 |
commit | 3e78a6e3e0dbe5ad2ae712ec5c94a3792745f26c (patch) | |
tree | a6f46e5b38ab632474dd6f87734d9ddfa8b83757 /crates/ra_hir/src/ty.rs | |
parent | ca5ed2307c6dd8396f58460652c77a6a63704e0b (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.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 { |