From 11b7677f0672ff1970e6e0facbd4ede4823bce01 Mon Sep 17 00:00:00 2001 From: malezjaa Date: Sat, 19 Sep 2026 19:20:48 +0200 Subject: [PATCH 1/3] make ice hook respect color config --- compiler/rustc_driver_impl/src/lib.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs index 9b1f43156522e..3e673a6c1aa45 100644 --- a/compiler/rustc_driver_impl/src/lib.rs +++ b/compiler/rustc_driver_impl/src/lib.rs @@ -203,6 +203,7 @@ pub fn compiler_entrypoint(at_args: &[String], callbacks: &mut (dyn Callbacks + let sopts = config::build_session_options(&mut default_early_dcx, &matches, warn_unspecified_edition); let ice_file = ice_path_with_config(Some(&sopts.unstable_opts)).clone(); + let _ = ICE_COLOR.set(sopts.color); if let Some(ref code) = matches.opt_str("explain") { handle_explain(&default_early_dcx, code, sopts.color); @@ -1395,6 +1396,7 @@ pub fn catch_with_exit_code(f: impl FnOnce() -> T) -> ExitCode { } } +static ICE_COLOR: OnceLock = OnceLock::new(); static ICE_PATH: OnceLock> = OnceLock::new(); // This function should only be called from the ICE hook. @@ -1541,9 +1543,10 @@ fn report_ice( extra_info: fn(DiagCtxtHandle<'_>), using_internal_features: &AtomicBool, ) { + let color = ICE_COLOR.get().copied().unwrap_or(ColorConfig::Auto); let emitter = Box::new(rustc_errors::annotate_snippet_emitter_writer::AnnotateSnippetEmitter::new( - stderr_destination(rustc_errors::ColorConfig::Auto), + stderr_destination(color), )); let dcx = DiagCtxt::new(emitter); let dcx = dcx.handle(); From 5ff5dd09044697506f48466c993bd98fc20ca64a Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sat, 17 Oct 2026 15:34:56 +0200 Subject: [PATCH 2/3] More `tests/rustdoc-html` cleanup --- tests/rustdoc-html/README.md | 4 ++++ .../{ => display}/array-links.link_box_generic.html | 0 .../rustdoc-html/{ => display}/array-links.link_box_u32.html | 0 .../{ => display}/array-links.link_slice_generic.html | 0 .../{ => display}/array-links.link_slice_u32.html | 0 tests/rustdoc-html/{ => display}/array-links.rs | 0 .../rustdoc-html/{ => trait}/auxiliary/ext-trait-aliases.rs | 0 tests/rustdoc-html/{ => trait}/auxiliary/trait-visibility.rs | 0 tests/rustdoc-html/{ => trait}/trait-aliases.rs | 0 tests/rustdoc-html/{ => trait}/trait-item-info.rs | 0 tests/rustdoc-html/{ => trait}/trait-read-more-161300.rs | 0 .../{ => trait}/trait-rustc_must_implement_one_of.rs | 0 tests/rustdoc-html/{ => trait}/trait-self-link.rs | 0 tests/rustdoc-html/{ => trait}/trait-src-link.rs | 5 +++-- tests/rustdoc-html/{ => trait}/trait-visibility.rs | 0 tests/rustdoc-html/{ => trait}/traits-in-bodies.rs | 0 16 files changed, 7 insertions(+), 2 deletions(-) rename tests/rustdoc-html/{ => display}/array-links.link_box_generic.html (100%) rename tests/rustdoc-html/{ => display}/array-links.link_box_u32.html (100%) rename tests/rustdoc-html/{ => display}/array-links.link_slice_generic.html (100%) rename tests/rustdoc-html/{ => display}/array-links.link_slice_u32.html (100%) rename tests/rustdoc-html/{ => display}/array-links.rs (100%) rename tests/rustdoc-html/{ => trait}/auxiliary/ext-trait-aliases.rs (100%) rename tests/rustdoc-html/{ => trait}/auxiliary/trait-visibility.rs (100%) rename tests/rustdoc-html/{ => trait}/trait-aliases.rs (100%) rename tests/rustdoc-html/{ => trait}/trait-item-info.rs (100%) rename tests/rustdoc-html/{ => trait}/trait-read-more-161300.rs (100%) rename tests/rustdoc-html/{ => trait}/trait-rustc_must_implement_one_of.rs (100%) rename tests/rustdoc-html/{ => trait}/trait-self-link.rs (100%) rename tests/rustdoc-html/{ => trait}/trait-src-link.rs (88%) rename tests/rustdoc-html/{ => trait}/trait-visibility.rs (100%) rename tests/rustdoc-html/{ => trait}/traits-in-bodies.rs (100%) diff --git a/tests/rustdoc-html/README.md b/tests/rustdoc-html/README.md index b681a7e9d4d8e..31657403f2858 100644 --- a/tests/rustdoc-html/README.md +++ b/tests/rustdoc-html/README.md @@ -156,6 +156,10 @@ Same as `tests/rustdoc-html/enum` but for struct items. Somewhat equivalent to the `auto` folder's tests. Both should likely be merged. +## `tests/rustdoc-html/trait` + +Same as `tests/rustdoc-html/enum` but for trait items. + ## `tests/rustdoc-html/typedef` Contains tests checking type aliases (`type X = Y`) rendering. In particular when the diff --git a/tests/rustdoc-html/array-links.link_box_generic.html b/tests/rustdoc-html/display/array-links.link_box_generic.html similarity index 100% rename from tests/rustdoc-html/array-links.link_box_generic.html rename to tests/rustdoc-html/display/array-links.link_box_generic.html diff --git a/tests/rustdoc-html/array-links.link_box_u32.html b/tests/rustdoc-html/display/array-links.link_box_u32.html similarity index 100% rename from tests/rustdoc-html/array-links.link_box_u32.html rename to tests/rustdoc-html/display/array-links.link_box_u32.html diff --git a/tests/rustdoc-html/array-links.link_slice_generic.html b/tests/rustdoc-html/display/array-links.link_slice_generic.html similarity index 100% rename from tests/rustdoc-html/array-links.link_slice_generic.html rename to tests/rustdoc-html/display/array-links.link_slice_generic.html diff --git a/tests/rustdoc-html/array-links.link_slice_u32.html b/tests/rustdoc-html/display/array-links.link_slice_u32.html similarity index 100% rename from tests/rustdoc-html/array-links.link_slice_u32.html rename to tests/rustdoc-html/display/array-links.link_slice_u32.html diff --git a/tests/rustdoc-html/array-links.rs b/tests/rustdoc-html/display/array-links.rs similarity index 100% rename from tests/rustdoc-html/array-links.rs rename to tests/rustdoc-html/display/array-links.rs diff --git a/tests/rustdoc-html/auxiliary/ext-trait-aliases.rs b/tests/rustdoc-html/trait/auxiliary/ext-trait-aliases.rs similarity index 100% rename from tests/rustdoc-html/auxiliary/ext-trait-aliases.rs rename to tests/rustdoc-html/trait/auxiliary/ext-trait-aliases.rs diff --git a/tests/rustdoc-html/auxiliary/trait-visibility.rs b/tests/rustdoc-html/trait/auxiliary/trait-visibility.rs similarity index 100% rename from tests/rustdoc-html/auxiliary/trait-visibility.rs rename to tests/rustdoc-html/trait/auxiliary/trait-visibility.rs diff --git a/tests/rustdoc-html/trait-aliases.rs b/tests/rustdoc-html/trait/trait-aliases.rs similarity index 100% rename from tests/rustdoc-html/trait-aliases.rs rename to tests/rustdoc-html/trait/trait-aliases.rs diff --git a/tests/rustdoc-html/trait-item-info.rs b/tests/rustdoc-html/trait/trait-item-info.rs similarity index 100% rename from tests/rustdoc-html/trait-item-info.rs rename to tests/rustdoc-html/trait/trait-item-info.rs diff --git a/tests/rustdoc-html/trait-read-more-161300.rs b/tests/rustdoc-html/trait/trait-read-more-161300.rs similarity index 100% rename from tests/rustdoc-html/trait-read-more-161300.rs rename to tests/rustdoc-html/trait/trait-read-more-161300.rs diff --git a/tests/rustdoc-html/trait-rustc_must_implement_one_of.rs b/tests/rustdoc-html/trait/trait-rustc_must_implement_one_of.rs similarity index 100% rename from tests/rustdoc-html/trait-rustc_must_implement_one_of.rs rename to tests/rustdoc-html/trait/trait-rustc_must_implement_one_of.rs diff --git a/tests/rustdoc-html/trait-self-link.rs b/tests/rustdoc-html/trait/trait-self-link.rs similarity index 100% rename from tests/rustdoc-html/trait-self-link.rs rename to tests/rustdoc-html/trait/trait-self-link.rs diff --git a/tests/rustdoc-html/trait-src-link.rs b/tests/rustdoc-html/trait/trait-src-link.rs similarity index 88% rename from tests/rustdoc-html/trait-src-link.rs rename to tests/rustdoc-html/trait/trait-src-link.rs index 7bf883d52da1e..8dacd8eae7002 100644 --- a/tests/rustdoc-html/trait-src-link.rs +++ b/tests/rustdoc-html/trait/trait-src-link.rs @@ -12,15 +12,16 @@ pub struct Bar; impl Foo for Bar { //@ has quix/struct.Bar.html '//a[@href="../src/quix/trait-src-link.rs.html#14"]' 'Source' fn required() {} + // For the `provided` method. //@ has quix/struct.Bar.html '//a[@href="../src/quix/trait-src-link.rs.html#7"]' 'Source' } pub struct Baz; impl Foo for Baz { - //@ has quix/struct.Baz.html '//a[@href="../src/quix/trait-src-link.rs.html#22"]' 'Source' + //@ has quix/struct.Baz.html '//a[@href="../src/quix/trait-src-link.rs.html#23"]' 'Source' fn required() {} - //@ has quix/struct.Baz.html '//a[@href="../src/quix/trait-src-link.rs.html#25"]' 'Source' + //@ has quix/struct.Baz.html '//a[@href="../src/quix/trait-src-link.rs.html#26"]' 'Source' fn provided() {} } diff --git a/tests/rustdoc-html/trait-visibility.rs b/tests/rustdoc-html/trait/trait-visibility.rs similarity index 100% rename from tests/rustdoc-html/trait-visibility.rs rename to tests/rustdoc-html/trait/trait-visibility.rs diff --git a/tests/rustdoc-html/traits-in-bodies.rs b/tests/rustdoc-html/trait/traits-in-bodies.rs similarity index 100% rename from tests/rustdoc-html/traits-in-bodies.rs rename to tests/rustdoc-html/trait/traits-in-bodies.rs From 877faf380b31fcba64f7098d06d2a23aebb2d7f5 Mon Sep 17 00:00:00 2001 From: Shoyu Vanilla Date: Sun, 18 Oct 2026 16:06:00 +0900 Subject: [PATCH 3/3] Fix a typo --- src/doc/unstable-book/src/library-features/try-as-dyn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc/unstable-book/src/library-features/try-as-dyn.md b/src/doc/unstable-book/src/library-features/try-as-dyn.md index 81abde709c6dc..60ffc2995e3c9 100644 --- a/src/doc/unstable-book/src/library-features/try-as-dyn.md +++ b/src/doc/unstable-book/src/library-features/try-as-dyn.md @@ -37,7 +37,7 @@ The most obvious one: if you have `impl IsStatic for &'static str`, then determi ### Each outlives `where` bound (`Type: 'a` and `'a: 'b`) does not mention lifetime-infected parameters. Parameters are considered lifetime-infected if they are defined in an `impl` block's generic parameter list. -Const generics are excempt, as they can't affect lifetimes. +Const generics are exempt, as they can't affect lifetimes. `for<'a>` lifetimes (and in the future types) are not lifetime-infected. We can create lifetime discrimination this way. For instance, given `impl<'a, 'b> Outlives<'a> for &'b str where 'b : 'a {}`, `Outlives<'static>` amounts to `IsStatic` from previous bullet.