mirror of https://github.com/rust-lang/rust
42 lines
863 B
Rust
42 lines
863 B
Rust
// The actual regression test from #63479. (Including this because my
|
|
// first draft at fn-ptr-is-structurally-matchable.rs failed to actually
|
|
// cover the case this hit; I've since expanded it accordingly, but the
|
|
// experience left me wary of leaving this regression test out.)
|
|
|
|
#[derive(Eq)]
|
|
struct A {
|
|
a: i64
|
|
}
|
|
|
|
impl PartialEq for A {
|
|
#[inline]
|
|
fn eq(&self, other: &Self) -> bool {
|
|
self.a.eq(&other.a)
|
|
}
|
|
}
|
|
|
|
type Fn = fn(&[A]);
|
|
|
|
fn my_fn(_args: &[A]) {
|
|
println!("hello world");
|
|
}
|
|
|
|
const TEST: Fn = my_fn;
|
|
const TEST2: (Fn, u8) = (TEST, 0);
|
|
|
|
struct B(Fn);
|
|
|
|
fn main() {
|
|
let s = B(my_fn);
|
|
match s {
|
|
B(TEST) => println!("matched"),
|
|
//~^ ERROR behave unpredictably
|
|
_ => panic!("didn't match")
|
|
};
|
|
match (s.0, 0) {
|
|
TEST2 => println!("matched"),
|
|
//~^ ERROR behave unpredictably
|
|
_ => panic!("didn't match")
|
|
}
|
|
}
|