diff options
Diffstat (limited to 'crates/ra_hir_ty/src/display.rs')
-rw-r--r-- | crates/ra_hir_ty/src/display.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/crates/ra_hir_ty/src/display.rs b/crates/ra_hir_ty/src/display.rs index 3c97e1354..23cea1a2a 100644 --- a/crates/ra_hir_ty/src/display.rs +++ b/crates/ra_hir_ty/src/display.rs | |||
@@ -308,7 +308,6 @@ impl HirDisplay for ApplicationTy { | |||
308 | } | 308 | } |
309 | 309 | ||
310 | if self.parameters.len() > 0 { | 310 | if self.parameters.len() > 0 { |
311 | let mut non_default_parameters = Vec::with_capacity(self.parameters.len()); | ||
312 | let parameters_to_write = | 311 | let parameters_to_write = |
313 | if f.display_target.is_source_code() || f.omit_verbose_types() { | 312 | if f.display_target.is_source_code() || f.omit_verbose_types() { |
314 | match self | 313 | match self |
@@ -319,20 +318,23 @@ impl HirDisplay for ApplicationTy { | |||
319 | { | 318 | { |
320 | None => self.parameters.0.as_ref(), | 319 | None => self.parameters.0.as_ref(), |
321 | Some(default_parameters) => { | 320 | Some(default_parameters) => { |
321 | let mut default_from = 0; | ||
322 | for (i, parameter) in self.parameters.iter().enumerate() { | 322 | for (i, parameter) in self.parameters.iter().enumerate() { |
323 | match (parameter, default_parameters.get(i)) { | 323 | match (parameter, default_parameters.get(i)) { |
324 | (&Ty::Unknown, _) | (_, None) => { | 324 | (&Ty::Unknown, _) | (_, None) => { |
325 | non_default_parameters.push(parameter.clone()) | 325 | default_from = i + 1; |
326 | } | 326 | } |
327 | (_, Some(default_parameter)) | 327 | (_, Some(default_parameter)) => { |
328 | if parameter != default_parameter => | 328 | let actual_default = default_parameter |
329 | { | 329 | .clone() |
330 | non_default_parameters.push(parameter.clone()) | 330 | .subst(&self.parameters.prefix(i)); |
331 | if parameter != &actual_default { | ||
332 | default_from = i + 1; | ||
333 | } | ||
331 | } | 334 | } |
332 | _ => (), | ||
333 | } | 335 | } |
334 | } | 336 | } |
335 | &non_default_parameters | 337 | &self.parameters.0[0..default_from] |
336 | } | 338 | } |
337 | } | 339 | } |
338 | } else { | 340 | } else { |