2024-02-14 15:31:46 -06:00
|
|
|
error: `derive` attribute cannot be used at crate level
|
|
|
|
--> $DIR/issue-121108.rs:1:1
|
|
|
|
|
|
|
|
|
LL | #![derive(Clone, Copy)]
|
|
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
LL |
|
|
|
|
LL | use std::ptr::addr_of;
|
|
|
|
| ------- the inner attribute doesn't annotate this `use` import
|
|
|
|
|
|
|
|
|
help: perhaps you meant to use an outer attribute
|
|
|
|
|
|
|
|
|
LL - #![derive(Clone, Copy)]
|
|
|
|
LL + #[derive(Clone, Copy)]
|
|
|
|
|
|
|
|
|
|
Overhaul how stashed diagnostics work, again.
Stashed errors used to be counted as errors, but could then be
cancelled, leading to `ErrorGuaranteed` soundness holes. #120828 changed
that, closing the soundness hole. But it introduced other difficulties
because you sometimes have to account for pending stashed errors when
making decisions about whether errors have occured/will occur and it's
easy to overlook these.
This commit aims for a middle ground.
- Stashed errors (not warnings) are counted immediately as emitted
errors, avoiding the possibility of forgetting to consider them.
- The ability to cancel (or downgrade) stashed errors is eliminated, by
disallowing the use of `steal_diagnostic` with errors, and introducing
the more restrictive methods `try_steal_{modify,replace}_and_emit_err`
that can be used instead.
Other things:
- `DiagnosticBuilder::stash` and `DiagCtxt::stash_diagnostic` now both
return `Option<ErrorGuaranteed>`, which enables the removal of two
`delayed_bug` calls and one `Ty::new_error_with_message` call. This is
possible because we store error guarantees in
`DiagCtxt::stashed_diagnostics`.
- Storing the guarantees also saves us having to maintain a counter.
- Calls to the `stashed_err_count` method are no longer necessary
alongside calls to `has_errors`, which is a nice simplification, and
eliminates two more `span_delayed_bug` calls and one FIXME comment.
- Tests are added for three of the four fixed PRs mentioned below.
- `issue-121108.rs`'s output improved slightly, omitting a non-useful
error message.
Fixes #121451.
Fixes #121477.
Fixes #121504.
Fixes #121508.
2024-02-25 22:21:01 -06:00
|
|
|
error: aborting due to 1 previous error
|
2024-02-14 15:31:46 -06:00
|
|
|
|