2017-09-24 05:56:57 -05:00
|
|
|
// revisions: ast mir
|
2017-11-19 16:37:59 -06:00
|
|
|
//[mir]compile-flags: -Z borrowck=mir
|
2017-09-24 05:56:57 -05:00
|
|
|
|
2014-02-23 17:02:27 -06:00
|
|
|
// Test that immutable pattern bindings cannot be reassigned.
|
|
|
|
|
|
|
|
enum E {
|
2015-01-08 04:54:35 -06:00
|
|
|
Foo(isize)
|
2014-02-23 17:02:27 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
struct S {
|
2015-01-08 04:54:35 -06:00
|
|
|
bar: isize,
|
2014-02-23 17:02:27 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn main() {
|
2015-01-31 10:23:42 -06:00
|
|
|
match 1 {
|
2014-02-23 17:02:27 -06:00
|
|
|
x => {
|
2017-10-25 10:29:14 -05:00
|
|
|
x += 1; //[ast]~ ERROR cannot assign twice to immutable variable `x`
|
2017-11-19 16:37:59 -06:00
|
|
|
//[mir]~^ ERROR [E0384]
|
2014-02-23 17:02:27 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-11-06 02:05:53 -06:00
|
|
|
match E::Foo(1) {
|
|
|
|
E::Foo(x) => {
|
2017-10-25 10:29:14 -05:00
|
|
|
x += 1; //[ast]~ ERROR cannot assign twice to immutable variable `x`
|
2017-11-19 16:37:59 -06:00
|
|
|
//[mir]~^ ERROR [E0384]
|
2014-02-23 17:02:27 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-06-13 21:09:12 -05:00
|
|
|
match (S { bar: 1 }) {
|
2014-02-23 17:02:27 -06:00
|
|
|
S { bar: x } => {
|
2017-10-25 10:29:14 -05:00
|
|
|
x += 1; //[ast]~ ERROR cannot assign twice to immutable variable `x`
|
2017-11-19 16:37:59 -06:00
|
|
|
//[mir]~^ ERROR [E0384]
|
2014-02-23 17:02:27 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-01-31 10:23:42 -06:00
|
|
|
match (1,) {
|
2014-02-23 17:02:27 -06:00
|
|
|
(x,) => {
|
2017-10-25 10:29:14 -05:00
|
|
|
x += 1; //[ast]~ ERROR cannot assign twice to immutable variable `x`
|
2017-11-19 16:37:59 -06:00
|
|
|
//[mir]~^ ERROR [E0384]
|
2014-02-23 17:02:27 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-01-31 10:23:42 -06:00
|
|
|
match [1,2,3] {
|
2014-02-23 17:02:27 -06:00
|
|
|
[x,_,_] => {
|
2017-10-25 10:29:14 -05:00
|
|
|
x += 1; //[ast]~ ERROR cannot assign twice to immutable variable `x`
|
2017-11-19 16:37:59 -06:00
|
|
|
//[mir]~^ ERROR [E0384]
|
2014-02-23 17:02:27 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|