about summary refs log tree commit diff
path: root/compiler/rustc_interface/src
diff options
context:
space:
mode:
authorNicholas Nethercote <n.nethercote@gmail.com>2024-01-08 07:47:02 +1100
committerNicholas Nethercote <n.nethercote@gmail.com>2024-01-08 16:18:54 +1100
commit2d91c6d1bf900276de71a7bde89ffe9cffed59fa (patch)
tree882a81834c8da8afb542774567cc887552fd5734 /compiler/rustc_interface/src
parent0cb486bc5b18fcce37f616bb46b054ebea1028cd (diff)
downloadrust-2d91c6d1bf900276de71a7bde89ffe9cffed59fa.tar.gz
rust-2d91c6d1bf900276de71a7bde89ffe9cffed59fa.zip
Remove `DiagnosticBuilderState`.
Currently it's used for two dynamic checks:
- When a diagnostic is emitted, has it been emitted before?
- When a diagnostic is dropped, has it been emitted/cancelled?

The first check is no longer need, because `emit` is consuming, so it's
impossible to emit a `DiagnosticBuilder` twice. The second check is
still needed.

This commit replaces `DiagnosticBuilderState` with a simpler
`Option<Box<Diagnostic>>`, which is enough for the second check:
functions like `emit` and `cancel` can take the `Diagnostic` and then
`drop` can check that the `Diagnostic` was taken.

The `DiagCtxt` reference from `DiagnosticBuilderState` is now stored as
its own field, removing the need for the `dcx` method.

As well as making the code shorter and simpler, the commit removes:
- One (deprecated) `ErrorGuaranteed::unchecked_claim_error_was_emitted`
  call.
- Two `FIXME(eddyb)` comments that are no longer relevant.
- The use of a dummy `Diagnostic` in `into_diagnostic`.

Nice!
Diffstat (limited to 'compiler/rustc_interface/src')
0 files changed, 0 insertions, 0 deletions