Skip to content

False positive in keyword_idents_2024 #124862

@jhpratt

Description

@jhpratt
#![warn(keyword_idents_2024)] #[allow(unused)] macro_rules! foo { ($gen:expr) => { $gen }; }

results in a warning

warning: `gen` is a keyword in the 2024 edition --> src/main.rs:5:7 | 5 | ($gen:expr) => { | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` | = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! = note: for more information, see issue #49716 <https://github.com/rust-lang/rust/issues/49716> note: the lint level is defined here --> src/main.rs:1:9 | 1 | #![warn(keyword_idents_2024)] | ^^^^^^^^^^^^^^^^^^^ warning: `gen` is a keyword in the 2024 edition --> src/main.rs:6:10 | 6 | $gen | ^^^ help: you can use a raw identifier to stay compatible: `r#gen` | = warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024! = note: for more information, see issue #49716 <https://github.com/rust-lang/rust/issues/49716> 

The suggested code does compile (to my surprise), but the warning is a false positive. Switching the edition to 2024 results in a successful compilation as written. This is consistent with all other keywords that can be used as matchers, so I can't imagine this isn't intended behavior.

rustc info:

rustc 1.80.0-nightly (7d83a4c13 2024-05-06) binary: rustc commit-hash: 7d83a4c131ab9ae81a74c6fd825c827d74a2881d commit-date: 2024-05-06 host: x86_64-unknown-linux-gnu release: 1.80.0-nightly LLVM version: 18.1.4 

Metadata

Metadata

Labels

A-edition-2024Area: The 2024 editionA-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.C-bugCategory: This is a bug.C-future-incompatibilityCategory: Future-incompatibility lintsD-incorrectDiagnostics: A diagnostic that is giving misleading or incorrect information.F-gen_blocks`gen {}` expressions that produce `Iterator`s

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions