Skip to content

False positive in match_same_arms + non_exhaustive_omitted_patterns #10327

@dtolnay

Description

@dtolnay
Member

Summary

Clippy's suggestion makes the code not compile when non_exhaustive_omitted_patterns is in use.

Lint Name

match_same_arms

Reproducer

#![feature(non_exhaustive_omitted_patterns_lint)]
#![deny(clippy::match_same_arms)]

use std::sync::atomic::Ordering; // #[non_exhaustive] enum

pub fn f(x: Ordering) {
    match x {
        Ordering::Relaxed => println!("relaxed"),
        Ordering::Release => println!("release"),
        Ordering::Acquire => println!("acquire"),
        Ordering::AcqRel | Ordering::SeqCst => unsupported(x),
        #[deny(non_exhaustive_omitted_patterns)]
        _ => unsupported(x),
    }
}

fn unsupported(x: Ordering) {
    dbg!(x);
}
$ cargo clippy
error: this match arm has an identical body to the `_` wildcard arm
  --> src/lib.rs:11:9
   |
11 |         Ordering::AcqRel | Ordering::SeqCst => unsupported(x),
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the arm
   |
   = help: or try changing either arm body
note: `_` wildcard arm here
  --> src/lib.rs:13:9
   |
13 |         _ => unsupported(x),
   |         ^^^^^^^^^^^^^^^^^^^
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_same_arms

The original code compiles. Clippy's suggested code (remove line 11) does not compile.

error: some variants are not matched explicitly
  --> src/lib.rs:13:9
   |
13 |         _ => unsupported(x),
   |         ^ patterns `std::sync::atomic::Ordering::AcqRel` and `std::sync::atomic::Ordering::SeqCst` not covered
   |
   = help: ensure that all variants are matched explicitly by adding the suggested match arms
   = note: the matched value is of type `std::sync::atomic::Ordering` and the `non_exhaustive_omitted_patterns` attribute was found

Version

rustc 1.69.0-nightly (585f3eef2 2023-02-11)
binary: rustc
commit-hash: 585f3eef26f04440bca726c29193af7b4fa90e54
commit-date: 2023-02-11
host: x86_64-unknown-linux-gnu
release: 1.69.0-nightly
LLVM version: 15.0.7

Additional Labels

@rustbot label +I-suggestion-causes-error

Activity

added
C-bugCategory: Clippy is not doing the correct thing
I-false-positiveIssue: The lint was triggered on code it shouldn't have
on Feb 12, 2023
added
I-suggestion-causes-errorIssue: The suggestions provided by this Lint cause an ICE/error when applied
on Feb 12, 2023
added a commit that references this issue on Mar 23, 2023
added a commit that references this issue on Jun 15, 2023
cda13a8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: Clippy is not doing the correct thingI-false-positiveIssue: The lint was triggered on code it shouldn't haveI-suggestion-causes-errorIssue: The suggestions provided by this Lint cause an ICE/error when applied

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Participants

      @dtolnay@rustbot

      Issue actions

        False positive in match_same_arms + non_exhaustive_omitted_patterns · Issue #10327 · rust-lang/rust-clippy