45 lines
831 B
Rust
45 lines
831 B
Rust
// Test that the borrow checker doesn't consider checking an exhaustive pattern
|
|
// as an access.
|
|
|
|
//@ check-pass
|
|
|
|
#![allow(dropping_references)]
|
|
|
|
//@ aux-build:monovariants.rs
|
|
extern crate monovariants;
|
|
|
|
use monovariants::ExhaustiveMonovariant;
|
|
|
|
enum Local {
|
|
Variant(u32),
|
|
}
|
|
|
|
#[non_exhaustive]
|
|
enum LocalNonExhaustive {
|
|
Variant(u32),
|
|
}
|
|
|
|
fn main() {
|
|
let mut x = ExhaustiveMonovariant::Variant(1);
|
|
let y = &mut x;
|
|
match x {
|
|
ExhaustiveMonovariant::Variant(_) => {},
|
|
_ => {},
|
|
}
|
|
drop(y);
|
|
let mut x = Local::Variant(1);
|
|
let y = &mut x;
|
|
match x {
|
|
Local::Variant(_) => {},
|
|
_ => {},
|
|
}
|
|
drop(y);
|
|
let mut x = LocalNonExhaustive::Variant(1);
|
|
let y = &mut x;
|
|
match x {
|
|
LocalNonExhaustive::Variant(_) => {},
|
|
_ => {},
|
|
}
|
|
drop(y);
|
|
}
|