Skip to content

Commit

Permalink
Fix another assertion failure for some Expect diagnostics.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
nnethercote committed Jun 21, 2024
1 parent a9c8887 commit d6efcbb
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 6 deletions.
8 changes: 4 additions & 4 deletions compiler/rustc_errors/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}

Expand Down
12 changes: 12 additions & 0 deletions tests/ui/lint/expect-future_breakage-crash-issue-126521.rs
Original file line number Diff line number Diff line change
@@ -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);
}
14 changes: 12 additions & 2 deletions tests/ui/lint/expect-future_breakage-crash-issue-126521.stderr
Original file line number Diff line number Diff line change
@@ -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)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand All @@ -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`.

0 comments on commit d6efcbb

Please sign in to comment.