diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-02-05 06:37:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-05 06:37:17 +0100 |
| commit | a2d3eed58dfedd7b9e3870c88efa1208e4994f40 (patch) | |
| tree | 6d7bbdb48661324fa30bd32660605f1ad28c96c8 | |
| parent | bc98f5795b0c78f1e2f4b9a4497b962fb29ad836 (diff) | |
| parent | cb4e69ad67cd795ffcff18494c41d2f13c26904f (diff) | |
| download | rust-a2d3eed58dfedd7b9e3870c88efa1208e4994f40.tar.gz rust-a2d3eed58dfedd7b9e3870c88efa1208e4994f40.zip | |
Rollup merge of #120641 - klensy:copypaste-me, r=notriddle
rustdoc: trait.impl, type.impl: sort impls to make it not depend on serialization order Can be tested by running `cargo doc` with different rust versions on some crate and comparing `doc` folders: files in `trait.impl` and `type.impl` will sometimes have different order of impls.
| -rw-r--r-- | src/librustdoc/html/render/write_shared.rs | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs index 6408e97df50..fbd45b2b48e 100644 --- a/src/librustdoc/html/render/write_shared.rs +++ b/src/librustdoc/html/render/write_shared.rs @@ -593,11 +593,17 @@ else if (window.initSearch) window.initSearch(searchIndex); ret }) .collect::<Vec<_>>(); - let impls = format!( - r#""{}":{}"#, - krate.name(cx.tcx()), - serde_json::to_string(&impls).expect("failed serde conversion"), - ); + + // FIXME: this fixes only rustdoc part of instability of trait impls + // for js files, see #120371 + // Manually collect to string and sort to make list not depend on order + let mut impls = impls + .iter() + .map(|i| serde_json::to_string(i).expect("failed serde conversion")) + .collect::<Vec<_>>(); + impls.sort(); + + let impls = format!(r#""{}":[{}]"#, krate.name(cx.tcx()), impls.join(",")); let mut mydst = dst.clone(); for part in &aliased_type.target_fqp[..aliased_type.target_fqp.len() - 1] { @@ -702,11 +708,16 @@ else if (window.initSearch) window.initSearch(searchIndex); continue; } - let implementors = format!( - r#""{}":{}"#, - krate.name(cx.tcx()), - serde_json::to_string(&implementors).expect("failed serde conversion"), - ); + // FIXME: this fixes only rustdoc part of instability of trait impls + // for js files, see #120371 + // Manually collect to string and sort to make list not depend on order + let mut implementors = implementors + .iter() + .map(|i| serde_json::to_string(i).expect("failed serde conversion")) + .collect::<Vec<_>>(); + implementors.sort(); + + let implementors = format!(r#""{}":[{}]"#, krate.name(cx.tcx()), implementors.join(",")); let mut mydst = dst.clone(); for part in &remote_path[..remote_path.len() - 1] { |
