Change:
From My understanding is that test is trying to assert that doesn't contain the phrase , but because it is erroneously escaping a quote it fails to make that assertion. Furthermore, the generated file actually does contain the text being checked for, so there is a bug in rustdoc as well. <!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --<!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOTEND --
This issue should be assigned to as per his request in
claim
I've made the following observations: The current output of for the test is the same as the output with the initial implementation used with the test () and also seems to match with the initial goal of the implementation in . (I don't think the actual output of is necessary here, but can provide that if needed). The check has not been modified since its creation, I haven't been able to compare the implementations of the relevant parts in though, due to my unfamiliarity with s code. My interpretation is that there is no bug in (since the output stayed the same), but the test simply never validated the output correctly, because all checks validate the absence (all checks start with ) of an in parameters or return values, while the original goal of the implementation (see ) was to add support for in parameters and return values. Example: which would generate as documentation all checks expect an opening brace after the return type, which is not generated by . This makes the checks work, because now the 'expected' (see point 1) mismatch occurs. all checks with a lifetime were erroneously escaping a quote. Again, this makes the checks work, because now the 'expected' mismatch occurs. If my observations are correct, I would go forward by opening a pr fixing the issues listed above for the test (e. g. making the test fail for possibly incorrect output by in the future).
can you confirm whether the summary above is correct?
Yes, it seems to be correct. Thanks for the summary ! Please feel free to open the PR. :)

Discussion:
impl Foo for Bar {} impl Foo2 for Bar {} <del> // @!has foo/fn.foo.html '//section[@id="main"]//pre' "x: &'x impl Foo" // @!has foo/fn.foo.html '//section[@id="main"]//pre' "-> &'x impl Foo {" </del> <ins> // @has foo/fn.foo.html '//section[@id="main"]//pre' "x: &'x impl Foo" // @has foo/fn.foo.html '//section[@id="main"]//pre' "-> &'x impl Foo" </ins> pub fn foo<'x>(x: &'x impl Foo) -> &'x impl Foo { x } <del> // @!has foo/fn.foo2.html '//section[@id="main"]//pre' "x: &'x impl Foo" // @!has foo/fn.foo2.html '//section[@id="main"]//pre' '-> impl Foo2 {' </del> <ins> // @has foo/fn.foo2.html '//section[@id="main"]//pre' "x: &'x impl Foo" // @has foo/fn.foo2.html '//section[@id="main"]//pre' '-> impl Foo2' </ins> pub fn foo2<'x>(_x: &'x impl Foo) -> impl Foo2 { Bar } <del> // @!has foo/fn.foo_foo.html '//section[@id="main"]//pre' '-> impl Foo + Foo2 {' </del> <ins> // @has foo/fn.foo_foo.html '//section[@id="main"]//pre' '-> impl Foo + Foo2' </ins> pub fn foo_foo() -> impl Foo + Foo2 { Bar } <del> // @!has foo/fn.foo2.html '//section[@id="main"]//pre' "x: &'x (impl Foo + Foo2)" </del> <ins> // @has foo/fn.foo_foo_foo.html '//section[@id="main"]//pre' "x: &'x impl Foo + Foo2" </ins> pub fn foo_foo_foo<'x>(_x: &'x (impl Foo + Foo2)) { }