Simplify query stack printing - #162946
Merged
rust-bors[bot] merged 1 commit intoSep 19, 2026
Merged
Conversation
Currently it uses `eprintln!` for the "query stack during panic" header
and "end of query stack" footer and
`struct_failure_note(..).with_span(..).emit()` for the stack frames. The
difference is curious.
Looking more closely:
- failure notes lack a leading label (e.g. no "note: ");
- although the failure note is given a span, the span never renders
because the `AnnotateSnippetEmitter` used for the query stack has an
empty source map field;
- the JSON emitter is never involved here.
Therefore, the only difference between using `struct_failure_note` and
`eprintln!` is that the former prints in bold. But boldness for frames
isn't important; indeed, normal backtrace frames don't use bold.
So the commit changes query stack frame printing to use `eprintln!`,
removes some now unnecessary `dcx` arguments, and also removes
`struct_failure_note`. That leaves "For more information about an error,
try `rustc --explain {}`" as the only use of `FailureNote`.
Contributor
|
@bors r+ |
Contributor
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Sep 18, 2026
…rinting, r=estebank
Simplify query stack printing
Currently it uses `eprintln!` for the "query stack during panic" header and "end of query stack" footer and
`struct_failure_note(..).with_span(..).emit()` for the stack frames. The difference is curious.
Looking more closely:
- failure notes lack a leading label (e.g. no "note: ");
- although the failure note is given a span, the span never renders because the `AnnotateSnippetEmitter` used for the query stack has an empty source map field;
- the JSON emitter is never involved here.
Therefore, the only difference between using `struct_failure_note` and `eprintln!` is that the former prints in bold. But boldness for frames isn't important; indeed, normal backtrace frames don't use bold.
So the commit changes query stack frame printing to use `eprintln!`, removes some now unnecessary `dcx` arguments, and also removes `struct_failure_note`. That leaves "For more information about an error, try `rustc --explain {}`" as the only use of `FailureNote`.
r? @estebank
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Sep 18, 2026
…rinting, r=estebank
Simplify query stack printing
Currently it uses `eprintln!` for the "query stack during panic" header and "end of query stack" footer and
`struct_failure_note(..).with_span(..).emit()` for the stack frames. The difference is curious.
Looking more closely:
- failure notes lack a leading label (e.g. no "note: ");
- although the failure note is given a span, the span never renders because the `AnnotateSnippetEmitter` used for the query stack has an empty source map field;
- the JSON emitter is never involved here.
Therefore, the only difference between using `struct_failure_note` and `eprintln!` is that the former prints in bold. But boldness for frames isn't important; indeed, normal backtrace frames don't use bold.
So the commit changes query stack frame printing to use `eprintln!`, removes some now unnecessary `dcx` arguments, and also removes `struct_failure_note`. That leaves "For more information about an error, try `rustc --explain {}`" as the only use of `FailureNote`.
r? @estebank
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 18, 2026
…uwer Rollup of 20 pull requests Successful merges: - #160401 (sparc: make ABI consistent with clang) - #162715 (don't calculate dtors if the self ty has impossible bounds) - #162740 (stdarch subtree update) - #162824 (link Enzyme and the offload with in-tree lld if possible) - #162946 (Simplify query stack printing) - #161005 (fix: unfulfilled nested dead code lint) - #161246 (Normalize non-rigid aliases in ty_known_to_outlive) - #161803 (Fix docs of make_ascii_lowercase/make_ascii_upercase) - #162256 (Add mentions to sync back `RELEASES.md` to the `main` branch) - #162661 (simplify `Target::GenericParam`) - #162666 (Tidy footnote in `platform-support.md`) - #162803 (docs(num): add documentation for `NonZero::from_str`) - #162879 (use u64 limbs in core::num::bignum) - #162903 (PassWrapper: adapt to LLVM reading exception model from module flag) - #162905 (c-variadic: add checks for windows i686) - #162906 (Move more `rustdoc-html` tests in the right location) - #162922 (An assortment of polonius tweaks) - #162929 (Update unicode_data to Unicode version 18.0.0) - #162930 (Use niche length type for strlen to guarantee `isize::MAX` bound) - #162960 (Guard types with unstable `Allocator` params ahead of partial stabilization)
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 18, 2026
…uwer Rollup of 19 pull requests Successful merges: - #160401 (sparc: make ABI consistent with clang) - #162715 (don't calculate dtors if the self ty has impossible bounds) - #162740 (stdarch subtree update) - #162946 (Simplify query stack printing) - #161005 (fix: unfulfilled nested dead code lint) - #161246 (Normalize non-rigid aliases in ty_known_to_outlive) - #161803 (Fix docs of make_ascii_lowercase/make_ascii_upercase) - #162256 (Add mentions to sync back `RELEASES.md` to the `main` branch) - #162661 (simplify `Target::GenericParam`) - #162666 (Tidy footnote in `platform-support.md`) - #162803 (docs(num): add documentation for `NonZero::from_str`) - #162879 (use u64 limbs in core::num::bignum) - #162903 (PassWrapper: adapt to LLVM reading exception model from module flag) - #162905 (c-variadic: add checks for windows i686) - #162906 (Move more `rustdoc-html` tests in the right location) - #162922 (An assortment of polonius tweaks) - #162929 (Update unicode_data to Unicode version 18.0.0) - #162930 (Use niche length type for strlen to guarantee `isize::MAX` bound) - #162960 (Guard types with unstable `Allocator` params ahead of partial stabilization)
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 18, 2026
…uwer Rollup of 19 pull requests Successful merges: - #160401 (sparc: make ABI consistent with clang) - #162715 (don't calculate dtors if the self ty has impossible bounds) - #162740 (stdarch subtree update) - #162946 (Simplify query stack printing) - #161005 (fix: unfulfilled nested dead code lint) - #161246 (Normalize non-rigid aliases in ty_known_to_outlive) - #161803 (Fix docs of make_ascii_lowercase/make_ascii_upercase) - #162256 (Add mentions to sync back `RELEASES.md` to the `main` branch) - #162661 (simplify `Target::GenericParam`) - #162666 (Tidy footnote in `platform-support.md`) - #162803 (docs(num): add documentation for `NonZero::from_str`) - #162879 (use u64 limbs in core::num::bignum) - #162903 (PassWrapper: adapt to LLVM reading exception model from module flag) - #162905 (c-variadic: add checks for windows i686) - #162906 (Move more `rustdoc-html` tests in the right location) - #162922 (An assortment of polonius tweaks) - #162929 (Update unicode_data to Unicode version 18.0.0) - #162930 (Use niche length type for strlen to guarantee `isize::MAX` bound) - #162960 (Guard types with unstable `Allocator` params ahead of partial stabilization)
rust-bors Bot
pushed a commit
that referenced
this pull request
Sep 19, 2026
Rollup merge of #162946 - nnethercote:simplify-query-stack-printing, r=estebank Simplify query stack printing Currently it uses `eprintln!` for the "query stack during panic" header and "end of query stack" footer and `struct_failure_note(..).with_span(..).emit()` for the stack frames. The difference is curious. Looking more closely: - failure notes lack a leading label (e.g. no "note: "); - although the failure note is given a span, the span never renders because the `AnnotateSnippetEmitter` used for the query stack has an empty source map field; - the JSON emitter is never involved here. Therefore, the only difference between using `struct_failure_note` and `eprintln!` is that the former prints in bold. But boldness for frames isn't important; indeed, normal backtrace frames don't use bold. So the commit changes query stack frame printing to use `eprintln!`, removes some now unnecessary `dcx` arguments, and also removes `struct_failure_note`. That leaves "For more information about an error, try `rustc --explain {}`" as the only use of `FailureNote`. r? @estebank
pull Bot
pushed a commit
to LeeeeeeM/miri
that referenced
this pull request
Sep 19, 2026
…uwer Rollup of 19 pull requests Successful merges: - rust-lang/rust#160401 (sparc: make ABI consistent with clang) - rust-lang/rust#162715 (don't calculate dtors if the self ty has impossible bounds) - rust-lang/rust#162740 (stdarch subtree update) - rust-lang/rust#162946 (Simplify query stack printing) - rust-lang/rust#161005 (fix: unfulfilled nested dead code lint) - rust-lang/rust#161246 (Normalize non-rigid aliases in ty_known_to_outlive) - rust-lang/rust#161803 (Fix docs of make_ascii_lowercase/make_ascii_upercase) - rust-lang/rust#162256 (Add mentions to sync back `RELEASES.md` to the `main` branch) - rust-lang/rust#162661 (simplify `Target::GenericParam`) - rust-lang/rust#162666 (Tidy footnote in `platform-support.md`) - rust-lang/rust#162803 (docs(num): add documentation for `NonZero::from_str`) - rust-lang/rust#162879 (use u64 limbs in core::num::bignum) - rust-lang/rust#162903 (PassWrapper: adapt to LLVM reading exception model from module flag) - rust-lang/rust#162905 (c-variadic: add checks for windows i686) - rust-lang/rust#162906 (Move more `rustdoc-html` tests in the right location) - rust-lang/rust#162922 (An assortment of polonius tweaks) - rust-lang/rust#162929 (Update unicode_data to Unicode version 18.0.0) - rust-lang/rust#162930 (Use niche length type for strlen to guarantee `isize::MAX` bound) - rust-lang/rust#162960 (Guard types with unstable `Allocator` params ahead of partial stabilization)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Currently it uses
eprintln!for the "query stack during panic" header and "end of query stack" footer andstruct_failure_note(..).with_span(..).emit()for the stack frames. The difference is curious.Looking more closely:
AnnotateSnippetEmitterused for the query stack has an empty source map field;Therefore, the only difference between using
struct_failure_noteandeprintln!is that the former prints in bold. But boldness for frames isn't important; indeed, normal backtrace frames don't use bold.So the commit changes query stack frame printing to use
eprintln!, removes some now unnecessarydcxarguments, and also removesstruct_failure_note. That leaves "For more information about an error, tryrustc --explain {}" as the only use ofFailureNote.r? @estebank