From d7513140ca3135be9cab2c19600336a5c0cd195e Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 16 Jun 2022 14:13:57 +0200 Subject: [PATCH] Add rustdonc-json regression test for #98009 --- src/test/rustdoc-json/output_generics.rs | 38 ++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/test/rustdoc-json/output_generics.rs diff --git a/src/test/rustdoc-json/output_generics.rs b/src/test/rustdoc-json/output_generics.rs new file mode 100644 index 00000000000..d80656c7fc8 --- /dev/null +++ b/src/test/rustdoc-json/output_generics.rs @@ -0,0 +1,38 @@ +// compile-flags: --document-private-items --document-hidden-items + +// This is a regression test for #98009. + +// @has output_generics.json +// @has - "$.index[*][?(@.name=='this_compiles')]" +// @has - "$.index[*][?(@.name=='this_does_not')]" +// @has - "$.index[*][?(@.name=='Events')]" +// @has - "$.index[*][?(@.name=='Other')]" +// @has - "$.index[*][?(@.name=='Trait')]" + +struct Events(R); + +struct Other; + +pub trait Trait { + fn handle(value: T) -> Self; +} + +impl Trait for T where T: From { + fn handle(_: U) -> Self { unimplemented!() } +} + +impl<'a, R> Trait<&'a mut Events> for Other { + fn handle(_: &'a mut Events) -> Self { unimplemented!() } +} + +fn this_compiles<'a, R>(value: &'a mut Events) { + for _ in 0..3 { + Other::handle(&mut *value); + } +} + +fn this_does_not<'a, R>(value: &'a mut Events) { + for _ in 0..3 { + Other::handle(value); + } +}