| //@ check-pass | 
 |  | 
 | // 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 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() { | 
 |     #[expect(semicolon_in_expressions_from_macros)] | 
 |     let _ = foo!(x); | 
 |  | 
 |     #[expect(semicolon_in_expressions_from_macros)] | 
 |     let _ = bar!(x); | 
 | } | 
 |  | 
 | fn main() { | 
 | } |