diff options
| author | klensy <klensy@users.noreply.github.com> | 2024-02-04 15:11:16 +0300 |
|---|---|---|
| committer | klensy <klensy@users.noreply.github.com> | 2024-02-04 16:44:37 +0300 |
| commit | cb4e69ad67cd795ffcff18494c41d2f13c26904f (patch) | |
| tree | ae3f86bb6e6e09aa7523b09c062818ad5c8c103b /src/librustdoc/html/render | |
| parent | c401f099795231fca8adf6619d76ccdcfbbfd2f9 (diff) | |
| download | rust-cb4e69ad67cd795ffcff18494c41d2f13c26904f.tar.gz rust-cb4e69ad67cd795ffcff18494c41d2f13c26904f.zip | |
rustdoc: trait.impl, type.impl: sort impls to make it not depend on serialization order
Diffstat (limited to 'src/librustdoc/html/render')
| -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] { |
