From a89abc82257eb3b4f76a13dd6d38161dfd5ed4df Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 13 Aug 2026 16:54:57 +0200 Subject: [PATCH] Fix link title attribute value when field of enum variants --- src/librustdoc/html/format.rs | 8 ++++++-- .../intra-doc/enum-variant-field-title.rs | 13 +++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 tests/rustdoc-html/intra-doc/enum-variant-field-title.rs diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index 4b9bf8bbd3a07..b3b5779fbaca9 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -674,11 +674,15 @@ pub(crate) fn link_tooltip( fqp }; if let &Some(UrlFragment::Item(id)) = fragment { - write!(f, "{} ", cx.tcx().def_descr(id))?; + let tcx = cx.tcx(); + write!(f, "{} ", tcx.def_descr(id))?; for component in fqp { write!(f, "{component}::")?; } - write!(f, "{}", cx.tcx().item_name(id))?; + if *shortty == ItemType::Enum && tcx.def_kind(id) == DefKind::Field { + write!(f, "{}::", tcx.item_name(tcx.parent(id)))?; + } + write!(f, "{}", tcx.item_name(id))?; } else if !fqp.is_empty() { write!(f, "{shortty} ")?; write!(f, "{}", join_path_syms(fqp))?; diff --git a/tests/rustdoc-html/intra-doc/enum-variant-field-title.rs b/tests/rustdoc-html/intra-doc/enum-variant-field-title.rs new file mode 100644 index 0000000000000..8fdfef11e4ff0 --- /dev/null +++ b/tests/rustdoc-html/intra-doc/enum-variant-field-title.rs @@ -0,0 +1,13 @@ +// This test ensures that the generated "title" attribute for field of enum variant +// is correctly generated and includes the variant's name. +// Regression test for . + +#![crate_name = "foo"] + +//@ has 'foo/enum.Enum.html' +//@ has - '//*[@class="docblock"]//a[@title="field foo::Enum::Variant::field"]' 'Enum::Variant::field' + +/// [Enum::Variant::field] +pub enum Enum { + Variant { field: i32 } +}