rust/tests/rustdoc
Matthias Krüger 3e293634e2
Rollup merge of #116388 - fmease:rustdoc-fix-n-clean-up-x-crate-higher-ranked-params, r=notriddle
rustdoc: fix & clean up handling of cross-crate higher-ranked parameters

Preparatory work for the refactoring planned in #113015 (for correctness & maintainability).

---

1. Render the higher-ranked parameters of cross-crate function pointer types **(*)**.
2. Replace occurrences of `collect_referenced_late_bound_regions()` (CRLBR) with `bound_vars()`.
  The former is quite problematic and the use of the latter allows us to yank a lot of hacky code **(†)**
  as you can tell from the diff! :)
3. Add support for cross-crate higher-ranked types (`#![feature(non_lifetime_binders)]`).
  We were previously ICE'ing on them (see `inline_cross/non_lifetime_binders.rs`).

---

**(*)**: Extracted from test `inline_cross/fn-type.rs`:

```diff
- fn(_: &'z fn(_: &'b str), _: &'a ()) -> &'a ()
+ for<'z, 'a, '_unused> fn(_: &'z for<'b> fn(_: &'b str), _: &'a ()) -> &'a ()
```

**(†)**: It returns an `FxHashSet` which isn't *predictable* or *stable* wrt. source code (`.rmeta`) changes. To elaborate, the ordering of late-bound regions doesn't necessarily reflect the ordering found in the source code. It does seem to be stable across compilations but modifying the source code of the to-be-documented crates (like adding or renaming items) may result in a different order:

<details><summary>Example</summary>

Let's assume that we're documenting the cross-crate re-export of `produce` from the code below. On `master`, rustdoc would render the list of binders as `for<'x, 'y, 'z>`. However, once you add back the functions `a`–`l`, it would be rendered as `for<'z, 'y, 'x>` (reverse order)! Results may vary. `bound_vars()` fixes this as it returns them in source order.

```rs
// pub fn a() {}
// pub fn b() {}
// pub fn c() {}
// pub fn d() {}
// pub fn e() {}
// pub fn f() {}
// pub fn g() {}
// pub fn h() {}
// pub fn i() {}
// pub fn j() {}
// pub fn k() {}
// pub fn l() {}

pub fn produce() -> impl for<'x, 'y, 'z> Trait<'z, 'y, 'x> {}

pub trait Trait<'a, 'b, 'c> {}

impl Trait<'_, '_, '_> for () {}
```

</details>

Further, as the name suggests, CRLBR only collects *referenced* regions and thus we drop unused binders. `bound_vars()` contains unused binders on the other hand. Let's stay closer to the source where possible and keep unused binders.

Lastly, using `bound_vars()` allows us to get rid of

* the deduplication and alphabetical sorting hack in `simplify.rs`
* the weird field `bound_params` on `EqPredicate`

both of which were introduced by me in #102707 back when I didn't know better.

To illustrate, let's look at the cross-crate bound `T: for<'a, 'b> Trait<A<'a> = (), B<'b> = ()>`.

* With CRLBR + `EqPredicate.bound_params`, *before* bounds simplification we would have the bounds `T: Trait`, `for<'a> <T as Trait>::A<'a> == ()` and `for<'b> <T as Trait>::B<'b> == ()` which required us to merge `for<>`, `for<'a>` and `for<'b>` into `for<'a, 'b>` in a deterministic manner and without introducing duplicate binders.
* With `bound_vars()`, we now have the bounds `for<'a, b> T: Trait`, `<T as Trait>::A<'a> == ()` and `<T as Trait>::B<'b> == ()` before bound simplification similar to rustc itself. This obviously no longer requires any funny merging of `for<>`s. On top of that `for<'a, 'b>` is guaranteed to be in source order.
2023-10-04 05:02:06 +02:00
..
auxiliary rustdoc: handle typedef inner type when doing cross-crate inlining 2023-08-26 00:15:02 +02:00
const-generics Render missing fields in tuple struct/enum as /* private fields */ 2023-09-06 11:16:05 +02:00
deref
duplicate_impls
generic-associated-types
inline_cross rustdoc: add support for cross-crate higher-ranked types 2023-10-03 17:41:25 +02:00
inline_local
intra-doc Still resolving rustdoc resolution panicking 2023-08-18 15:19:17 +08:00
intra-doc-crate
notable-trait
primitive
src-links
synthetic_auto
test_option_check
alias-reexport2.rs Mark lazy_type_alias as incomplete 2023-07-29 19:47:15 +00:00
alias-reexport.rs Mark lazy_type_alias as incomplete 2023-07-29 19:47:15 +00:00
all.rs
anchor-id-trait-method-15169.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
anchors.no_const_anchor2.html
anchors.no_const_anchor.html
anchors.no_method_anchor.html
anchors.no_trait_method_anchor.html
anchors.no_tymethod_anchor.html
anchors.no_type_anchor2.html
anchors.no_type_anchor.html
anchors.rs
anonymous-lifetime.rs
anonymous-reexport.rs
array-links.link_box_generic.html
array-links.link_box_u32.html
array-links.link_slice_generic.html
array-links.link_slice_u32.html
array-links.rs
asm-foreign2.rs
asm-foreign.rs
assoc-consts-version.rs
assoc-consts.rs
assoc-item-cast.rs
assoc-type-bindings-20646.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
assoc-types.rs
associated-consts.rs
async-fn-opaque-item.rs
async-fn.rs
async-move-doctest.rs
async-trait-sig.rs
async-trait.rs
attribute-rendering.rs
attributes.rs
auto_aliases.rs
auto-impl-for-trait.rs
auto-impl-primitive.rs
auto-trait-not-send.rs
auto-traits.rs
bad-codeblock-syntax.rs
blanket-reexport-item.rs
bounds-in-multiple-parts.rs
cap-lints.rs
cfg_doc_reexport.rs
cfg-doctest.rs
check-source-code-urls-to-def-std.rs
check-source-code-urls-to-def.rs
check-styled-link.rs
check.rs
codeblock-title.rs
comment-in-doctest.rs
compiler-derive-proc-macro.rs
const-display.rs
const-doc.rs
const-fn.rs
const-intrinsic.rs
const-underscore.rs
const-value-display.rs
const.rs
constructor-imports.rs
crate-version-escape.rs
crate-version.rs
cross-crate-hidden-assoc-trait-items.rs
cross-crate-hidden-impl-parameter.rs
cross-crate-links.rs
cross-crate-primitive-doc.rs
custom_code_classes.rs Implement new eBNF for codeblock attributes 2023-09-15 21:32:28 +02:00
decl_macro_priv.rs
decl_macro.rs
decl-line-wrapping-empty-arg-list.decl.html
decl-line-wrapping-empty-arg-list.rs
decl-trailing-whitespace.declaration.html
decl-trailing-whitespace.rs
deep-structures.rs
default-impl.rs
default-theme.rs
default-trait-method-link.rs
default-trait-method.rs
deprecated-future-staged-api.rs
deprecated-future.rs
deprecated-impls.rs
deprecated.rs
deref-methods-19190-foreign-type.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
deref-methods-19190-inline.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
deref-methods-19190.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
description_default.rs
description.rs Add check-pass tests and fix test behavior 2023-08-18 15:19:18 +08:00
display-hidden-items.rs
doc_auto_cfg_nested_impl.rs
doc-assoc-item.rs
doc-auto-cfg.rs
doc-cfg-hide.rs
doc-cfg-implicit-gate.rs
doc-cfg-implicit.rs
doc-cfg-simplification.rs
doc-cfg-target-feature.rs
doc-cfg-traits.rs
doc-cfg.rs
doc-hidden-method-13698.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
doc-proc-macro.rs
doc-test-attr-18199.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
doctest-manual-crate-name.rs
document-hidden-items-15347.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
document-item-with-associated-const-in-where-clause.rs
double-hyphen-to-dash.rs
double-quote-escape.rs
duplicate-cfg.rs
duplicate-flags.rs
duplicated_impl.rs
early-unindent.rs
edition-doctest.rs
edition-flag.rs
elided-lifetime.rs
empty-doc-comment.rs
empty-impl-block-private-with-doc.rs
empty-impl-block-private.rs
empty-impl-block.rs
empty-impls.rs
empty-mod-private.rs
empty-mod-public.rs
empty-section.rs
ensure-src-link.rs
enum-headings.rs
extern-default-method.no_href_on_anchor.html
extern-default-method.rs
extern-html-root-url-precedence.rs
extern-html-root-url.rs
extern-impl-trait.rs rustdoc: fix cross-crate impl-Sized 2023-07-26 02:11:35 +02:00
extern-impl.rs
extern-links.rs
extern-method.rs
external-cross.rs
external-doc.rs
external-macro-src.rs
feature-gate-doc_auto_cfg.rs
ffi.rs
files-creation-hidden.rs
files-creation-private.rs
fn-bound.rs
fn-pointer-arg-name.rs
fn-sidebar.rs
fn-type.rs
footnote-in-summary.rs
force-target-feature.rs
foreigntype-reexport.rs
foreigntype.rs
generic_const_exprs.rs
generic-const-items.rs Add rustdoc tests for generic const items 2023-07-28 22:23:21 +02:00
generic-impl.rs
glob-shadowing-const.rs
glob-shadowing.rs
hidden-impls.rs
hidden-line.rs
hidden-methods.rs
hidden-private.rs
hidden-trait-methods-with-document-hidden-items.rs
hidden-trait-methods.rs
hidden-trait-struct-impls.rs
hide-complex-unevaluated-const-arguments.rs
hide-complex-unevaluated-consts.rs
hide-unstable-trait.rs
higher-ranked-trait-bounds.rs
highlight-invalid-rust-12834.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
html-no-source.rs Add test for --no-html-source flag 2023-08-23 15:54:04 +02:00
ice-type-error-19181.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
impl-alias-substituted.rs
impl-box.rs
impl-disambiguation.rs
impl-everywhere.rs rustdoc: fix cross-crate impl-Sized 2023-07-26 02:11:35 +02:00
impl-in-const-block.rs
impl-parts-crosscrate.rs
impl-parts.rs
impl-ref-20175.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
impl-trait-alias.rs
implementor-stable-version.rs
impossible-default.rs
include_str_cut.rs
index-page.rs
infinite-redirection-16265-1.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
infinite-redirection-16265-2.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
infinite-redirection.rs
inherent-projections.rs Handle inherent associated types fallout 2023-08-03 02:18:52 +02:00
inline-assoc-type-20727-bindings.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
inline-assoc-type-20727-bounds-deref.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
inline-assoc-type-20727-bounds-index.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
inline-assoc-type-20727-bounds.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
inline-default-methods.rs
inline-private-with-intermediate-doc-hidden.rs
internal.rs
invalid.crate.name.rs
issue-21092.rs
issue-21474.rs
issue-21801.rs
issue-22025.rs
issue-22038.rs
issue-23106.rs
issue-23207.rs
issue-23511.rs
issue-23744.rs
issue-23812.rs
issue-25001.rs
issue-25944.rs
issue-26606.rs
issue-26995.rs
issue-27104.rs
issue-27362.rs
issue-27759.rs
issue-27862.rs
issue-28478.rs
issue-28927.rs
issue-29449.rs
issue-29503.rs
issue-29584.rs
issue-30109.rs
issue-30252.rs
issue-30366.rs
issue-31808.rs
issue-31899.rs
issue-32077-type-alias-impls.rs Add test for the presence of "Aliased type" title in the sidebar 2023-09-11 14:17:39 +02:00
issue-32374.rs
issue-32395.rs
issue-32556.rs
issue-32890.rs
issue-33069.rs
issue-33178-1.rs
issue-33178.rs fix doc links on extern crate items 2023-07-22 12:27:25 +02:00
issue-33302.rs
issue-33592.rs
issue-34025.rs
issue-34274.rs
issue-34423.rs
issue-34473.rs
issue-34928.rs
issue-35169-2.rs
issue-35169.rs
issue-35488.rs
issue-36031.rs
issue-38129.rs
issue-38219.rs
issue-40936.rs
issue-41783.codeblock.html
issue-41783.rs
issue-42760.rs
issue-43153.rs
issue-43701.rs
issue-43869.rs
issue-43893.rs
issue-45584.rs
issue-46271.rs
issue-46377.rs
issue-46380-2.rs
issue-46506-pub-reexport-of-pub-reexport.rs
issue-46727.rs
issue-46766.rs
issue-46767.rs
issue-46976.rs
issue-47038.rs
issue-47197-blank-line-in-doc-block.rs
issue-47639.rs
issue-48377.rs
issue-48414.rs
issue-50159.rs
issue-51236.rs
issue-52873.rs
issue-53689.rs
issue-53812.rs
issue-54478-demo-allocator.rs
issue-54705.rs
issue-55001.rs
issue-55321.rs
issue-55364.rs
issue-56701.rs
issue-56822.rs
issue-57180.rs
issue-60482.rs
issue-60522-duplicated-glob-reexport.rs
issue-60726.rs
issue-61592.rs
issue-67851-both.rs
issue-67851-hidden.rs
issue-67851-neither.rs
issue-67851-private.rs
issue-72340.rs
issue-73061-cross-crate-opaque-assoc-type.rs
issue-74083.rs
issue-75588.rs
issue-76501.rs
issue-78673.rs
issue-78701.rs
issue-79201.rs
issue-80233-normalize-auto-trait.rs
issue-81141-private-reexport-in-public-api-2.rs Correctly handle super and :: 2023-07-24 17:07:57 +02:00
issue-81141-private-reexport-in-public-api-generics.rs Add regression test for generics reexport of private import 2023-07-24 17:07:57 +02:00
issue-81141-private-reexport-in-public-api-hidden.rs Add test for --document-hidden-items 2023-07-24 17:07:57 +02:00
issue-81141-private-reexport-in-public-api-private.rs Add test for private items 2023-07-24 17:07:57 +02:00
issue-81141-private-reexport-in-public-api.rs Correctly handle super and :: 2023-07-24 17:07:57 +02:00
issue-82465-asref-for-and-of-local.rs
issue-83375-multiple-mods-w-same-name-doc-inline-last-item.rs
issue-83375-multiple-mods-w-same-name-doc-inline.rs
issue-85454.rs
issue-86620.rs
issue-88600.rs Render missing fields in tuple struct/enum as /* private fields */ 2023-09-06 11:16:05 +02:00
issue-89309-heading-levels.rs
issue-89852.rs
issue-94183-blanket-impl-reexported-trait.rs
issue-95633.rs
issue-95873.rs
issue-96381.rs
issue-98697.rs
issue-99221-multiple-macro-rules-w-same-name-submodule.rs
issue-99221-multiple-macro-rules-w-same-name.rs
issue-99221-multiple-structs-w-same-name.rs
issue-99734-multiple-foreigns-w-same-name.rs
issue-99734-multiple-mods-w-same-name.rs
issue-100204-inline-impl-through-glob-import.rs
issue-100241.rs
issue-100620.rs
issue-101743-bold-tag.rs
issue-102154.rs
issue-105735-overlapping-reexport-2.rs rustdoc: Rename "Type Definition" to "Type Alias" 2023-08-21 12:53:39 -07:00
issue-105735-overlapping-reexport.rs
issue-105952.rs
issue-106142.rs
issue-107350.rs
issue-107995.rs
issue-108231.rs
issue-108281.rs
issue-108679-reexport-of-reexport.rs
issue-108925.rs
issue-108931-anonymous-reexport.rs
issue-109258-missing-private-inlining.rs
issue-109449-doc-hidden-reexports.rs rustdoc: Rename "Type Definition" to "Type Alias" 2023-08-21 12:53:39 -07:00
issue-109695-crate-doc-hidden.rs
issue-110422-inner-private.rs
issue-110629-private-type-cycle.rs
issue-111064-reexport-trait-from-hidden-2.rs
issue-111064-reexport-trait-from-hidden.rs
issue-111249-file-creation.rs
issue-112515-impl-ty-alias.rs
issue-113982-doc_auto_cfg-reexport-foreign.rs Add regression test for #113982 2023-07-24 16:32:06 +02:00
item-desc-list-at-start.item-table.html
item-desc-list-at-start.rs
jump-to-def-doc-links.rs
keyword.rs
legacy-const-generic.rs
lifetime-name.rs
line-breaks.rs
link-assoc-const.rs
link-title-escape.rs
local-reexport-doc.rs
logo-class-default.rs
logo-class.rs
macro_pub_in_module.rs
macro_rules-matchers.rs
macro-document-private-duplicate.rs
macro-document-private.rs
macro-generated-macro.macro_linebreak_pre.html
macro-generated-macro.macro_morestuff_pre.html
macro-generated-macro.rs
macro-higher-kinded-function.rs
macro-ice-16019.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
macro-in-async-block.rs
macro-in-closure.rs
macro-indirect-use.rs
macro-private-not-documented.rs
macros.rs
manual_impl.rs
masked.rs
method-link-foreign-trait-impl-17476.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
method-list.rs
mixing-doc-comments-and-attrs.rs
mixing-doc-comments-and-attrs.S1_top-doc.html
mixing-doc-comments-and-attrs.S2_top-doc.html
mixing-doc-comments-and-attrs.S3_top-doc.html
mod-stackoverflow.rs
module-impls.rs
multiple-import-levels.rs
must_implement_one_of.rs
mut-params.rs
namespaces.rs
negative-impl-sidebar.rs
negative-impl.rs
nested-items-issue-111415.rs
nested-modules.rs
no_std-primitive.rs
no-compiler-reexport.rs
no-run-still-checks-lints.rs
no-stack-overflow-25295.rs
no-unit-struct-field.rs
non_lifetime_binders.rs
normalize-assoc-item.rs
not-wf-ambiguous-normalization.rs
nul-error.rs
playground-arg.rs
playground-empty.rs
playground-none.rs
playground-syntax-error.rs
playground.rs
primitive-link.rs
primitive-raw-pointer-dox-15318-3.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
primitive-raw-pointer-link-15318.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
primitive-raw-pointer-link-no-inlined-15318-2.rs rustdoc: add URLs for test issues 2023-09-27 17:22:18 -07:00
primitive-reexport.rs
primitive-reference.rs
primitive-slice-auto-trait.rs
primitive-tuple-auto-trait.rs
primitive-tuple-variadic.rs
primitive-unit-auto-trait.rs
private-fields-tuple-struct.rs Add regression test for private fields in tuple struct 2023-09-06 13:26:56 +02:00
private-type-alias.rs
private-use.rs Fix regression for private in public 2023-07-26 15:29:45 +02:00
proc-macro.rs
process-termination.rs
pub-extern-crate.rs
pub-method.rs
pub-use-extern-macros.rs
range-arg-pattern.rs
raw-ident-eliminate-r-hashtag.rs
read-more-unneeded.rs
recursion1.rs
recursion2.rs
recursion3.rs
redirect-const.rs
redirect-map-empty.rs
redirect-map.rs
redirect-rename.rs
redirect.rs
reexport-attr-merge.rs
reexport-check.rs
reexport-dep-foreign-fn.rs
reexport-doc-hidden-inside-private.rs
reexport-doc-hidden.rs
reexport-doc.rs
reexport-hidden-macro.rs
reexport-macro.rs
reexport-of-doc-hidden.rs
reexport-stability-tags-deprecated-and-portability.rs
reexport-stability-tags-unstable-and-portability.rs
reexports-of-same-name.rs
reexports-priv.rs
reexports.rs
remove-duplicates.rs
remove-url-from-headings.rs
return-impl-trait.rs
rfc-2632-const-trait-impl.rs fix rustdoc tests 2023-09-20 03:02:14 +00:00
rustc-incoherent-impls.rs
rustc-macro-crate.rs
safe-intrinsic.rs
same-crate-hidden-impl-parameter.rs
sanitizer-option.rs
search-index-summaries.rs
search-index.rs
short-docblock-codeblock.rs
short-docblock.rs
short-line.md
show-const-contents.rs Reuse const rendering from rustdoc in rmeta encoding 2023-09-01 17:22:48 -04:00
sidebar-all-page.rs rustdoc: Rename "Type Definition" to "Type Alias" 2023-08-21 12:53:39 -07:00
sidebar-items.rs
sidebar-link-generation.rs
sidebar-links-to-foreign-impl.rs
sized_trait.rs
slice-links.link_box_generic.html
slice-links.link_box_u32.html
slice-links.link_slice_generic.html
slice-links.link_slice_u32.html
slice-links.rs
smart-punct.rs
smoke.rs
sort-modules-by-appearance.rs
source-file.rs
source-version-separator.rs
src-links-auto-impls.rs
src-links-external.rs
src-links.rs
stability.rs
static-root-path.rs
static.rs
strip-block-doc-comments-stars.docblock.html
strip-block-doc-comments-stars.rs
strip-enum-variant.no-not-shown.html
strip-enum-variant.rs
struct-arg-pattern.rs
struct-field.rs
struct-implementations-title.rs
structfields.rs
tab_title.rs
table-in-docblock.rs
task-lists.rs
test-lists.rs
test-parens.rs
test-strikethrough.rs
thread-local-src.rs
titles.rs rustdoc: Rename "Type Definition" to "Type Alias" 2023-08-21 12:53:39 -07:00
toggle-item-contents.rs
toggle-method.rs
toggle-trait-fn.rs
trait_alias.rs
trait-alias-mention.rs
trait-impl-items-links-and-anchors.rs
trait-impl.rs
trait-self-link.rs
trait-src-link.rs
trait-visibility.rs
traits-in-bodies-private.rs
traits-in-bodies.rs
tuple-struct-fields-doc.rs
tuples.link1_i32.html
tuples.link1_t.html
tuples.link2_i32.html
tuples.link2_t.html
tuples.link2_tu.html
tuples.link_unit.html
tuples.rs
type-layout-flag-required.rs
type-layout.rs
typedef-inner-variants-lazy_type_alias.rs rustdoc: always print type alias inner type (with it's where clauses) 2023-08-28 14:03:33 +02:00
typedef-inner-variants.rs rustdoc: always print type alias inner type (with it's where clauses) 2023-08-28 14:03:33 +02:00
typedef.rs
unindent.md
unindent.rs
union-fields-html.rs
union.rs
unit-return.rs
universal-impl-trait.rs
unneeded-trait-implementations-title.rs
use-attr.rs
useless_lifetime_bound.rs
variadic.rs
version-separator-without-source.rs
viewpath-rename.rs
viewpath-self.rs
visibility.rs
where-clause-order.rs
where-sized.rs
where.alpha_trait_decl.html Render missing fields in tuple struct/enum as /* private fields */ 2023-09-06 11:16:05 +02:00
where.bravo_trait_decl.html
where.charlie_fn_decl.html
where.golf_type_alias_decl.html
where.rs Render missing fields in tuple struct/enum as /* private fields */ 2023-09-06 11:16:05 +02:00
where.SWhere_Echo_impl.html
where.SWhere_Simd_item-decl.html Render missing fields in tuple struct/enum as /* private fields */ 2023-09-06 11:16:05 +02:00
where.SWhere_TraitWhere_item-decl.html
whitespace-after-where-clause.enum2.html
whitespace-after-where-clause.enum.html
whitespace-after-where-clause.rs
whitespace-after-where-clause.struct2.html
whitespace-after-where-clause.struct.html
whitespace-after-where-clause.trait2.html
whitespace-after-where-clause.trait.html
whitespace-after-where-clause.union2.html
whitespace-after-where-clause.union.html
without-redirect.rs
wrapping.rs