about summary refs log tree commit diff
path: root/compiler/rustc_codegen_gcc/example/example.rs
diff options
context:
space:
mode:
authorNicholas Nethercote <n.nethercote@gmail.com>2024-01-05 11:10:18 +1100
committerNicholas Nethercote <n.nethercote@gmail.com>2024-01-08 16:04:50 +1100
commitc733a0216d55977e51a26ead6f2446668f006e02 (patch)
treebbbe3ec1330cfae1e5c2eb378dde02a891894958 /compiler/rustc_codegen_gcc/example/example.rs
parent1b6c8e7533ae387ed320fc55a45dee95acc311ee (diff)
downloadrust-c733a0216d55977e51a26ead6f2446668f006e02.tar.gz
rust-c733a0216d55977e51a26ead6f2446668f006e02.zip
Remove a fourth `DiagnosticBuilder::emit_without_consuming` call.
The old code was very hard to understand, involving an
`emit_without_consuming` call *and* a `delay_as_bug_without_consuming`
call.

With slight changes both calls can be avoided. Not creating the error
until later is crucial, as is the early return in the `if recovered`
block.

It took me some time to come up with this reworking -- it went through
intermediate states much further from the original code than this final
version -- and it's isn't obvious at a glance that it is equivalent. But
I think it is, and the unchanged test behaviour is good supporting
evidence.

The commit also changes `check_trailing_angle_brackets` to return
`Option<ErrorGuaranteed>`. This provides a stricter proof that it
emitted an error message than asserting `dcx.has_errors().is_some()`,
which would succeed if any error had previously been emitted anywhere.
Diffstat (limited to 'compiler/rustc_codegen_gcc/example/example.rs')
0 files changed, 0 insertions, 0 deletions