Closed
Description
I tried this code (playground):
#![warn(non_exhaustive_omitted_patterns)]
// in other library:
// #[non_exhaustive] pub enum Foo { A, B }
use lib::Foo;
fn foo(_: impl Fn(Foo)) {}
fn main() {
foo(|_: Foo| { todo!() });
}
I expected to see this happen: no warnings.
Instead, this happened:
warning: some variants are not matched explicitly
--> src/main.rs:10:14
|
10 | foo(|_: Foo| { todo!() });
| ^ patterns `A` and `B` not covered
|
Meta
1.64.0-nightly (2022-07-26 4d6d601c8a83284d6b23)
cc #89554
Activity
Nemo157 commentedon Jul 27, 2022
(Note: it's not to do with the
_
pattern, in the real code I found this in the argument was used).Mark-Simulacrum commentedon Jul 27, 2022
I think this is a good thing to fix, but I don't think this would block stabilization since:
non_exhaustive_omitted_patterns
on arguments and locals #109836Auto merge of rust-lang#109836 - clubby789:param-non-exhaustive, r=Ni…