diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-06-21 13:58:06 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-06-21 14:29:25 +1000 |
| commit | d6efcbb760ae0a17ed05e843bdced7afee74695a (patch) | |
| tree | 8b3e8dc1ce589c4607229ae1eea737478bfd0a07 | |
| parent | a9c8887c7d548abc6c3e87f7d6fa02a0e95880bd (diff) | |
| download | rust-d6efcbb760ae0a17ed05e843bdced7afee74695a.tar.gz rust-d6efcbb760ae0a17ed05e843bdced7afee74695a.zip | |
Fix another assertion failure for some Expect diagnostics.
Very similar to #126719. So much so that I added a new case to the test from that PR rather than creating a new one.
| -rw-r--r-- | compiler/rustc_errors/src/lib.rs | 8 | ||||
| -rw-r--r-- | tests/ui/lint/expect-future_breakage-crash-issue-126521.rs | 12 | ||||
| -rw-r--r-- | tests/ui/lint/expect-future_breakage-crash-issue-126521.stderr | 14 |
3 files changed, 28 insertions, 6 deletions
diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index 620f56c01e8..91112a57277 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -1456,10 +1456,10 @@ impl DiagCtxtInner { } if diagnostic.has_future_breakage() { - // Future breakages aren't emitted if they're `Level::Allow`, - // but they still need to be constructed and stashed below, - // so they'll trigger the must_produce_diag check. - assert!(matches!(diagnostic.level, Error | Warning | Allow)); + // Future breakages aren't emitted if they're `Level::Allow` or + // `Level::Expect`, but they still need to be constructed and + // stashed below, so they'll trigger the must_produce_diag check. + assert!(matches!(diagnostic.level, Error | Warning | Allow | Expect(_))); self.future_breakage_diagnostics.push(diagnostic.clone()); } diff --git a/tests/ui/lint/expect-future_breakage-crash-issue-126521.rs b/tests/ui/lint/expect-future_breakage-crash-issue-126521.rs index a3c8544613b..0e622ff3aaf 100644 --- a/tests/ui/lint/expect-future_breakage-crash-issue-126521.rs +++ b/tests/ui/lint/expect-future_breakage-crash-issue-126521.rs @@ -1,11 +1,23 @@ +// This test covers similar crashes from both #126521 and #126751. + macro_rules! foo { ($val:ident) => { true; }; } +macro_rules! bar { + ($val:ident) => { + (5_i32.overflowing_sub(3)); + }; +} + fn main() { #[expect(semicolon_in_expressions_from_macros)] //~^ ERROR the `#[expect]` attribute is an experimental feature let _ = foo!(x); + + #[expect(semicolon_in_expressions_from_macros)] + //~^ ERROR the `#[expect]` attribute is an experimental feature + let _ = bar!(x); } diff --git a/tests/ui/lint/expect-future_breakage-crash-issue-126521.stderr b/tests/ui/lint/expect-future_breakage-crash-issue-126521.stderr index b24831b1ae4..994630ec23b 100644 --- a/tests/ui/lint/expect-future_breakage-crash-issue-126521.stderr +++ b/tests/ui/lint/expect-future_breakage-crash-issue-126521.stderr @@ -1,5 +1,5 @@ error[E0658]: the `#[expect]` attribute is an experimental feature - --> $DIR/expect-future_breakage-crash-issue-126521.rs:8:5 + --> $DIR/expect-future_breakage-crash-issue-126521.rs:16:5 | LL | #[expect(semicolon_in_expressions_from_macros)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -8,6 +8,16 @@ LL | #[expect(semicolon_in_expressions_from_macros)] = help: add `#![feature(lint_reasons)]` to the crate attributes to enable = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date -error: aborting due to 1 previous error +error[E0658]: the `#[expect]` attribute is an experimental feature + --> $DIR/expect-future_breakage-crash-issue-126521.rs:20:5 + | +LL | #[expect(semicolon_in_expressions_from_macros)] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: see issue #54503 <https://github.com/rust-lang/rust/issues/54503> for more information + = help: add `#![feature(lint_reasons)]` to the crate attributes to enable + = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date + +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0658`. |
