SEMICOLON_IN_EXPRESSIONS_FROM_MACROS in rustc_lint::builtin - Rust
Description: The `semicolon_in_expressions_from_macros` lint detects trailing semicolons in macro bodies when the macro is invoked in expression position. This was previous accepted, but is being phased out.

Skip to main content

## SEMICOLON_IN_EXPRESSIONS_FROM_MACROS

# Static SEMICOLON_IN_EXPRESSIONS_FROM_MACROS

Source

    pub static SEMICOLON_IN_EXPRESSIONS_FROM_MACROS: &'static Lint

Expand description

The `semicolon_in_expressions_from_macros` lint detects trailing semicolons in macro bodies when the macro is invoked in expression position. This was previous accepted, but is being phased out.

#### §Example

ⓘ

    #![deny(semicolon_in_expressions_from_macros)]
    macro_rules! foo {
        () => { true; }
    }

    fn main() {
        let val = match true {
            true => false,
            _ => foo!()
        };
    }

{{produces}}

#### §Explanation

Previous, Rust ignored trailing semicolon in a macro body when a macro was invoked in expression position. However, this makes the treatment of semicolons in the language inconsistent, and could lead to unexpected runtime behavior in some circumstances (e.g. if the macro author expects a value to be dropped).

This is a future-incompatible lint to transition this to a hard error in the future. See issue #79813 for more details.