2024-06-25 13:05:37 -05:00
|
|
|
//@ check-pass
|
|
|
|
|
2024-06-20 22:58:06 -05:00
|
|
|
// This test covers similar crashes from both #126521 and #126751.
|
|
|
|
|
2024-06-16 13:38:08 -05:00
|
|
|
macro_rules! foo {
|
|
|
|
($val:ident) => {
|
|
|
|
true;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2024-06-20 22:58:06 -05:00
|
|
|
macro_rules! bar {
|
|
|
|
($val:ident) => {
|
|
|
|
(5_i32.overflowing_sub(3));
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2024-06-25 13:05:37 -05:00
|
|
|
fn allow() {
|
|
|
|
#[allow(semicolon_in_expressions_from_macros)]
|
|
|
|
let _ = foo!(x);
|
|
|
|
|
|
|
|
#[allow(semicolon_in_expressions_from_macros)]
|
|
|
|
let _ = bar!(x);
|
|
|
|
}
|
|
|
|
|
|
|
|
// The `semicolon_in_expressions_from_macros` lint seems to be emitted even if the
|
|
|
|
// lint level is `allow` as shown in the function above. The behavior of `expect`
|
|
|
|
// should mirror this behavior. However, no `unfulfilled_lint_expectation` lint
|
|
|
|
// is emitted, since the expectation is theoretically fulfilled.
|
|
|
|
fn expect() {
|
2024-06-16 13:38:08 -05:00
|
|
|
#[expect(semicolon_in_expressions_from_macros)]
|
|
|
|
let _ = foo!(x);
|
2024-06-20 22:58:06 -05:00
|
|
|
|
|
|
|
#[expect(semicolon_in_expressions_from_macros)]
|
|
|
|
let _ = bar!(x);
|
2024-06-16 13:38:08 -05:00
|
|
|
}
|
2024-06-25 13:05:37 -05:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
}
|