rust/src/test/ui/borrowck/borrowck-lend-flow-match.rs

27 lines
661 B
Rust
Raw Normal View History

// revisions: ast mir
//[mir]compile-flags: -Z borrowck=mir
2014-10-27 17:37:07 -05:00
#![allow(unused_variables)]
#![allow(unused_assignments)]
2013-03-15 14:24:24 -05:00
fn separate_arms() {
// Here both arms perform assignments, but only is illegal.
let mut x = None;
match x {
None => {
// It is ok to reassign x here, because there is in
// fact no outstanding loan of x!
2015-01-31 10:23:42 -06:00
x = Some(0);
2013-03-15 14:24:24 -05:00
}
Some(ref r) => {
x = Some(1); //[ast]~ ERROR cannot assign
//[mir]~^ ERROR cannot assign to `x` because it is borrowed
drop(r);
2013-03-15 14:24:24 -05:00
}
}
2013-07-02 14:47:32 -05:00
x.clone(); // just to prevent liveness warnings
2013-03-15 14:24:24 -05:00
}
fn main() {}