diff options
author | Aleksey Kladov <[email protected]> | 2019-12-07 12:05:05 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-12-07 12:13:00 +0000 |
commit | d6c2b92409902d9ceca8cd064026cfcc1f357cf6 (patch) | |
tree | 8ce9fd29435ef3bf1fe568fd889c3f1ab8307ea6 /crates/ra_hir_ty/src/utils.rs | |
parent | 8e9837df21942ca12a5aece0a868ea46eb405742 (diff) |
Refactor parameter count tracking
Diffstat (limited to 'crates/ra_hir_ty/src/utils.rs')
-rw-r--r-- | crates/ra_hir_ty/src/utils.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/crates/ra_hir_ty/src/utils.rs b/crates/ra_hir_ty/src/utils.rs index 2c458867f..936cfe25e 100644 --- a/crates/ra_hir_ty/src/utils.rs +++ b/crates/ra_hir_ty/src/utils.rs | |||
@@ -117,13 +117,14 @@ impl Generics { | |||
117 | .map(|(i, (_local_id, p))| (i as u32, p)) | 117 | .map(|(i, (_local_id, p))| (i as u32, p)) |
118 | } | 118 | } |
119 | 119 | ||
120 | pub(crate) fn count_parent_params(&self) -> usize { | 120 | pub(crate) fn len(&self) -> usize { |
121 | self.parent_generics.as_ref().map_or(0, |p| p.count_params_including_parent()) | 121 | self.len_split().0 |
122 | } | 122 | } |
123 | 123 | /// (total, parents, child) | |
124 | pub(crate) fn count_params_including_parent(&self) -> usize { | 124 | pub(crate) fn len_split(&self) -> (usize, usize, usize) { |
125 | let parent_count = self.count_parent_params(); | 125 | let parent = self.parent_generics.as_ref().map_or(0, |p| p.len()); |
126 | parent_count + self.params.params.len() | 126 | let child = self.params.params.len(); |
127 | (parent + child, parent, child) | ||
127 | } | 128 | } |
128 | pub(crate) fn param_idx(&self, param: GenericParamId) -> u32 { | 129 | pub(crate) fn param_idx(&self, param: GenericParamId) -> u32 { |
129 | self.find_param(param).0 | 130 | self.find_param(param).0 |
@@ -140,8 +141,8 @@ impl Generics { | |||
140 | .enumerate() | 141 | .enumerate() |
141 | .find(|(_, (idx, _))| *idx == param.local_id) | 142 | .find(|(_, (idx, _))| *idx == param.local_id) |
142 | .unwrap(); | 143 | .unwrap(); |
143 | 144 | let (_total, parent_len, _child) = self.len_split(); | |
144 | return ((self.count_parent_params() + idx) as u32, data); | 145 | return ((parent_len + idx) as u32, data); |
145 | } | 146 | } |
146 | self.parent_generics.as_ref().unwrap().find_param(param) | 147 | self.parent_generics.as_ref().unwrap().find_param(param) |
147 | } | 148 | } |