Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/display.rs')
| -rw-r--r-- | crates/hir/src/display.rs | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/crates/hir/src/display.rs b/crates/hir/src/display.rs index 20ba72d998..cdc0db8653 100644 --- a/crates/hir/src/display.rs +++ b/crates/hir/src/display.rs @@ -596,33 +596,32 @@ impl HirDisplay for Trait { write_generic_params(def_id, f)?; write_where_clause(def_id, f)?; - let assoc_items = self.items(f.db); - let assoc_items_size = assoc_items.len(); - let limited_size = f.limited_size.unwrap_or(assoc_items_size); - if assoc_items.is_empty() { - f.write_str(" {}")?; - } else { - f.write_str(" {\n")?; - for (index, item) in assoc_items.iter().enumerate() { - f.write_str(" ")?; - match item { - AssocItem::Function(func) => { - func.hir_fmt(f)?; - } - AssocItem::Const(cst) => { - cst.hir_fmt(f)?; - } - AssocItem::TypeAlias(type_alias) => { - type_alias.hir_fmt(f)?; - } - }; - f.write_str(",\n")?; - if index + 1 == limited_size && index + 1 != assoc_items_size { - f.write_str(" ...\n")?; - break; + if let Some(limit) = f.entity_limit { + let assoc_items = self.items(f.db); + let count = assoc_items.len().min(limit); + if count == 0 { + if assoc_items.is_empty() { + f.write_str(" {}")?; + } else { + f.write_str(" { /* … */ }")?; } + } else { + f.write_str(" {\n")?; + for item in &assoc_items[..count] { + f.write_str(" ")?; + match item { + AssocItem::Function(func) => func.hir_fmt(f), + AssocItem::Const(cst) => cst.hir_fmt(f), + AssocItem::TypeAlias(type_alias) => type_alias.hir_fmt(f), + }?; + f.write_str(";\n")?; + } + + if assoc_items.len() > count { + f.write_str(" /* … */\n")?; + } + f.write_str("}")?; } - f.write_str("}")?; } Ok(()) |