diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/clean/inline.rs | 4 | ||||
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 4 | ||||
| -rw-r--r-- | src/librustdoc/clean/types.rs | 6 | ||||
| -rw-r--r-- | src/librustdoc/html/format.rs | 15 | ||||
| -rw-r--r-- | src/librustdoc/json/conversions.rs | 2 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/tuple-variadic-check.rs | 4 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/tuple-variadic-check.stderr | 6 | ||||
| -rw-r--r-- | src/test/rustdoc/primitive-tuple-auto-trait.rs | 2 | ||||
| -rw-r--r-- | src/test/rustdoc/primitive-tuple-variadic.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/feature-gates/feature-gate-rustdoc_internals.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/feature-gates/feature-gate-rustdoc_internals.stderr | 6 |
11 files changed, 34 insertions, 21 deletions
diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index 23af7d2ef1e..ce10ca9aa3d 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -506,8 +506,8 @@ pub(crate) fn build_impl( for_, items: trait_items, polarity, - kind: if utils::has_doc_flag(tcx, did, sym::tuple_variadic) { - ImplKind::TupleVaradic + kind: if utils::has_doc_flag(tcx, did, sym::fake_variadic) { + ImplKind::FakeVaradic } else { ImplKind::Normal }, diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index d6260b8ca06..a5c5d1ac182 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -2005,8 +2005,8 @@ fn clean_impl<'tcx>( for_, items, polarity: tcx.impl_polarity(def_id), - kind: if utils::has_doc_flag(tcx, def_id.to_def_id(), sym::tuple_variadic) { - ImplKind::TupleVaradic + kind: if utils::has_doc_flag(tcx, def_id.to_def_id(), sym::fake_variadic) { + ImplKind::FakeVaradic } else { ImplKind::Normal }, diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs index d29ba2dedaf..5ddf7ea8a85 100644 --- a/src/librustdoc/clean/types.rs +++ b/src/librustdoc/clean/types.rs @@ -2394,7 +2394,7 @@ impl Impl { pub(crate) enum ImplKind { Normal, Auto, - TupleVaradic, + FakeVaradic, Blanket(Box<Type>), } @@ -2407,8 +2407,8 @@ impl ImplKind { matches!(self, ImplKind::Blanket(_)) } - pub(crate) fn is_tuple_variadic(&self) -> bool { - matches!(self, ImplKind::TupleVaradic) + pub(crate) fn is_fake_variadic(&self) -> bool { + matches!(self, ImplKind::FakeVaradic) } pub(crate) fn as_blanket_ty(&self) -> Option<&Type> { diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index 9f46ab54d3e..291e6bc2fe4 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -1165,10 +1165,23 @@ impl clean::Impl { if let clean::Type::Tuple(types) = &self.for_ && let [clean::Type::Generic(name)] = &types[..] && - (self.kind.is_tuple_variadic() || self.kind.is_auto()) { + (self.kind.is_fake_variadic() || self.kind.is_auto()) { // Hardcoded anchor library/core/src/primitive_docs.rs // Link should match `# Trait implementations` primitive_link_fragment(f, PrimitiveType::Tuple, &format!("({name}₁, {name}₂, …, {name}ₙ)"), "#trait-implementations-1", cx)?; + } else if let clean::Type::BareFunction(bare_fn) = &self.for_ && + let [clean::Argument { type_: clean::Type::Generic(name), .. }] = &bare_fn.decl.inputs.values[..] && + (self.kind.is_fake_variadic() || self.kind.is_auto()) { + // Hardcoded anchor library/core/src/primitive_docs.rs + // Link should match `# Trait implementations` + primitive_link_fragment(f, PrimitiveType::Tuple, &format!("fn ({name}₁, {name}₂, …, {name}ₙ)"), "#trait-implementations-1", cx)?; + // Not implemented. + assert!(!bare_fn.decl.c_variadic); + // Write output. + if let clean::FnRetTy::Return(ty) = &bare_fn.decl.output { + write!(f, " -> ")?; + fmt_type(ty, f, use_absolute, cx)?; + } } else if let Some(ty) = self.kind.as_blanket_ty() { fmt_type(ty, f, use_absolute, cx)?; } else { diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index 2598b9b0b28..9000ab472d9 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -574,7 +574,7 @@ impl FromWithTcx<clean::Impl> for Impl { let trait_ = trait_.map(|path| clean::Type::Path { path }.into_tcx(tcx)); // FIXME: use something like ImplKind in JSON? let (synthetic, blanket_impl) = match kind { - clean::ImplKind::Normal | clean::ImplKind::TupleVaradic => (false, None), + clean::ImplKind::Normal | clean::ImplKind::FakeVaradic => (false, None), clean::ImplKind::Auto => (true, None), clean::ImplKind::Blanket(ty) => (false, Some(*ty)), }; diff --git a/src/test/rustdoc-ui/tuple-variadic-check.rs b/src/test/rustdoc-ui/tuple-variadic-check.rs index 11ce2dbe280..505de53481f 100644 --- a/src/test/rustdoc-ui/tuple-variadic-check.rs +++ b/src/test/rustdoc-ui/tuple-variadic-check.rs @@ -3,13 +3,13 @@ trait Mine {} // This one is fine -#[doc(tuple_variadic)] +#[doc(fake_variadic)] impl<T> Mine for (T,) {} trait Mine2 {} // This one is not -#[doc(tuple_variadic)] //~ ERROR +#[doc(fake_variadic)] //~ ERROR impl<T, U> Mine for (T,U) {} fn main() {} diff --git a/src/test/rustdoc-ui/tuple-variadic-check.stderr b/src/test/rustdoc-ui/tuple-variadic-check.stderr index 358d06d6a42..d127fb858d1 100644 --- a/src/test/rustdoc-ui/tuple-variadic-check.stderr +++ b/src/test/rustdoc-ui/tuple-variadic-check.stderr @@ -1,8 +1,8 @@ -error: `#[doc(tuple_variadic)]` must be used on the first of a set of tuple trait impls with varying arity +error: `#[doc(fake_variadic)]` must be used on the first of a set of tuple or fn pointer trait impls with varying arity --> $DIR/tuple-variadic-check.rs:12:7 | -LL | #[doc(tuple_variadic)] - | ^^^^^^^^^^^^^^ +LL | #[doc(fake_variadic)] + | ^^^^^^^^^^^^^ error: aborting due to previous error diff --git a/src/test/rustdoc/primitive-tuple-auto-trait.rs b/src/test/rustdoc/primitive-tuple-auto-trait.rs index 71b0b077009..a2fbbf078d5 100644 --- a/src/test/rustdoc/primitive-tuple-auto-trait.rs +++ b/src/test/rustdoc/primitive-tuple-auto-trait.rs @@ -16,7 +16,7 @@ // @has - '//h2[@id="trait-implementations-1"]' 'Trait implementations' /// # Trait implementations /// -/// This header is hard-coded in the HTML format linking for `#[doc(tuple_variadics)]`. +/// This header is hard-coded in the HTML format linking for `#[doc(fake_variadics)]`. /// To make sure it gets linked correctly, we need to make sure the hardcoded anchor /// in the code matches what rustdoc generates for the header. mod tuple_prim {} diff --git a/src/test/rustdoc/primitive-tuple-variadic.rs b/src/test/rustdoc/primitive-tuple-variadic.rs index 4fd6254f674..db7cfd60c71 100644 --- a/src/test/rustdoc/primitive-tuple-variadic.rs +++ b/src/test/rustdoc/primitive-tuple-variadic.rs @@ -7,12 +7,12 @@ pub trait Foo {} // @has foo/trait.Foo.html // @has - '//section[@id="impl-Foo-for-(T%2C)"]/h3' 'impl<T> Foo for (T₁, T₂, …, Tₙ)' -#[doc(tuple_variadic)] +#[doc(fake_variadic)] impl<T> Foo for (T,) {} pub trait Bar {} // @has foo/trait.Bar.html // @has - '//section[@id="impl-Bar-for-(U%2C)"]/h3' 'impl<U: Foo> Bar for (U₁, U₂, …, Uₙ)' -#[doc(tuple_variadic)] +#[doc(fake_variadic)] impl<U: Foo> Bar for (U,) {} diff --git a/src/test/ui/feature-gates/feature-gate-rustdoc_internals.rs b/src/test/ui/feature-gates/feature-gate-rustdoc_internals.rs index 6a144412d07..58306a4cfc9 100644 --- a/src/test/ui/feature-gates/feature-gate-rustdoc_internals.rs +++ b/src/test/ui/feature-gates/feature-gate-rustdoc_internals.rs @@ -4,7 +4,7 @@ mod foo {} trait Mine {} -#[doc(tuple_variadic)] //~ ERROR: `#[doc(tuple_variadic)]` is meant for internal use only +#[doc(fake_variadic)] //~ ERROR: `#[doc(fake_variadic)]` is meant for internal use only impl<T> Mine for (T,) {} fn main() {} diff --git a/src/test/ui/feature-gates/feature-gate-rustdoc_internals.stderr b/src/test/ui/feature-gates/feature-gate-rustdoc_internals.stderr index 9fe08afd4f0..c4272a2c04c 100644 --- a/src/test/ui/feature-gates/feature-gate-rustdoc_internals.stderr +++ b/src/test/ui/feature-gates/feature-gate-rustdoc_internals.stderr @@ -7,11 +7,11 @@ LL | #[doc(keyword = "match")] = note: see issue #90418 <https://github.com/rust-lang/rust/issues/90418> for more information = help: add `#![feature(rustdoc_internals)]` to the crate attributes to enable -error[E0658]: `#[doc(tuple_variadic)]` is meant for internal use only +error[E0658]: `#[doc(fake_variadic)]` is meant for internal use only --> $DIR/feature-gate-rustdoc_internals.rs:7:1 | -LL | #[doc(tuple_variadic)] - | ^^^^^^^^^^^^^^^^^^^^^^ +LL | #[doc(fake_variadic)] + | ^^^^^^^^^^^^^^^^^^^^^ | = note: see issue #90418 <https://github.com/rust-lang/rust/issues/90418> for more information = help: add `#![feature(rustdoc_internals)]` to the crate attributes to enable |
