Skip to content

Conversation

@GuillaumeGomez
Copy link
Member

This enables the --generate-macro-expansion rustdoc flag, generating possibility to expand macros directly in source code pages (#137229).

Needed this new feature when I was working on #149919 and I thought "why not enable it by default?". So here we go.

Not too sure who to r? here so:

r? @Kobzol

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Dec 15, 2025
@rustbot
Copy link
Collaborator

rustbot commented Dec 15, 2025

Failed to set assignee to here: invalid assignee

Note: Only org members with at least the repository "read" role, users with write permissions, or people who have commented on the PR may be assigned.

@GuillaumeGomez
Copy link
Member Author

Huuuum. Interesting.

r? kobzol

@rustbot
Copy link
Collaborator

rustbot commented Dec 15, 2025

kobzol is not on the review rotation at the moment.
They may take a while to respond.

Copy link
Member

@Kobzol Kobzol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's test it on rustc.

View changes since this review

@Kobzol
Copy link
Member

Kobzol commented Dec 15, 2025

@bors r+

@bors
Copy link
Collaborator

bors commented Dec 15, 2025

📌 Commit 4cfe4fb has been approved by Kobzol

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Dec 15, 2025
Zalathar added a commit to Zalathar/rust that referenced this pull request Dec 16, 2025
…on, r=Kobzol

Generate macro expansion for rust compiler crates docs

This enables the `--generate-macro-expansion` rustdoc flag, generating possibility to expand macros directly in source code pages (rust-lang#137229).

Needed this new feature when I was working on rust-lang#149919 and I thought "why not enable it by default?". So here we go.

Not too sure who to r? here so:

r? `@kobzol`
bors added a commit that referenced this pull request Dec 16, 2025
Rollup of 14 pull requests

Successful merges:

 - #148756 (Warn on codegen attributes on required trait methods)
 - #148790 (Add new Tier-3 target: riscv64im-unknown-none-elf)
 - #149271 (feat: dlopen Enzyme)
 - #149459 (std: sys: fs: uefi: Implement set_times and set_perm)
 - #149771 (bootstrap readme: make easy to read when editor wrapping is not enabled)
 - #149856 (Provide an extended framework for type visit, for use in rust-analyzer)
 - #149950 (Simplify how inline asm handles `MaybeUninit`)
 - #150014 (Metadata loader cleanups)
 - #150021 (document that mpmc channels deliver an item to (at most) one receiver)
 - #150022 (Generate macro expansion for rust compiler crates docs)
 - #150029 (Update books)
 - #150031 (assert impossible branch is impossible)
 - #150034 (do not add `I-prioritize` when `F-*` labels are present)
 - #150036 (Use the embeddable filename for coverage artifacts)

r? `@ghost`
`@rustbot` modify labels: rollup
@Zalathar
Copy link
Member

Possibly failed in rollup? #150039 (comment)

@bors r-

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Dec 16, 2025
@Zalathar
Copy link
Member

@bors try jobs=dist-x86_64-linux-alt

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Dec 16, 2025
Generate macro expansion for rust compiler crates docs

try-job: dist-x86_64-linux-alt
@rust-log-analyzer
Copy link
Collaborator

The job dist-x86_64-linux-alt failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
   0: __rustc::rust_begin_unwind
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/std/src/panicking.rs:698:5
   1: core::panicking::panic_fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/panicking.rs:80:14
   2: <rustdoc::html::highlight::TokenHandler<core::fmt::Formatter>>::close_original_tag
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/highlight.rs:450:9
   3: rustdoc::html::highlight::end_expansion::<core::fmt::Formatter>
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/highlight.rs:510:19
   4: rustdoc::html::highlight::write_code::<core::fmt::Formatter>::{closure#2}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/highlight.rs:634:45
   5: <rustdoc::html::highlight::Classifier>::advance
   6: rustdoc::html::highlight::classify
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/highlight.rs:918:24
   7: rustdoc::html::highlight::write_code::<core::fmt::Formatter>
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/highlight.rs:605:5
   8: rustdoc::html::sources::print_src::<&mut core::fmt::Formatter>::{closure#0}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/sources.rs:350:9
   9: <core::fmt::builders::FromFn<rustdoc::html::sources::print_src<&mut core::fmt::Formatter>::{closure#0}> as core::fmt::Display>::fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/builders.rs:1260:9
  10: <&core::fmt::builders::FromFn<rustdoc::html::sources::print_src<&mut core::fmt::Formatter>::{closure#0}> as core::fmt::Display>::fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/mod.rs:2659:62
  11: core::fmt::rt::Argument::fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/rt.rs:173:76
  12: core::fmt::write
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/mod.rs:1469:25
  13: core::fmt::Formatter::write_fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/mod.rs:1919:13
  14: <askama::filters::escape::Safe<&core::fmt::builders::FromFn<rustdoc::html::sources::print_src<&mut core::fmt::Formatter>::{closure#0}>> as core::fmt::Display>::fmt
             at /rust/deps/askama-0.14.0/src/filters/escape.rs:420:13
  15: <&askama::filters::escape::Safe<&core::fmt::builders::FromFn<rustdoc::html::sources::print_src<&mut core::fmt::Formatter>::{closure#0}>> as core::fmt::Display>::fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/mod.rs:2659:62
  16: core::fmt::rt::Argument::fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/rt.rs:173:76
  17: core::fmt::write
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/mod.rs:1469:25
  18: <core::fmt::Formatter as core::fmt::Write>::write_fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/mod.rs:2640:13
  19: <&mut core::fmt::Formatter as core::fmt::Write>::write_fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/mod.rs:254:18
  20: <&&&askama::filters::escape::Writable<askama::filters::escape::Safe<&core::fmt::builders::FromFn<rustdoc::html::sources::print_src<&mut core::fmt::Formatter>::{closure#0}>>> as askama::filters::escape::WriteWritable>::askama_write::<&mut core::fmt::Formatter>
             at /rust/deps/askama-0.14.0/src/lib.rs:557:16
  21: <rustdoc::html::sources::Source<core::fmt::builders::FromFn<rustdoc::html::sources::print_src<&mut core::fmt::Formatter>::{closure#0}>> as askama::Template>::render_into_with_values::<&mut core::fmt::Formatter>
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/sources.rs:313:10
  22: <rustdoc::html::sources::Source<core::fmt::builders::FromFn<rustdoc::html::sources::print_src<&mut core::fmt::Formatter>::{closure#0}>> as askama::Template>::render_into::<&mut core::fmt::Formatter>
             at /rust/deps/askama-0.14.0/src/lib.rs:134:14
  23: rustdoc::html::sources::print_src::<&mut core::fmt::Formatter>
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/sources.rs:377:10
  24: <rustdoc::html::sources::SourceCollector>::emit_source::{closure#3}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/sources.rs:249:17
  25: <core::fmt::builders::FromFn<<rustdoc::html::sources::SourceCollector>::emit_source::{closure#3}> as core::fmt::Display>::fmt
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/fmt/builders.rs:1260:9
  26: <core::fmt::builders::FromFn<<rustdoc::html::sources::SourceCollector>::emit_source::{closure#3}> as alloc::string::SpecToString>::spec_to_string
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/alloc/src/string.rs:2890:9
  27: <core::fmt::builders::FromFn<<rustdoc::html::sources::SourceCollector>::emit_source::{closure#3}> as alloc::string::ToString>::to_string
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/alloc/src/string.rs:2869:9
  28: rustdoc::html::layout::render::<core::fmt::builders::FromFn<<rustdoc::html::sources::SourceCollector>::emit_source::{closure#3}>, &str>
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/layout.rs:111:21
  29: <rustdoc::html::sources::SourceCollector>::emit_source
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/sources.rs:244:17
  30: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_item
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/sources.rs:144:55
  31: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_mod::{closure#0}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/visit.rs:66:42
  32: <core::slice::iter::Iter<rustdoc::clean::types::Item> as core::iter::traits::iterator::Iterator>::for_each::<<rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_mod::{closure#0}>
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/slice/iter/macros.rs:277:21
  33: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_mod
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/visit.rs:66:24
  34: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_inner_recur
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/visit.rs:19:22
  35: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_item_recur
  36: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_item
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/sources.rs:162:14
  37: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_mod::{closure#0}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/visit.rs:66:42
  38: <core::slice::iter::Iter<rustdoc::clean::types::Item> as core::iter::traits::iterator::Iterator>::for_each::<<rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_mod::{closure#0}>
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/slice/iter/macros.rs:277:21
  39: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_mod
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/visit.rs:66:24
  40: <rustdoc::html::sources::SourceCollector as rustdoc::visit::DocVisitor>::visit_inner_recur
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/visit.rs:19:22
---
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/sources.rs:32:15
  45: <rustdoc::html::render::context::Context>::init
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/html/render/context.rs:599:13
  46: rustdoc::main_args::{closure#2}::{closure#0}::{closure#2}::{closure#0}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/lib.rs:959:29
  47: rustdoc::formats::renderer::run_format::<rustdoc::html::render::context::Context, rustdoc::main_args::{closure#2}::{closure#0}::{closure#2}::{closure#0}>::{closure#0}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/formats/renderer.rs:115:17
  48: <rustc_data_structures::profiling::VerboseTimingGuard>::run::<core::result::Result<(rustdoc::html::render::context::Context, rustdoc::clean::types::Crate), rustdoc::error::Error>, rustdoc::formats::renderer::run_format<rustdoc::html::render::context::Context, rustdoc::main_args::{closure#2}::{closure#0}::{closure#2}::{closure#0}>::{closure#0}>
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_data_structures/src/profiling.rs:844:9
  49: rustdoc::formats::renderer::run_format::<rustdoc::html::render::context::Context, rustdoc::main_args::{closure#2}::{closure#0}::{closure#2}::{closure#0}>
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/formats/renderer.rs:115:10
  50: rustdoc::run_renderer::<rustdoc::html::render::context::Context, rustdoc::main_args::{closure#2}::{closure#0}::{closure#2}::{closure#0}>
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/lib.rs:736:11
  51: rustdoc::main_args::{closure#2}::{closure#0}::{closure#2}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/lib.rs:953:21
  52: <rustc_data_structures::profiling::VerboseTimingGuard>::run::<(), rustdoc::main_args::{closure#2}::{closure#0}::{closure#2}>
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_data_structures/src/profiling.rs:844:9
  53: <rustc_session::session::Session>::time::<(), rustdoc::main_args::{closure#2}::{closure#0}::{closure#2}>
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_session/src/utils.rs:17:50
  54: rustdoc::main_args::{closure#2}::{closure#0}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/lib.rs:952:52
  55: rustc_interface::passes::create_and_enter_global_ctxt::<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}::{closure#0}
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_interface/src/passes.rs:1020:27
  56: <rustc_middle::ty::context::GlobalCtxt>::enter::<rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}::{closure#0}, ()>::{closure#1}
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_middle/src/ty/context.rs:1651:37
  57: rustc_middle::ty::context::tls::enter_context::<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}::{closure#0}, ()>::{closure#1}, ()>::{closure#0}
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_middle/src/ty/context/tls.rs:60:9
  58: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::try_with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}::{closure#0}, ()>::{closure#1}, ()>::{closure#0}, ()>
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/std/src/thread/local.rs:508:12
  59: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}::{closure#0}, ()>::{closure#1}, ()>::{closure#0}, ()>
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/std/src/thread/local.rs:472:20
  60: rustc_middle::ty::context::tls::enter_context::<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}::{closure#0}, ()>::{closure#1}, ()>
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_middle/src/ty/context/tls.rs:57:9
  61: <rustc_middle::ty::context::GlobalCtxt>::enter::<rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}::{closure#0}, ()>
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_middle/src/ty/context.rs:1651:9
  62: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<(), rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}::{closure#0}>
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_middle/src/ty/context.rs:1858:13
  63: rustc_interface::passes::create_and_enter_global_ctxt::<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2}
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_interface/src/passes.rs:987:9
  64: <rustc_interface::passes::create_and_enter_global_ctxt<(), rustdoc::main_args::{closure#2}::{closure#0}>::{closure#2} as core::ops::function::FnOnce<(&rustc_session::session::Session, rustc_middle::ty::context::CurrentGcx, alloc::sync::Arc<rustc_data_structures::jobserver::Proxy>, &std::sync::once_lock::OnceLock<rustc_middle::ty::context::GlobalCtxt>, &rustc_data_structures::sync::worker_local::WorkerLocal<rustc_middle::arena::Arena>, &rustc_data_structures::sync::worker_local::WorkerLocal<rustc_hir::Arena>, rustdoc::main_args::{closure#2}::{closure#0})>>::call_once::{shim:vtable#0}
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/core/src/ops/function.rs:250:5
  65: <alloc::boxed::Box<dyn for<'a> core::ops::function::FnOnce<(&'a rustc_session::session::Session, rustc_middle::ty::context::CurrentGcx, alloc::sync::Arc<rustc_data_structures::jobserver::Proxy>, &'a std::sync::once_lock::OnceLock<rustc_middle::ty::context::GlobalCtxt<'a>>, &'a rustc_data_structures::sync::worker_local::WorkerLocal<rustc_middle::arena::Arena<'a>>, &'a rustc_data_structures::sync::worker_local::WorkerLocal<rustc_hir::Arena<'a>>, rustdoc::main_args::{closure#2}::{closure#0}), Output = ()>> as core::ops::function::FnOnce<(&rustc_session::session::Session, rustc_middle::ty::context::CurrentGcx, alloc::sync::Arc<rustc_data_structures::jobserver::Proxy>, &std::sync::once_lock::OnceLock<rustc_middle::ty::context::GlobalCtxt>, &rustc_data_structures::sync::worker_local::WorkerLocal<rustc_middle::arena::Arena>, &rustc_data_structures::sync::worker_local::WorkerLocal<rustc_hir::Arena>, rustdoc::main_args::{closure#2}::{closure#0})>>::call_once
             at /rustc/3b4dd9bf1410f8da6329baa36ce5e37673cbbd1f/library/alloc/src/boxed.rs:2005:9
  66: rustc_interface::passes::create_and_enter_global_ctxt::<(), rustdoc::main_args::{closure#2}::{closure#0}>
             at /rustc-dev/0ac0f589a938324f663b8492b7502d21f080aa05/compiler/rustc_interface/src/passes.rs:1028:5
  67: rustdoc::main_args::{closure#2}
             at /rustc/0ac0f589a938324f663b8492b7502d21f080aa05/src/librustdoc/lib.rs:890:9
---
warning: the ICE couldn't be written to `/checkout/rustc-ice-2025-12-16T04_22_39-87591.txt`: Read-only file system (os error 30)

note: rustc 1.94.0-nightly (0ac0f589a 2025-12-16) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type lib -Z unstable-options -C symbol-mangling-version=v0 -Z annotate-moves -Z unstable-options -C linker-features=+lld -C link-self-contained=-linker -Z unstable-options -C linker=clang -Z normalize-docs -Z crate-attr=warn(rust_2018_idioms) -Z force-unstable-if-unmarked -Z crate-attr=doc(rust_logo) -Z crate-attr=doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/") -Z crate-attr=feature(rustdoc_internals)

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack
error: could not document `rustc_mir_build`
warning: build failed, waiting for other jobs to finish...
[RUSTC-TIMING] rustc_borrowck test:false 13.150
[RUSTC-TIMING] rustc_mir_transform test:false 12.747
[RUSTC-TIMING] rustc_hir_typeck test:false 12.086
Bootstrap failed while executing `dist --host x86_64-unknown-linux-gnu --target x86_64-unknown-linux-gnu --include-default-paths build-manifest bootstrap`
Command `/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo doc --target x86_64-unknown-linux-gnu -Zbinary-dep-depinfo -j 8 -Zroot-dir=/checkout --locked --color=always --release --features 'jemalloc llvm' --manifest-path /checkout/compiler/rustc/Cargo.toml -Zskip-rustdoc-fingerprint --no-deps -Zrustdoc-map -p rustc-main -p rustc_abi -p rustc_arena -p rustc_ast -p rustc_ast_ir -p rustc_ast_lowering -p rustc_ast_passes -p rustc_ast_pretty -p rustc_attr_parsing -p rustc_baked_icu_data -p rustc_borrowck -p rustc_builtin_macros -p rustc_codegen_llvm -p rustc_codegen_ssa -p rustc_const_eval -p rustc_data_structures -p rustc_driver -p rustc_driver_impl -p rustc_error_codes -p rustc_error_messages -p rustc_errors -p rustc_expand -p rustc_feature -p rustc_fluent_macro -p rustc_fs_util -p rustc_graphviz -p rustc_hashes -p rustc_hir -p rustc_hir_analysis -p rustc_hir_id -p rustc_hir_pretty -p rustc_hir_typeck -p rustc_incremental -p rustc_index -p rustc_index_macros -p rustc_infer -p rustc_interface -p rustc_lexer -p rustc_lint -p rustc_lint_defs -p rustc_llvm -p rustc_log -p rustc_macros -p rustc_metadata -p rustc_middle -p rustc_mir_build -p rustc_mir_dataflow -p rustc_mir_transform -p rustc_monomorphize -p rustc_next_trait_solver -p rustc_parse -p rustc_parse_format -p rustc_passes -p rustc_pattern_analysis -p rustc_privacy -p rustc_proc_macro -p rustc_public -p rustc_public_bridge -p rustc_query_impl -p rustc_query_system -p rustc_resolve -p rustc_sanitizers -p rustc_serialize -p rustc_session -p rustc_span -p rustc_symbol_mangling -p rustc_target -p rustc_thread_pool -p rustc_trait_selection -p rustc_traits -p rustc_transmute -p rustc_ty_utils -p rustc_type_ir -p rustc_type_ir_macros -p rustc_windows_rc [workdir=/checkout]` failed with exit code 101
Created at: src/bootstrap/src/core/build_steps/doc.rs:916:25
Executed at: src/bootstrap/src/core/build_steps/doc.rs:977:26

Command has failed. Rerun with -v to see more details.
Build completed unsuccessfully in 0:38:17
  local time: Tue Dec 16 04:22:52 UTC 2025
  network time: Tue, 16 Dec 2025 04:22:52 GMT
##[error]Process completed with exit code 1.
##[group]Run echo "disk usage:"

@rust-bors
Copy link

rust-bors bot commented Dec 16, 2025

💔 Test for 0ac0f58 failed: CI. Failed jobs:

@GuillaumeGomez
Copy link
Member Author

GuillaumeGomez commented Dec 16, 2025

Was able to write a minified code to reproduce the bug:

struct Bar {
    bla: bool,
}

macro_rules! f {
    () => {{ false }}
}

const X: Bar = Bar {
    bla: !f!(),
};

Just need to run it with --generate-macro-expansion. I suppose it's yet again a ! issue.

JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Dec 17, 2025
…otamofek

[rustdoc] Fix invalid handling of field followed by negated macro call

This is the bug uncovered in rust-lang#150022. Once fixed Ill rebuild all compiler docs and see if we can enable the option for compiler docs. =D

It's a weird case where we extracted some tokens out of the iterator and then, when checking next items (from this iterator), it didn't find the `:` token, and therefore badly assumed the token kind.

The solution I came up with is to instead not extract tokens from the iterator and to count how many tokens are in the current path. So when iterate over the items, instead of having a mix of extracted tokens and tokens still inside the iterator, we now only iterate over the iterator.

The biggest change here is that `get_full_ident_path` will return an option instead of a `Vec`, and if it's contains `:` (one, not two), then it will return `None` and the `:` will be handled like any token and not like a path (which is more correct imo).

r? `@yotamofek`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants