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.rs49
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(())