rust/src/test/compile-fail/borrowck-assign-to-subfield.rs

20 lines
567 B
Rust
Raw Normal View History

2012-05-10 21:58:23 -05:00
fn main() {
let mut p = {a: 1,
w: {a: 1},
x: @{a: 1},
y: @const {a: 1},
z: @mut{a: 1}};
// even though `x` is not declared as a mutable field,
// `p` as a whole is mutable, so it can be modified.
p.a = 2;
// this is true for an interior field too
p.w.a = 2;
// in these cases we pass through a box, so the mut
// of the box is dominant
p.x.a = 2; //~ ERROR assigning to immutable field
p.y.a = 2; //~ ERROR assigning to const field
2012-05-10 21:58:23 -05:00
p.z.a = 2;
}