diff options
author | Seivan Heidari <[email protected]> | 2019-11-02 12:43:57 +0000 |
---|---|---|
committer | Seivan Heidari <[email protected]> | 2019-11-02 12:43:57 +0000 |
commit | 1d8bb4c6c1fef1f8ea513e07d0a7d4c5483129d2 (patch) | |
tree | 055ee515dfaad62af5d2a92bb4ab921a88ee09de /crates/ra_hir/src/ty.rs | |
parent | 1b6c68e51fcbba59c2e99c31d1400cbd6d44f928 (diff) | |
parent | eb8f76a86fe88fcad370577b344f397dd6118cfd (diff) |
Merge branch 'master' into feature/themes
Diffstat (limited to 'crates/ra_hir/src/ty.rs')
-rw-r--r-- | crates/ra_hir/src/ty.rs | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs index d2bfcdc7d..d1a9d7411 100644 --- a/crates/ra_hir/src/ty.rs +++ b/crates/ra_hir/src/ty.rs | |||
@@ -385,13 +385,22 @@ impl SubstsBuilder { | |||
385 | self.param_count - self.vec.len() | 385 | self.param_count - self.vec.len() |
386 | } | 386 | } |
387 | 387 | ||
388 | pub fn fill_with_bound_vars(mut self, starting_from: u32) -> Self { | 388 | pub fn fill_with_bound_vars(self, starting_from: u32) -> Self { |
389 | self.vec.extend((starting_from..starting_from + self.remaining() as u32).map(Ty::Bound)); | 389 | self.fill((starting_from..).map(Ty::Bound)) |
390 | self | 390 | } |
391 | |||
392 | pub fn fill_with_params(self) -> Self { | ||
393 | let start = self.vec.len() as u32; | ||
394 | self.fill((start..).map(|idx| Ty::Param { idx, name: Name::missing() })) | ||
395 | } | ||
396 | |||
397 | pub fn fill_with_unknown(self) -> Self { | ||
398 | self.fill(iter::repeat(Ty::Unknown)) | ||
391 | } | 399 | } |
392 | 400 | ||
393 | pub fn fill_with_unknown(mut self) -> Self { | 401 | pub fn fill(mut self, filler: impl Iterator<Item = Ty>) -> Self { |
394 | self.vec.extend(iter::repeat(Ty::Unknown).take(self.remaining())); | 402 | self.vec.extend(filler.take(self.remaining())); |
403 | assert_eq!(self.remaining(), 0); | ||
395 | self | 404 | self |
396 | } | 405 | } |
397 | 406 | ||