about summary refs log tree commit diff
path: root/src/test/compile-fail/pure-modifies-aliased.rs
blob: 4a5d879a32dfb46e938d6a91084c59c5859313ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Check that pure functions cannot modify aliased state.

pure fn modify_in_ref(&&sum: {mut f: int}) {
    sum.f = 3; //~ ERROR assigning to mutable field prohibited in pure context
}

pure fn modify_in_box(sum: @mut {f: int}) {
    sum.f = 3; //~ ERROR assigning to mutable field prohibited in pure context
}

trait modify_in_box_rec {
    pure fn modify_in_box_rec(sum: @{mut f: int});
}

impl int: modify_in_box_rec {
    pure fn modify_in_box_rec(sum: @{mut f: int}) {
        sum.f = self; //~ ERROR assigning to mutable field prohibited in pure context
    }
}

fn main() {
}