Pretty-printing support for Rust generators #62572
Labels
A-async-await
Area: Async & Await
A-debuginfo
Area: Debugging information in compiled programs (DWARF, PDB, etc.)
AsyncAwait-Triaged
Async-await issues that have been triaged during a working group meeting.
C-enhancement
Category: An issue proposing an enhancement or a PR with one.
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
Support printing Rust generators in a way that looks more like enums. Generators (as of #59897) are represented in Rust as variant layouts with some extra fields on the outer layout. These extra fields (which are upvars, captured from the environment of the generator closure) seem to cause printing to become less pretty.
Today printing a Rust generator from
rust-gdb
looks like this:$2 = generator_objects::main::generator {__0: 0x7fffffffd204, <<variant>>: {__state: 3, 0: generator_objects::main::generator::Unresumed, 1: generator_objects::main::generator::Returned, 2: generator_objects::main::generator::Panicked, 3: generator_objects::main::generator::Suspend0 {c: 6, d: 7}, 4: generator_objects::main::generator::Suspend1 {c: 6, d: 7}}}
Note that we print the fields of every single variant, even though the discriminant is marked in the DWARF output.
Here's the test which produced the above output. The above excerpt is from the second print in the test.
__0
in the output is the upvar fora
from the environment (it should be calleda
instead of__0
, but this is a problem in the compiler).I also opened this bug on GDB; I'm not sure how much we upstream pretty printing support today.
The text was updated successfully, but these errors were encountered: