rustdoc: render unnamed arguments as underscores in cross-crate functions & function pointers

for consistency with the way we display local definitions (cleaned from HIR, not from rustc_middle).
This commit is contained in:
León Orell Valerian Liehr 2022-11-02 15:13:54 +01:00
parent 5965af7010
commit 9cdab67f6e
4 changed files with 19 additions and 16 deletions

View File

@ -957,12 +957,14 @@ fn clean_args_from_types_and_names<'tcx>(
values: types
.iter()
.enumerate()
.map(|(i, ty)| {
let mut name = names.get(i).map_or(kw::Empty, |ident| ident.name);
if name.is_empty() {
name = kw::Underscore;
}
Argument { name, type_: clean_ty(ty, cx), is_const: false }
.map(|(i, ty)| Argument {
type_: clean_ty(ty, cx),
name: names
.get(i)
.map(|ident| ident.name)
.filter(|ident| !ident.is_empty())
.unwrap_or(kw::Underscore),
is_const: false,
})
.collect(),
}
@ -1024,7 +1026,11 @@ fn clean_fn_decl_from_did_and_sig<'tcx>(
.iter()
.map(|t| Argument {
type_: clean_middle_ty(*t, cx, None),
name: names.next().map_or(kw::Empty, |i| i.name),
name: names
.next()
.map(|i| i.name)
.filter(|i| !i.is_empty())
.unwrap_or(kw::Underscore),
is_const: false,
})
.collect(),

View File

@ -1232,9 +1232,8 @@ pub(crate) fn print<'a, 'tcx: 'a>(
) -> impl fmt::Display + 'a + Captures<'tcx> {
display_fn(move |f| {
for (i, input) in self.values.iter().enumerate() {
if !input.name.is_empty() {
write!(f, "{}: ", input.name)?;
}
write!(f, "{}: ", input.name)?;
if f.alternate() {
write!(f, "{:#}", input.type_.print(cx))?;
} else {
@ -1367,10 +1366,8 @@ fn inner_full_print(
args.push_str("const ");
args_plain.push_str("const ");
}
if !input.name.is_empty() {
write!(args, "{}: ", input.name);
write!(args_plain, "{}: ", input.name);
}
write!(args, "{}: ", input.name);
write!(args_plain, "{}: ", input.name);
if f.alternate() {
write!(args, "{:#}", input.type_.print(cx));

View File

@ -33,7 +33,7 @@
// @snapshot out9 - '//*[@id="associatedtype.Out9"]/*[@class="code-header"]'
//
// @has - '//*[@id="tymethod.make"]' \
// "fn make<F>(F, impl FnMut(&str) -> bool)\
// "fn make<F>(_: F, _: impl FnMut(&str) -> bool)\
// where \
// F: FnOnce(u32) -> String, \
// Self::Out2<()>: Protocol<u8, Q0 = Self::Item, Q1 = ()>"

View File

@ -29,7 +29,7 @@
// @has impl_trait/fn.func5.html
// @has - '//pre[@class="rust fn"]' "func5("
// @has - '//pre[@class="rust fn"]' "_f: impl for<'any> Fn(&'any str, &'any str) -> bool + for<'r> Other<T<'r> = ()>,"
// @has - '//pre[@class="rust fn"]' "_a: impl for<'alpha, 'beta> Auxiliary<'alpha, Item<'beta> = fn(&'beta ())>"
// @has - '//pre[@class="rust fn"]' "_a: impl for<'alpha, 'beta> Auxiliary<'alpha, Item<'beta> = fn(_: &'beta ())>"
// @!has - '//pre[@class="rust fn"]' 'where'
pub use impl_trait_aux::func5;