Skip to content

Add arg splat experiment feature gate and stub#153697

Draft
teor2345 wants to merge 10 commits intorust-lang:mainfrom
teor2345:fn-arg-splat-experiment
Draft

Add arg splat experiment feature gate and stub#153697
teor2345 wants to merge 10 commits intorust-lang:mainfrom
teor2345:fn-arg-splat-experiment

Conversation

@teor2345
Copy link
Contributor

@teor2345 teor2345 commented Mar 11, 2026

This PR is part of the argument splatting lang experiment, and FFI overloading / C++ interop project goals:

Example code using existing unstable features:

Discussion of implementation strategy:

The PR only contains the initial stubs for the feature:

  • splat incomplete feature gate
    • feature gate UI test
  • #[splat] attribute on function arguments
    • only the final argument is supported for now (this is not fully checked)
  • #[splat] function parameter check at THIR level
    • UI tests for item type filtering, non-splattable arguments, splattable tuples, and the "overloading at home" example

Once this PR merges, we can add further functionality, then test it out in interop tools.

TODOs

  • Make splatted argument type inference work when the tuple is a generic
  • Fix the MIR argument count mismatch errors

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Mar 11, 2026
@rustbot
Copy link
Collaborator

rustbot commented Mar 11, 2026

r? @JohnTitor

rustbot has assigned @JohnTitor.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 69 candidates
  • Random selection from 16 candidates

@rust-log-analyzer

This comment has been minimized.

@JohnTitor
Copy link
Member

It should be better for someone on https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/On.20overloading/with/573924937 to review this, @oli-obk could you take over?

@oli-obk oli-obk assigned oli-obk and unassigned JohnTitor Mar 11, 2026
@oli-obk oli-obk added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Mar 12, 2026
@oli-obk
Copy link
Contributor

oli-obk commented Mar 12, 2026

Let's wait for the ongoing discussion on Zulip to figure out whether we need to have a proc macro, an AST manipulating attribute (like define_opaque), or just a normal attribute

@teor2345 teor2345 marked this pull request as draft March 13, 2026 06:49
@rustbot rustbot 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-review Status: Awaiting review from the assignee but also interested parties. labels Mar 13, 2026
@teor2345 teor2345 force-pushed the fn-arg-splat-experiment branch from 89102bf to c784a57 Compare March 16, 2026 07:35
@rustbot rustbot added the A-attributes Area: Attributes (`#[…]`, `#![…]`) label Mar 16, 2026
@teor2345 teor2345 force-pushed the fn-arg-splat-experiment branch from c784a57 to 2d9e563 Compare March 20, 2026 01:37
@rustbot rustbot added the A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. label Mar 20, 2026
@rustbot rustbot added the A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) label Mar 20, 2026
@teor2345
Copy link
Contributor Author

I've implemented the first stage of argument type checking (THIR), but I need help with fixing:

  • type inference when the splatted tuple is generic
  • modifying the caller's arguments so they're tupled (currently the type check passes THIR, but since the caller isn't modified, the MIR argument count check fails)

@rust-log-analyzer

This comment has been minimized.

Copy link
Contributor Author

@teor2345 teor2345 left a comment

Choose a reason for hiding this comment

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

Here's the specific code I need help with.

(I rebased to remove unrelated typo fixes, I'll open a separate PR for those.)

View changes since this review

Comment on lines +295 to +305
let tuple_type = if tuple_arguments.is_splatted() {
let tuple_type = self
.try_structurally_resolve_type(call_span, formal_input_tys[tupled_arg_index]);
if tuple_type.is_ty_var() {
let tuple_len = provided_args.len().checked_sub(tupled_arg_index);
if let Some(tuple_len) = tuple_len {
// FIXME(splat before merging): how do we force the type variable to resolve to (a supertype) of the caller's tupled argument types?
Ty::new_tup_from_iter(
self.tcx,
iter::repeat_with(|| self.next_ty_var(call_span)).take(tuple_len),
)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This works but disables type inference, the old type variable should be inferred as a tuple containing the new type variables.

Comment on lines +342 to +350
// FIXME(splat before merging): if splatting, update the caller's arguments to be a tuple, so MIR typecheck passes
(
formal_input_tys[..tupled_arg_index]
.into_iter()
.cloned()
.chain(arg_types.into_iter())
.collect(),
expected_input_tys,
)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This code de-tuples the callee's arguments, and type checks them against the caller's arguments.

But I don't know how to modify the caller so its arguments become tupled in MIR.

@rust-log-analyzer

This comment has been minimized.

@rustbot rustbot added T-clippy Relevant to the Clippy team. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. labels Mar 20, 2026
@rust-log-analyzer
Copy link
Collaborator

The job aarch64-gnu-llvm-21-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
Executing "/scripts/stage_2_test_set1.sh"
+ /scripts/stage_2_test_set1.sh
PR_CI_JOB set; skipping tidy
+ '[' 1 == 1 ']'
+ echo 'PR_CI_JOB set; skipping tidy'
+ SKIP_TIDY='--skip tidy'
+ ../x.py --stage 2 test --skip tidy --skip compiler --skip src
##[group]Building bootstrap
    Finished `dev` profile [unoptimized] target(s) in 0.04s
##[endgroup]
downloading https://static.rust-lang.org/dist/2026-03-05/rustfmt-nightly-aarch64-unknown-linux-gnu.tar.xz
---
[RUSTC-TIMING] rustc_type_ir_macros test:false 0.845
   Compiling rustc_apfloat v0.2.3+llvm-462a31f5a5ab
[RUSTC-TIMING] build_script_build test:false 0.208
   Compiling rustc_type_ir v0.0.0 (/checkout/compiler/rustc_type_ir)
error: internal compiler error: compiler/rustc_hir_analysis/src/collect.rs:1046:13: unexpected sort of node in fn_sig(): Item(Item { owner_id: DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC), kind: Static(Not, TRACK_DIAGNOSTIC#0, Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).1), span: compiler/rustc_errors/src/lib.rs:397:30: 399:2 (#0), kind: Path(Resolved(None, Path { span: compiler/rustc_errors/src/lib.rs:397:30: 399:2 (#0), res: Def(Struct, DefId(27:3022 ~ rustc_data_structures[bab6]::atomic_ref::AtomicRef)), segments: [PathSegment { ident: AtomicRef#0, hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).24), res: Def(Struct, DefId(27:3022 ~ rustc_data_structures[bab6]::atomic_ref::AtomicRef)), args: Some(GenericArgs { args: [Type(Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).23), span: compiler/rustc_errors/src/lib.rs:398:5: 398:99 (#0), kind: FnPtr(FnPtrTy { safety: Safe, abi: Rust, generic_params: [GenericParam { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).2), def_id: DefId(0:3174 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC::'_), name: Fresh, span: compiler/rustc_errors/src/lib.rs:398:19: 398:20 (#0), pure_wrt_drop: false, kind: Lifetime { kind: Elided(Ampersand) }, colon_span: None, source: Binder }], decl: FnDecl { inputs: [Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).3), span: compiler/rustc_errors/src/lib.rs:398:8: 398:17 (#0), kind: Path(Resolved(None, Path { span: compiler/rustc_errors/src/lib.rs:398:8: 398:17 (#0), res: Def(Struct, DefId(0:1870 ~ rustc_errors[594f]::diagnostic::DiagInner)), segments: [PathSegment { ident: DiagInner#0, hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).4), res: Def(Struct, DefId(0:1870 ~ rustc_errors[594f]::diagnostic::DiagInner)), args: None, infer_args: false }] })) }, Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).18), span: compiler/rustc_errors/src/lib.rs:398:19: 398:71 (#0), kind: Ref(Lifetime { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).5), ident: '_#0, kind: Param(DefId(0:3174 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC::'_)), source: Reference, syntax: Implicit }, MutTy { ty: Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).17), span: compiler/rustc_errors/src/lib.rs:398:24: 398:71 (#0), kind: TraitObject([PolyTraitRef { bound_generic_params: [], modifiers: TraitBoundModifiers { constness: Never, polarity: Positive }, trait_ref: TraitRef { path: Path { span: compiler/rustc_errors/src/lib.rs:398:28: 398:71 (#0), res: Def(Trait, DefId(2:4358 ~ core[d8fc]::ops::function::FnMut)), segments: [PathSegment { ident: FnMut#0, hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).14), res: Def(Trait, DefId(2:4358 ~ core[d8fc]::ops::function::FnMut)), args: Some(GenericArgs { args: [Type(Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).12), span: compiler/rustc_errors/src/lib.rs:398:33: 398:44 (#0), kind: Tup([Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).6), span: compiler/rustc_errors/src/lib.rs:398:34: 398:43 (#0), kind: Path(Resolved(None, Path { span: compiler/rustc_errors/src/lib.rs:398:34: 398:43 (#0), res: Def(Struct, DefId(0:1870 ~ rustc_errors[594f]::diagnostic::DiagInner)), segments: [PathSegment { ident: DiagInner#0, hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).7), res: Def(Struct, DefId(0:1870 ~ rustc_errors[594f]::diagnostic::DiagInner)), args: None, infer_args: false }] })) }]) })], constraints: [AssocItemConstraint { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).13), ident: Output#0, gen_args: GenericArgs { args: [], constraints: [], parenthesized: No, span_ext: no-location (#0) }, kind: Equality { term: Ty(Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).8), span: compiler/rustc_errors/src/lib.rs:398:48: 398:71 (#0), kind: Path(Resolved(None, Path { span: compiler/rustc_errors/src/lib.rs:398:48: 398:71 (#0), res: Def(Enum, DefId(2:39907 ~ core[d8fc]::option::Option)), segments: [PathSegment { ident: Option#0, hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).11), res: Def(Enum, DefId(2:39907 ~ core[d8fc]::option::Option)), args: Some(GenericArgs { args: [Type(Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).9), span: compiler/rustc_errors/src/lib.rs:398:55: 398:70 (#0), kind: Path(Resolved(None, Path { span: compiler/rustc_errors/src/lib.rs:398:55: 398:70 (#0), res: Def(Struct, DefId(99:5747 ~ rustc_span[e58c]::ErrorGuaranteed)), segments: [PathSegment { ident: ErrorGuaranteed#0, hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).10), res: Def(Struct, DefId(99:5747 ~ rustc_span[e58c]::ErrorGuaranteed)), args: None, infer_args: false }] })) })], constraints: [], parenthesized: No, span_ext: compiler/rustc_errors/src/lib.rs:398:54: 398:71 (#0) }), infer_args: false }] })) }) }, span: compiler/rustc_errors/src/lib.rs:398:48: 398:71 (#0) }], parenthesized: ParenSugar, span_ext: compiler/rustc_errors/src/lib.rs:398:33: 398:44 (#0) }), infer_args: false }] }, hir_ref_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).15) }, span: compiler/rustc_errors/src/lib.rs:398:28: 398:71 (#0) }], TaggedRef { pointer: Lifetime { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).16), ident: '_#0, kind: ImplicitObjectLifetimeDefault, source: Other, syntax: Implicit }, tag: Dyn }) }, mutbl: Mut }) }], output: Return(Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).19), span: compiler/rustc_errors/src/lib.rs:398:76: 398:99 (#0), kind: Path(Resolved(None, Path { span: compiler/rustc_errors/src/lib.rs:398:76: 398:99 (#0), res: Def(Enum, DefId(2:39907 ~ core[d8fc]::option::Option)), segments: [PathSegment { ident: Option#0, hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).22), res: Def(Enum, DefId(2:39907 ~ core[d8fc]::option::Option)), args: Some(GenericArgs { args: [Type(Ty { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).20), span: compiler/rustc_errors/src/lib.rs:398:83: 398:98 (#0), kind: Path(Resolved(None, Path { span: compiler/rustc_errors/src/lib.rs:398:83: 398:98 (#0), res: Def(Struct, DefId(99:5747 ~ rustc_span[e58c]::ErrorGuaranteed)), segments: [PathSegment { ident: ErrorGuaranteed#0, hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).21), res: Def(Struct, DefId(99:5747 ~ rustc_span[e58c]::ErrorGuaranteed)), args: None, infer_args: false }] })) })], constraints: [], parenthesized: No, span_ext: compiler/rustc_errors/src/lib.rs:398:82: 398:99 (#0) }), infer_args: false }] })) }), c_variadic: false, splatted: false, implicit_self: None, lifetime_elision_allowed: true }, param_idents: [None, None] }) })], constraints: [], parenthesized: No, span_ext: compiler/rustc_errors/src/lib.rs:397:39: 399:2 (#0) }), infer_args: false }] })) }, BodyId { hir_id: HirId(DefId(0:980 ~ rustc_errors[594f]::TRACK_DIAGNOSTIC).25) }), span: compiler/rustc_errors/src/lib.rs:397:1: 399:54 (#0), vis_span: compiler/rustc_errors/src/lib.rs:397:1: 397:4 (#0), has_delayed_lints: false, eii: false })


thread 'rustc' (18237) panicked at compiler/rustc_hir_analysis/src/collect.rs:1046:13:
Box<dyn Any>
stack backtrace:
   0: std::panicking::begin_panic::<rustc_errors::ExplicitBug>
   1: <rustc_errors::diagnostic::BugAbort as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
   2: rustc_middle::util::bug::opt_span_bug_fmt::<rustc_span::span_encoding::Span>::{closure#0}
   3: rustc_middle::ty::context::tls::with_opt::<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}
   4: rustc_middle::ty::context::tls::with_context_opt::<rustc_middle::ty::context::tls::with_opt<rustc_middle::util::bug::opt_span_bug_fmt<rustc_span::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
   5: rustc_middle::util::bug::bug_fmt
   6: rustc_hir_analysis::collect::fn_sig
      [... omitted 2 frames ...]
   7: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
   8: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
   9: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
  10: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_block
  11: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
  12: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  13: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
  14: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
  15: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  16: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
  17: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_block
  18: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
  19: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  20: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
  21: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
  22: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  23: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
  24: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_block
  25: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
  26: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  27: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
  28: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
  29: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  30: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
  31: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_block
  32: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
  33: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  34: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
  35: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_return_or_body_tail
  36: rustc_hir_typeck::check::check_fn
  37: rustc_hir_typeck::typeck_with_inspect
      [... omitted 2 frames ...]
  38: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis::check_crate::{closure#2}>::{closure#0}
  39: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_hir_analysis::check_crate::{closure#2}>::{closure#0}>
  40: rustc_hir_analysis::check_crate
  41: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  42: <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<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
  43: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
  44: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  45: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

note: using internal features is not supported and expected to cause internal compiler errors when used incorrectly

warning: the ICE couldn't be written to `/checkout/rustc-ice-2026-03-20T03_19_00-18235.txt`: Read-only file system (os error 30)

note: rustc 1.96.0-nightly (c9c63beed 2026-03-20) running on aarch64-unknown-linux-gnu

note: compiler flags: --crate-type lib -C opt-level=3 -C embed-bitcode=no -C debug-assertions=on -C symbol-mangling-version=v0 -Z annotate-moves -Z randomize-layout -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C llvm-args=-import-instr-limit=10 -C link-args=-Wl,-z,origin -C link-args=-Wl,-rpath,$ORIGIN/../lib -Z on-broken-pipe=kill -Z binary-dep-depinfo -Z tls-model=initial-exec -Z force-unstable-if-unmarked

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

query stack during panic:
#0 [fn_sig] computing function signature of `TRACK_DIAGNOSTIC`
#1 [typeck] type-checking `<impl at compiler/rustc_errors/src/lib.rs:1151:1: 1151:19>::emit_diagnostic`
#2 [analysis] running analysis passes on crate `rustc_errors`
end of query stack
[RUSTC-TIMING] rustc_errors test:false 1.403
error: could not compile `rustc_errors` (lib)

Caused by:
  process didn't exit successfully: `/checkout/obj/build/bootstrap/debug/rustc /checkout/obj/build/bootstrap/debug/rustc --crate-name rustc_errors --edition=2024 compiler/rustc_errors/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C debug-assertions=on --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=43f83da1c9e6e99c -C extra-filename=-6d51063f1ae606fd --out-dir /checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps --target aarch64-unknown-linux-gnu -L dependency=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps -L dependency=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/release/deps --extern annotate_snippets=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/libannotate_snippets-03f5634917950bf8.rmeta --extern anstream=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/libanstream-e49c737635dbc057.rmeta --extern anstyle=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/libanstyle-e7f9df2ff2d761f6.rmeta --extern derive_setters=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/release/deps/libderive_setters-1ac52bb0f3e03331.so --extern rustc_abi=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_abi-da4978297f04d4b4.rmeta --extern rustc_ast=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_ast-42db86c17a78807b.rmeta --extern rustc_data_structures=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_data_structures-00dfdb25451710ed.rmeta --extern rustc_error_codes=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_error_codes-3dc99520261bd395.rmeta --extern rustc_error_messages=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_error_messages-f19364330cea1e9c.rmeta --extern rustc_hashes=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_hashes-c4af0383450e4c22.rmeta --extern rustc_index=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_index-06e0d5d322233dfe.rmeta --extern rustc_lint_defs=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_lint_defs-abc726d22c033c4c.rmeta --extern rustc_macros=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/release/deps/librustc_macros-c8fc0724bde9c918.so --extern rustc_serialize=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_serialize-ad3671fbe46006aa.rmeta --extern rustc_span=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/librustc_span-e2368ccb103a3cf4.rmeta --extern serde=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/libserde-9bfa0c796cbb1f71.rmeta --extern serde_json=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/libserde_json-8a208799ec42c5b1.rmeta --extern termize=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/libtermize-8d630d3fba31b499.rmeta --extern tracing=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/deps/libtracing-43aa014eee29a2e1.rmeta --cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zannotate-moves -Zrandomize-layout -Zunstable-options '--check-cfg=cfg(bootstrap)' -Zmacro-backtrace -Csplit-debuginfo=off -Cllvm-args=-import-instr-limit=10 -Clink-args=-Wl,-z,origin '-Clink-args=-Wl,-rpath,$ORIGIN/../lib' -Zon-broken-pipe=kill -Z binary-dep-depinfo -L native=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/build/psm-f914de601d602ad7/out -L native=/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-rustc/aarch64-unknown-linux-gnu/release/build/blake3-0f4c8d2d3a28490b/out` (exit status: 101)
warning: build failed, waiting for other jobs to finish...
[RUSTC-TIMING] annotate_snippets test:false 5.160
[RUSTC-TIMING] object test:false 12.631
[RUSTC-TIMING] rustc_type_ir test:false 7.052
Bootstrap failed while executing `--stage 2 test --skip tidy --skip compiler --skip src`

JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Mar 20, 2026
…lmann

Fix typos and markdown errors

This PR fixes some typos and markdown errors I found while writing rust-lang#153697.

I've split it out to reduce the size of that PR.
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Mar 20, 2026
…lmann

Fix typos and markdown errors

This PR fixes some typos and markdown errors I found while writing rust-lang#153697.

I've split it out to reduce the size of that PR.
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Mar 20, 2026
…lmann

Fix typos and markdown errors

This PR fixes some typos and markdown errors I found while writing rust-lang#153697.

I've split it out to reduce the size of that PR.
@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 20, 2026

☔ The latest upstream changes (presumably #153489) made this pull request unmergeable. Please resolve the merge conflicts.

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

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) S-blocked Status: Blocked on something else such as an RFC or other implementation work. S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants