diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index f26d74629dd94..b710311c85872 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -347,13 +347,19 @@ pub(crate) fn print_where_clause<'a, 'tcx: 'a>(
}
} else {
let mut br_with_padding = String::with_capacity(6 * indent + 28);
- br_with_padding.push_str("\n");
+ br_with_padding.push('\n');
- let padding_amount =
- if ending == Ending::Newline { indent + 4 } else { indent + "fn where ".len() };
+ let where_indent = 3;
+ let padding_amount = if ending == Ending::Newline {
+ indent + 4
+ } else if indent == 0 {
+ 4
+ } else {
+ indent + where_indent + "where ".len()
+ };
for _ in 0..padding_amount {
- br_with_padding.push_str(" ");
+ br_with_padding.push(' ');
}
let where_preds = where_preds.to_string().replace('\n', &br_with_padding);
@@ -370,7 +376,8 @@ pub(crate) fn print_where_clause<'a, 'tcx: 'a>(
let where_preds = where_preds.replacen(&br_with_padding, " ", 1);
let mut clause = br_with_padding;
- clause.truncate(clause.len() - "where ".len());
+ // +1 is for `\n`.
+ clause.truncate(indent + 1 + where_indent);
write!(clause, "where{where_preds}")?;
clause
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs
index c5d6771c2fdd3..0199364151d45 100644
--- a/src/librustdoc/html/render/mod.rs
+++ b/src/librustdoc/html/render/mod.rs
@@ -859,8 +859,8 @@ fn assoc_method(
w.reserve(header_len + "{".len() + "".len());
write!(
w,
- "{indent}{vis}{constness}{asyncness}{unsafety}{defaultness}{abi}fn {name}\
- {generics}{decl}{notable_traits}{where_clause}",
+ "{indent}{vis}{constness}{asyncness}{unsafety}{defaultness}{abi}fn \
+ {name}{generics}{decl}{notable_traits}{where_clause}",
indent = indent_str,
vis = vis,
constness = constness,