Update tests
This commit is contained in:
parent
2a0426c269
commit
cfdd6ba77e
@ -1,5 +1,4 @@
|
||||
// run-pass
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
fn test1() {
|
||||
// from issue 6338
|
||||
|
@ -1,5 +1,4 @@
|
||||
// run-pass
|
||||
//compile-flags: -Z borrowck=compare
|
||||
|
||||
#![deny(warnings)]
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
// run-pass
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
const ALL_THE_NUMS: [u32; 1] = [
|
||||
1
|
||||
|
@ -1,6 +1,5 @@
|
||||
// run-pass
|
||||
#![allow(dead_code)]
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
static mut DROP: isize = 0;
|
||||
static mut DROP_S: isize = 0;
|
||||
|
@ -3,7 +3,6 @@
|
||||
|
||||
// ignore-emscripten i128 doesn't work
|
||||
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
#![feature(test)]
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
// run-pass
|
||||
// ignore-emscripten u128 not supported
|
||||
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
#![feature(test)]
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
#![allow(dead_code)]
|
||||
#![allow(unreachable_code)]
|
||||
#![allow(unused_parens)]
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
#![recursion_limit = "256"]
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
// access to the variable, whether that mutable access be used
|
||||
// for direct assignment or for taking mutable ref. Issue #6801.
|
||||
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
#![feature(box_syntax)]
|
||||
|
||||
fn to_fn_mut<F: FnMut()>(f: F) -> F { f }
|
||||
@ -12,7 +10,6 @@ fn a() {
|
||||
let mut x = 3;
|
||||
let c1 = to_fn_mut(|| x = 4);
|
||||
let c2 = to_fn_mut(|| x = 5); //~ ERROR cannot borrow `x` as mutable more than once
|
||||
//~| ERROR cannot borrow `x` as mutable more than once
|
||||
drop((c1, c2));
|
||||
}
|
||||
|
||||
@ -24,7 +21,6 @@ fn b() {
|
||||
let mut x = 3;
|
||||
let c1 = to_fn_mut(|| set(&mut x));
|
||||
let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as mutable more than once
|
||||
//~| ERROR cannot borrow `x` as mutable more than once
|
||||
drop((c1, c2));
|
||||
}
|
||||
|
||||
@ -32,7 +28,6 @@ fn c() {
|
||||
let mut x = 3;
|
||||
let c1 = to_fn_mut(|| x = 5);
|
||||
let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as mutable more than once
|
||||
//~| ERROR cannot borrow `x` as mutable more than once
|
||||
drop((c1, c2));
|
||||
}
|
||||
|
||||
@ -41,7 +36,6 @@ fn d() {
|
||||
let c1 = to_fn_mut(|| x = 5);
|
||||
let c2 = to_fn_mut(|| { let _y = to_fn_mut(|| set(&mut x)); }); // (nested closure)
|
||||
//~^ ERROR cannot borrow `x` as mutable more than once
|
||||
//~| ERROR cannot borrow `x` as mutable more than once
|
||||
drop((c1, c2));
|
||||
}
|
||||
|
||||
@ -54,7 +48,6 @@ fn g() {
|
||||
let c1 = to_fn_mut(|| set(&mut *x.f));
|
||||
let c2 = to_fn_mut(|| set(&mut *x.f));
|
||||
//~^ ERROR cannot borrow `x` as mutable more than once
|
||||
//~| ERROR cannot borrow `x` as mutable more than once
|
||||
drop((c1, c2));
|
||||
}
|
||||
|
||||
|
@ -1,80 +1,5 @@
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:14:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| x = 4);
|
||||
| -- - previous borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| first mutable borrow occurs here
|
||||
LL | let c2 = to_fn_mut(|| x = 5);
|
||||
| ^^ - borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:26:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| set(&mut x));
|
||||
| -- - previous borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| first mutable borrow occurs here
|
||||
LL | let c2 = to_fn_mut(|| set(&mut x));
|
||||
| ^^ - borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:34:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| x = 5);
|
||||
| -- - previous borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| first mutable borrow occurs here
|
||||
LL | let c2 = to_fn_mut(|| set(&mut x));
|
||||
| ^^ - borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:42:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| x = 5);
|
||||
| -- - previous borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| first mutable borrow occurs here
|
||||
LL | let c2 = to_fn_mut(|| { let _y = to_fn_mut(|| set(&mut x)); }); // (nested closure)
|
||||
| ^^ - borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:55:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| set(&mut *x.f));
|
||||
| -- - previous borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| first mutable borrow occurs here
|
||||
LL | let c2 = to_fn_mut(|| set(&mut *x.f));
|
||||
| ^^ - borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:14:24
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-closures-two-mut.rs:12:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| x = 4);
|
||||
| -- - first borrow occurs due to use of `x` in closure
|
||||
@ -84,12 +9,11 @@ LL | let c2 = to_fn_mut(|| x = 5);
|
||||
| ^^ - second borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
LL |
|
||||
LL | drop((c1, c2));
|
||||
| -- first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:26:24
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-closures-two-mut.rs:23:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| set(&mut x));
|
||||
| -- - first borrow occurs due to use of `x` in closure
|
||||
@ -99,12 +23,11 @@ LL | let c2 = to_fn_mut(|| set(&mut x));
|
||||
| ^^ - second borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
LL |
|
||||
LL | drop((c1, c2));
|
||||
| -- first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:34:24
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-closures-two-mut.rs:30:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| x = 5);
|
||||
| -- - first borrow occurs due to use of `x` in closure
|
||||
@ -114,12 +37,11 @@ LL | let c2 = to_fn_mut(|| set(&mut x));
|
||||
| ^^ - second borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
LL |
|
||||
LL | drop((c1, c2));
|
||||
| -- first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:42:24
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-closures-two-mut.rs:37:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| x = 5);
|
||||
| -- - first borrow occurs due to use of `x` in closure
|
||||
@ -129,12 +51,12 @@ LL | let c2 = to_fn_mut(|| { let _y = to_fn_mut(|| set(&mut x)); }); // (nes
|
||||
| ^^ - second borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
...
|
||||
LL |
|
||||
LL | drop((c1, c2));
|
||||
| -- first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir)
|
||||
--> $DIR/borrowck-closures-two-mut.rs:55:24
|
||||
error[E0499]: cannot borrow `x` as mutable more than once at a time
|
||||
--> $DIR/borrowck-closures-two-mut.rs:49:24
|
||||
|
|
||||
LL | let c1 = to_fn_mut(|| set(&mut *x.f));
|
||||
| -- - first borrow occurs due to use of `x` in closure
|
||||
@ -144,10 +66,10 @@ LL | let c2 = to_fn_mut(|| set(&mut *x.f));
|
||||
| ^^ - second borrow occurs due to use of `x` in closure
|
||||
| |
|
||||
| second mutable borrow occurs here
|
||||
...
|
||||
LL |
|
||||
LL | drop((c1, c2));
|
||||
| -- first borrow later used here
|
||||
|
||||
error: aborting due to 10 previous errors
|
||||
error: aborting due to 5 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0499`.
|
||||
|
@ -1,10 +1,7 @@
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
fn main() {
|
||||
let mut x = Box::new(0);
|
||||
let _u = x; // error shouldn't note this move
|
||||
x = Box::new(1);
|
||||
drop(x);
|
||||
let _ = (1,x); //~ ERROR use of moved value: `x` (Ast)
|
||||
//~^ ERROR use of moved value: `x` (Mir)
|
||||
let _ = (1,x); //~ ERROR use of moved value: `x`
|
||||
}
|
||||
|
@ -1,15 +1,5 @@
|
||||
error[E0382]: use of moved value: `x` (Ast)
|
||||
--> $DIR/borrowck-reinit.rs:8:16
|
||||
|
|
||||
LL | drop(x);
|
||||
| - value moved here
|
||||
LL | let _ = (1,x);
|
||||
| ^ value used here after move
|
||||
|
|
||||
= note: move occurs because `x` has type `std::boxed::Box<i32>`, which does not implement the `Copy` trait
|
||||
|
||||
error[E0382]: use of moved value: `x` (Mir)
|
||||
--> $DIR/borrowck-reinit.rs:8:16
|
||||
error[E0382]: use of moved value: `x`
|
||||
--> $DIR/borrowck-reinit.rs:6:16
|
||||
|
|
||||
LL | let mut x = Box::new(0);
|
||||
| ----- move occurs because `x` has type `std::boxed::Box<i32>`, which does not implement the `Copy` trait
|
||||
@ -19,6 +9,6 @@ LL | drop(x);
|
||||
LL | let _ = (1,x);
|
||||
| ^ value used here after move
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0382`.
|
||||
|
@ -1,5 +1,3 @@
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
fn ok() {
|
||||
loop {
|
||||
let _x = 1;
|
||||
@ -15,8 +13,7 @@ fn also_ok() {
|
||||
fn fail() {
|
||||
loop {
|
||||
let x: i32;
|
||||
let _ = x + 1; //~ERROR (Ast) [E0381]
|
||||
//~^ ERROR (Mir) [E0381]
|
||||
let _ = x + 1; //~ERROR [E0381]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,9 @@
|
||||
error[E0381]: use of possibly uninitialized variable: `x` (Ast)
|
||||
--> $DIR/borrowck-storage-dead.rs:18:17
|
||||
error[E0381]: use of possibly uninitialized variable: `x`
|
||||
--> $DIR/borrowck-storage-dead.rs:16:17
|
||||
|
|
||||
LL | let _ = x + 1;
|
||||
| ^ use of possibly uninitialized `x`
|
||||
|
||||
error[E0381]: use of possibly uninitialized variable: `x` (Mir)
|
||||
--> $DIR/borrowck-storage-dead.rs:18:17
|
||||
|
|
||||
LL | let _ = x + 1;
|
||||
| ^ use of possibly uninitialized `x`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0381`.
|
||||
|
@ -1,9 +1,6 @@
|
||||
//compile-flags: -Z borrowck=compare
|
||||
|
||||
fn foo(_x: u32) {
|
||||
_x = 4;
|
||||
//~^ ERROR cannot assign to immutable argument `_x` (Mir)
|
||||
//~^^ ERROR cannot assign twice to immutable variable `_x` (Ast)
|
||||
//~^ ERROR cannot assign to immutable argument `_x`
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
@ -1,19 +1,11 @@
|
||||
error[E0384]: cannot assign twice to immutable variable `_x` (Ast)
|
||||
--> $DIR/immutable-arg.rs:4:5
|
||||
|
|
||||
LL | fn foo(_x: u32) {
|
||||
| -- first assignment to `_x`
|
||||
LL | _x = 4;
|
||||
| ^^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error[E0384]: cannot assign to immutable argument `_x` (Mir)
|
||||
--> $DIR/immutable-arg.rs:4:5
|
||||
error[E0384]: cannot assign to immutable argument `_x`
|
||||
--> $DIR/immutable-arg.rs:2:5
|
||||
|
|
||||
LL | fn foo(_x: u32) {
|
||||
| -- help: make this binding mutable: `mut _x`
|
||||
LL | _x = 4;
|
||||
| ^^^^^^ cannot assign to immutable argument
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0384`.
|
||||
|
@ -1,13 +1,9 @@
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
pub fn main(){
|
||||
let maybe = Some(vec![true, true]);
|
||||
|
||||
loop {
|
||||
if let Some(thing) = maybe {
|
||||
}
|
||||
//~^^ ERROR use of partially moved value: `maybe` (Ast) [E0382]
|
||||
//~| ERROR use of moved value: `(maybe as std::prelude::v1::Some).0` (Ast) [E0382]
|
||||
//~| ERROR use of moved value (Mir) [E0382]
|
||||
//~^^ ERROR use of moved value [E0382]
|
||||
}
|
||||
}
|
||||
|
@ -1,29 +1,11 @@
|
||||
error[E0382]: use of partially moved value: `maybe` (Ast)
|
||||
--> $DIR/issue-41962.rs:7:30
|
||||
|
|
||||
LL | if let Some(thing) = maybe {
|
||||
| ----- ^^^^^ value used here after move
|
||||
| |
|
||||
| value moved here
|
||||
|
|
||||
= note: move occurs because the value has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
|
||||
|
||||
error[E0382]: use of moved value: `(maybe as std::prelude::v1::Some).0` (Ast)
|
||||
--> $DIR/issue-41962.rs:7:21
|
||||
|
|
||||
LL | if let Some(thing) = maybe {
|
||||
| ^^^^^ value moved here in previous iteration of loop
|
||||
|
|
||||
= note: move occurs because the value has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
|
||||
|
||||
error[E0382]: use of moved value (Mir)
|
||||
--> $DIR/issue-41962.rs:7:21
|
||||
error[E0382]: use of moved value
|
||||
--> $DIR/issue-41962.rs:5:21
|
||||
|
|
||||
LL | if let Some(thing) = maybe {
|
||||
| ^^^^^ value moved here, in previous iteration of loop
|
||||
|
|
||||
= note: move occurs because value has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0382`.
|
||||
|
@ -1,5 +1,3 @@
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
#![feature(generators, generator_trait)]
|
||||
|
||||
use std::ops::{GeneratorState, Generator};
|
||||
@ -13,8 +11,7 @@ fn borrow_local_inline() {
|
||||
// `b` and gets extended by region inference.)
|
||||
let mut b = move || {
|
||||
let a = &mut 3;
|
||||
//~^ ERROR borrow may still be in use when generator yields (Ast)
|
||||
//~| ERROR borrow may still be in use when generator yields (Mir)
|
||||
//~^ ERROR borrow may still be in use when generator yields
|
||||
yield();
|
||||
println!("{}", a);
|
||||
};
|
||||
@ -41,8 +38,7 @@ fn borrow_local() {
|
||||
let a = 3;
|
||||
{
|
||||
let b = &a;
|
||||
//~^ ERROR borrow may still be in use when generator yields (Ast)
|
||||
//~| ERROR borrow may still be in use when generator yields (Mir)
|
||||
//~^ ERROR borrow may still be in use when generator yields
|
||||
yield();
|
||||
println!("{}", b);
|
||||
}
|
||||
|
@ -1,39 +1,21 @@
|
||||
error[E0626]: borrow may still be in use when generator yields (Ast)
|
||||
--> $DIR/yield-while-local-borrowed.rs:15:22
|
||||
|
|
||||
LL | let a = &mut 3;
|
||||
| ^
|
||||
...
|
||||
LL | yield();
|
||||
| ------- possible yield occurs here
|
||||
|
||||
error[E0626]: borrow may still be in use when generator yields (Ast)
|
||||
--> $DIR/yield-while-local-borrowed.rs:43:22
|
||||
|
|
||||
LL | let b = &a;
|
||||
| ^
|
||||
...
|
||||
LL | yield();
|
||||
| ------- possible yield occurs here
|
||||
|
||||
error[E0626]: borrow may still be in use when generator yields (Mir)
|
||||
--> $DIR/yield-while-local-borrowed.rs:15:17
|
||||
error[E0626]: borrow may still be in use when generator yields
|
||||
--> $DIR/yield-while-local-borrowed.rs:13:17
|
||||
|
|
||||
LL | let a = &mut 3;
|
||||
| ^^^^^^
|
||||
...
|
||||
LL |
|
||||
LL | yield();
|
||||
| ------- possible yield occurs here
|
||||
|
||||
error[E0626]: borrow may still be in use when generator yields (Mir)
|
||||
--> $DIR/yield-while-local-borrowed.rs:43:21
|
||||
error[E0626]: borrow may still be in use when generator yields
|
||||
--> $DIR/yield-while-local-borrowed.rs:40:21
|
||||
|
|
||||
LL | let b = &a;
|
||||
| ^^
|
||||
...
|
||||
LL |
|
||||
LL | yield();
|
||||
| ------- possible yield occurs here
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0626`.
|
||||
|
@ -1,6 +1,5 @@
|
||||
// compile-pass
|
||||
#![allow(dead_code)]
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
struct Foo(bool);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Test that assignments to an `&mut` pointer which is found in a
|
||||
// borrowed (but otherwise non-aliasable) location is illegal.
|
||||
|
||||
// compile-flags: -Z borrowck=compare -C overflow-checks=on
|
||||
// compile-flags: -C overflow-checks=on
|
||||
|
||||
struct S<'a> {
|
||||
pointer: &'a mut isize
|
||||
@ -18,9 +18,8 @@ fn main() {
|
||||
let mut y = S { pointer: &mut x };
|
||||
let z = copy_borrowed_ptr(&mut y);
|
||||
*y.pointer += 1;
|
||||
//~^ ERROR cannot assign to `*y.pointer` because it is borrowed (Ast) [E0506]
|
||||
//~| ERROR cannot use `*y.pointer` because it was mutably borrowed (Mir) [E0503]
|
||||
//~| ERROR cannot assign to `*y.pointer` because it is borrowed (Mir) [E0506]
|
||||
//~^ ERROR cannot use `*y.pointer` because it was mutably borrowed [E0503]
|
||||
//~| ERROR cannot assign to `*y.pointer` because it is borrowed [E0506]
|
||||
*z.pointer += 1;
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,4 @@
|
||||
error[E0506]: cannot assign to `*y.pointer` because it is borrowed (Ast)
|
||||
--> $DIR/issue-45697-1.rs:20:9
|
||||
|
|
||||
LL | let z = copy_borrowed_ptr(&mut y);
|
||||
| - borrow of `*y.pointer` occurs here
|
||||
LL | *y.pointer += 1;
|
||||
| ^^^^^^^^^^^^^^^ assignment to borrowed `*y.pointer` occurs here
|
||||
|
||||
error[E0503]: cannot use `*y.pointer` because it was mutably borrowed (Mir)
|
||||
error[E0503]: cannot use `*y.pointer` because it was mutably borrowed
|
||||
--> $DIR/issue-45697-1.rs:20:9
|
||||
|
|
||||
LL | let z = copy_borrowed_ptr(&mut y);
|
||||
@ -17,7 +9,7 @@ LL | *y.pointer += 1;
|
||||
LL | *z.pointer += 1;
|
||||
| --------------- borrow later used here
|
||||
|
||||
error[E0506]: cannot assign to `*y.pointer` because it is borrowed (Mir)
|
||||
error[E0506]: cannot assign to `*y.pointer` because it is borrowed
|
||||
--> $DIR/issue-45697-1.rs:20:9
|
||||
|
|
||||
LL | let z = copy_borrowed_ptr(&mut y);
|
||||
@ -28,7 +20,7 @@ LL | *y.pointer += 1;
|
||||
LL | *z.pointer += 1;
|
||||
| --------------- borrow later used here
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0503, E0506.
|
||||
For more information about an error, try `rustc --explain E0503`.
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Test that assignments to an `&mut` pointer which is found in a
|
||||
// borrowed (but otherwise non-aliasable) location is illegal.
|
||||
|
||||
// compile-flags: -Z borrowck=compare -C overflow-checks=off
|
||||
// compile-flags: -C overflow-checks=off
|
||||
|
||||
struct S<'a> {
|
||||
pointer: &'a mut isize
|
||||
@ -18,9 +18,8 @@ fn main() {
|
||||
let mut y = S { pointer: &mut x };
|
||||
let z = copy_borrowed_ptr(&mut y);
|
||||
*y.pointer += 1;
|
||||
//~^ ERROR cannot assign to `*y.pointer` because it is borrowed (Ast) [E0506]
|
||||
//~| ERROR cannot use `*y.pointer` because it was mutably borrowed (Mir) [E0503]
|
||||
//~| ERROR cannot assign to `*y.pointer` because it is borrowed (Mir) [E0506]
|
||||
//~^ ERROR cannot use `*y.pointer` because it was mutably borrowed [E0503]
|
||||
//~| ERROR cannot assign to `*y.pointer` because it is borrowed [E0506]
|
||||
*z.pointer += 1;
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,4 @@
|
||||
error[E0506]: cannot assign to `*y.pointer` because it is borrowed (Ast)
|
||||
--> $DIR/issue-45697.rs:20:9
|
||||
|
|
||||
LL | let z = copy_borrowed_ptr(&mut y);
|
||||
| - borrow of `*y.pointer` occurs here
|
||||
LL | *y.pointer += 1;
|
||||
| ^^^^^^^^^^^^^^^ assignment to borrowed `*y.pointer` occurs here
|
||||
|
||||
error[E0503]: cannot use `*y.pointer` because it was mutably borrowed (Mir)
|
||||
error[E0503]: cannot use `*y.pointer` because it was mutably borrowed
|
||||
--> $DIR/issue-45697.rs:20:9
|
||||
|
|
||||
LL | let z = copy_borrowed_ptr(&mut y);
|
||||
@ -17,7 +9,7 @@ LL | *y.pointer += 1;
|
||||
LL | *z.pointer += 1;
|
||||
| --------------- borrow later used here
|
||||
|
||||
error[E0506]: cannot assign to `*y.pointer` because it is borrowed (Mir)
|
||||
error[E0506]: cannot assign to `*y.pointer` because it is borrowed
|
||||
--> $DIR/issue-45697.rs:20:9
|
||||
|
|
||||
LL | let z = copy_borrowed_ptr(&mut y);
|
||||
@ -28,7 +20,7 @@ LL | *y.pointer += 1;
|
||||
LL | *z.pointer += 1;
|
||||
| --------------- borrow later used here
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0503, E0506.
|
||||
For more information about an error, try `rustc --explain E0503`.
|
||||
|
@ -1,11 +1,8 @@
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
fn main() {
|
||||
let y = {
|
||||
let mut z = 0;
|
||||
&mut z
|
||||
};
|
||||
//~^^ ERROR `z` does not live long enough (Ast) [E0597]
|
||||
//~| ERROR `z` does not live long enough (Mir) [E0597]
|
||||
//~^^ ERROR `z` does not live long enough [E0597]
|
||||
println!("{}", y);
|
||||
}
|
||||
|
@ -1,16 +1,5 @@
|
||||
error[E0597]: `z` does not live long enough (Ast)
|
||||
--> $DIR/issue-46471-1.rs:6:14
|
||||
|
|
||||
LL | &mut z
|
||||
| ^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - `z` dropped here while still borrowed
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value needs to live until here
|
||||
|
||||
error[E0597]: `z` does not live long enough (Mir)
|
||||
--> $DIR/issue-46471-1.rs:6:9
|
||||
error[E0597]: `z` does not live long enough
|
||||
--> $DIR/issue-46471-1.rs:4:9
|
||||
|
|
||||
LL | &mut z
|
||||
| ^^^^^^
|
||||
@ -20,6 +9,6 @@ LL | &mut z
|
||||
LL | };
|
||||
| - `z` dropped here while still borrowed
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0597`.
|
||||
|
@ -1,10 +1,7 @@
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
fn foo() -> &'static u32 {
|
||||
let x = 0;
|
||||
&x
|
||||
//~^ ERROR `x` does not live long enough (Ast) [E0597]
|
||||
//~| ERROR cannot return reference to local variable `x` (Mir) [E0515]
|
||||
//~^ ERROR cannot return reference to local variable `x` [E0515]
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
|
@ -1,21 +1,9 @@
|
||||
error[E0597]: `x` does not live long enough (Ast)
|
||||
--> $DIR/issue-46471.rs:5:6
|
||||
|
|
||||
LL | &x
|
||||
| ^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
error[E0515]: cannot return reference to local variable `x` (Mir)
|
||||
--> $DIR/issue-46471.rs:5:5
|
||||
error[E0515]: cannot return reference to local variable `x`
|
||||
--> $DIR/issue-46471.rs:3:5
|
||||
|
|
||||
LL | &x
|
||||
| ^^ returns a reference to data owned by the current function
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
Some errors have detailed explanations: E0515, E0597.
|
||||
For more information about an error, try `rustc --explain E0515`.
|
||||
For more information about this error, try `rustc --explain E0515`.
|
||||
|
@ -1,9 +1,6 @@
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
fn bar<'a>() -> &'a mut u32 {
|
||||
&mut 4
|
||||
//~^ ERROR borrowed value does not live long enough (Ast) [E0597]
|
||||
//~| ERROR cannot return reference to temporary value (Mir) [E0515]
|
||||
//~^ ERROR cannot return reference to temporary value [E0515]
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
|
@ -1,20 +1,5 @@
|
||||
error[E0597]: borrowed value does not live long enough (Ast)
|
||||
--> $DIR/issue-46472.rs:4:10
|
||||
|
|
||||
LL | &mut 4
|
||||
| ^ temporary value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - temporary value only lives until here
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 3:8...
|
||||
--> $DIR/issue-46472.rs:3:8
|
||||
|
|
||||
LL | fn bar<'a>() -> &'a mut u32 {
|
||||
| ^^
|
||||
|
||||
error[E0515]: cannot return reference to temporary value (Mir)
|
||||
--> $DIR/issue-46472.rs:4:5
|
||||
error[E0515]: cannot return reference to temporary value
|
||||
--> $DIR/issue-46472.rs:2:5
|
||||
|
|
||||
LL | &mut 4
|
||||
| ^^^^^-
|
||||
@ -22,7 +7,6 @@ LL | &mut 4
|
||||
| | temporary value created here
|
||||
| returns a reference to data owned by the current function
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
Some errors have detailed explanations: E0515, E0597.
|
||||
For more information about an error, try `rustc --explain E0515`.
|
||||
For more information about this error, try `rustc --explain E0515`.
|
||||
|
@ -1,17 +1,13 @@
|
||||
// FIXME: Change to UI Test
|
||||
// Check notes are placed on an assignment that can actually precede the current assignment
|
||||
// Don't emit a first assignment for assignment in a loop.
|
||||
|
||||
// compile-flags: -Zborrowck=compare
|
||||
|
||||
fn test() {
|
||||
let x;
|
||||
if true {
|
||||
x = 1;
|
||||
} else {
|
||||
x = 2;
|
||||
x = 3; //~ ERROR (Ast) [E0384]
|
||||
//~^ ERROR (Mir) [E0384]
|
||||
x = 3; //~ ERROR [E0384]
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,8 +18,7 @@ fn test_in_loop() {
|
||||
x = 1;
|
||||
} else {
|
||||
x = 2;
|
||||
x = 3; //~ ERROR (Ast) [E0384]
|
||||
//~^ ERROR (Mir) [E0384]
|
||||
x = 3; //~ ERROR [E0384]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -32,11 +27,9 @@ fn test_using_loop() {
|
||||
let x;
|
||||
loop {
|
||||
if true {
|
||||
x = 1; //~ ERROR (Ast) [E0384]
|
||||
//~^ ERROR (Mir) [E0384]
|
||||
x = 1; //~ ERROR [E0384]
|
||||
} else {
|
||||
x = 2; //~ ERROR (Ast) [E0384]
|
||||
//~^ ERROR (Mir) [E0384]
|
||||
x = 2; //~ ERROR [E0384]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,36 +1,5 @@
|
||||
error[E0384]: cannot assign twice to immutable variable `x` (Ast)
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:13:9
|
||||
|
|
||||
LL | x = 2;
|
||||
| ----- first assignment to `x`
|
||||
LL | x = 3;
|
||||
| ^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error[E0384]: cannot assign twice to immutable variable `x` (Ast)
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:25:13
|
||||
|
|
||||
LL | x = 2;
|
||||
| ----- first assignment to `x`
|
||||
LL | x = 3;
|
||||
| ^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error[E0384]: cannot assign twice to immutable variable `x` (Ast)
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:35:13
|
||||
|
|
||||
LL | x = 1;
|
||||
| ^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error[E0384]: cannot assign twice to immutable variable `x` (Ast)
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:38:13
|
||||
|
|
||||
LL | x = 1;
|
||||
| ----- first assignment to `x`
|
||||
...
|
||||
LL | x = 2;
|
||||
| ^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error[E0384]: cannot assign twice to immutable variable `x` (Mir)
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:13:9
|
||||
error[E0384]: cannot assign twice to immutable variable `x`
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:10:9
|
||||
|
|
||||
LL | let x;
|
||||
| - help: make this binding mutable: `mut x`
|
||||
@ -40,8 +9,8 @@ LL | x = 2;
|
||||
LL | x = 3;
|
||||
| ^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error[E0384]: cannot assign twice to immutable variable `x` (Mir)
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:25:13
|
||||
error[E0384]: cannot assign twice to immutable variable `x`
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:21:13
|
||||
|
|
||||
LL | let x;
|
||||
| - help: make this binding mutable: `mut x`
|
||||
@ -51,8 +20,8 @@ LL | x = 2;
|
||||
LL | x = 3;
|
||||
| ^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error[E0384]: cannot assign twice to immutable variable `x` (Mir)
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:35:13
|
||||
error[E0384]: cannot assign twice to immutable variable `x`
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:30:13
|
||||
|
|
||||
LL | let x;
|
||||
| - help: make this binding mutable: `mut x`
|
||||
@ -60,18 +29,18 @@ LL | let x;
|
||||
LL | x = 1;
|
||||
| ^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error[E0384]: cannot assign twice to immutable variable `x` (Mir)
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:38:13
|
||||
error[E0384]: cannot assign twice to immutable variable `x`
|
||||
--> $DIR/liveness-assign-imm-local-notes.rs:32:13
|
||||
|
|
||||
LL | let x;
|
||||
| - help: make this binding mutable: `mut x`
|
||||
...
|
||||
LL | x = 1;
|
||||
| ----- first assignment to `x`
|
||||
...
|
||||
LL | } else {
|
||||
LL | x = 2;
|
||||
| ^^^^^ cannot assign twice to immutable variable
|
||||
|
||||
error: aborting due to 8 previous errors
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0384`.
|
||||
|
@ -1,11 +1,8 @@
|
||||
#![feature(box_syntax)]
|
||||
|
||||
// compile-flags: -Z borrowck=compare
|
||||
|
||||
fn dup(x: Box<isize>) -> Box<(Box<isize>,Box<isize>)> {
|
||||
box (x, x)
|
||||
//~^ use of moved value: `x` (Ast) [E0382]
|
||||
//~| use of moved value: `x` (Mir) [E0382]
|
||||
//~^ use of moved value: `x` [E0382]
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
@ -1,15 +1,5 @@
|
||||
error[E0382]: use of moved value: `x` (Ast)
|
||||
--> $DIR/moves-based-on-type-tuple.rs:6:13
|
||||
|
|
||||
LL | box (x, x)
|
||||
| - ^ value used here after move
|
||||
| |
|
||||
| value moved here
|
||||
|
|
||||
= note: move occurs because `x` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait
|
||||
|
||||
error[E0382]: use of moved value: `x` (Mir)
|
||||
--> $DIR/moves-based-on-type-tuple.rs:6:13
|
||||
error[E0382]: use of moved value: `x`
|
||||
--> $DIR/moves-based-on-type-tuple.rs:4:13
|
||||
|
|
||||
LL | fn dup(x: Box<isize>) -> Box<(Box<isize>,Box<isize>)> {
|
||||
| - move occurs because `x` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait
|
||||
@ -18,6 +8,6 @@ LL | box (x, x)
|
||||
| |
|
||||
| value moved here
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0382`.
|
||||
|
@ -3,8 +3,6 @@
|
||||
// a variety of errors from the older, AST-based machinery (notably
|
||||
// borrowck), and then we get the NLL error at the end.
|
||||
|
||||
// compile-flags:-Zborrowck=compare
|
||||
|
||||
struct Map {
|
||||
}
|
||||
|
||||
@ -21,8 +19,7 @@ fn ok(map: &mut Map) -> &String {
|
||||
}
|
||||
None => {
|
||||
map.set(String::new()); // Ideally, this would not error.
|
||||
//~^ ERROR borrowed as immutable (Ast)
|
||||
//~| ERROR borrowed as immutable (Mir)
|
||||
//~^ ERROR borrowed as immutable
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -33,14 +30,12 @@ fn err(map: &mut Map) -> &String {
|
||||
match map.get() {
|
||||
Some(v) => {
|
||||
map.set(String::new()); // Both AST and MIR error here
|
||||
//~^ ERROR borrowed as immutable (Mir)
|
||||
//~| ERROR borrowed as immutable (Ast)
|
||||
//~^ ERROR borrowed as immutable
|
||||
return v;
|
||||
}
|
||||
None => {
|
||||
map.set(String::new()); // Ideally, just AST would error here
|
||||
//~^ ERROR borrowed as immutable (Ast)
|
||||
//~| ERROR borrowed as immutable (Mir)
|
||||
//~^ ERROR borrowed as immutable
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,41 +1,5 @@
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable (Ast)
|
||||
--> $DIR/get_default.rs:23:17
|
||||
|
|
||||
LL | match map.get() {
|
||||
| --- immutable borrow occurs here
|
||||
...
|
||||
LL | map.set(String::new()); // Ideally, this would not error.
|
||||
| ^^^ mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - immutable borrow ends here
|
||||
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable (Ast)
|
||||
--> $DIR/get_default.rs:35:17
|
||||
|
|
||||
LL | match map.get() {
|
||||
| --- immutable borrow occurs here
|
||||
LL | Some(v) => {
|
||||
LL | map.set(String::new()); // Both AST and MIR error here
|
||||
| ^^^ mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - immutable borrow ends here
|
||||
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable (Ast)
|
||||
--> $DIR/get_default.rs:41:17
|
||||
|
|
||||
LL | match map.get() {
|
||||
| --- immutable borrow occurs here
|
||||
...
|
||||
LL | map.set(String::new()); // Ideally, just AST would error here
|
||||
| ^^^ mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - immutable borrow ends here
|
||||
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable (Mir)
|
||||
--> $DIR/get_default.rs:23:17
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable
|
||||
--> $DIR/get_default.rs:21:17
|
||||
|
|
||||
LL | fn ok(map: &mut Map) -> &String {
|
||||
| - let's call the lifetime of this reference `'1`
|
||||
@ -47,10 +11,10 @@ LL | return v;
|
||||
| - returning this value requires that `*map` is borrowed for `'1`
|
||||
...
|
||||
LL | map.set(String::new()); // Ideally, this would not error.
|
||||
| ^^^ mutable borrow occurs here
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
|
||||
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable (Mir)
|
||||
--> $DIR/get_default.rs:35:17
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable
|
||||
--> $DIR/get_default.rs:32:17
|
||||
|
|
||||
LL | fn err(map: &mut Map) -> &String {
|
||||
| - let's call the lifetime of this reference `'1`
|
||||
@ -59,13 +23,13 @@ LL | match map.get() {
|
||||
| --- immutable borrow occurs here
|
||||
LL | Some(v) => {
|
||||
LL | map.set(String::new()); // Both AST and MIR error here
|
||||
| ^^^ mutable borrow occurs here
|
||||
...
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
|
||||
LL |
|
||||
LL | return v;
|
||||
| - returning this value requires that `*map` is borrowed for `'1`
|
||||
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable (Mir)
|
||||
--> $DIR/get_default.rs:41:17
|
||||
error[E0502]: cannot borrow `*map` as mutable because it is also borrowed as immutable
|
||||
--> $DIR/get_default.rs:37:17
|
||||
|
|
||||
LL | fn err(map: &mut Map) -> &String {
|
||||
| - let's call the lifetime of this reference `'1`
|
||||
@ -77,8 +41,8 @@ LL | return v;
|
||||
| - returning this value requires that `*map` is borrowed for `'1`
|
||||
...
|
||||
LL | map.set(String::new()); // Ideally, just AST would error here
|
||||
| ^^^ mutable borrow occurs here
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0502`.
|
||||
|
@ -1,5 +1,3 @@
|
||||
// compile-flags:-Zborrowck=compare
|
||||
|
||||
#![allow(warnings)]
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
@ -12,12 +10,9 @@ fn nll_fail() {
|
||||
let c = &mut data.0;
|
||||
capitalize(c);
|
||||
data.0 = 'e';
|
||||
//~^ ERROR (Ast) [E0506]
|
||||
//~| ERROR (Mir) [E0506]
|
||||
//~^ ERROR [E0506]
|
||||
data.0 = 'f';
|
||||
//~^ ERROR (Ast) [E0506]
|
||||
data.0 = 'g';
|
||||
//~^ ERROR (Ast) [E0506]
|
||||
capitalize(c);
|
||||
}
|
||||
|
||||
@ -26,11 +21,8 @@ fn nll_ok() {
|
||||
let c = &mut data.0;
|
||||
capitalize(c);
|
||||
data.0 = 'e';
|
||||
//~^ ERROR (Ast) [E0506]
|
||||
data.0 = 'f';
|
||||
//~^ ERROR (Ast) [E0506]
|
||||
data.0 = 'g';
|
||||
//~^ ERROR (Ast) [E0506]
|
||||
}
|
||||
|
||||
fn capitalize(_: &mut char) {
|
||||
|
@ -1,59 +1,5 @@
|
||||
error[E0506]: cannot assign to `data.0` because it is borrowed (Ast)
|
||||
--> $DIR/loan_ends_mid_block_pair.rs:14:5
|
||||
|
|
||||
LL | let c = &mut data.0;
|
||||
| ------ borrow of `data.0` occurs here
|
||||
LL | capitalize(c);
|
||||
LL | data.0 = 'e';
|
||||
| ^^^^^^^^^^^^ assignment to borrowed `data.0` occurs here
|
||||
|
||||
error[E0506]: cannot assign to `data.0` because it is borrowed (Ast)
|
||||
--> $DIR/loan_ends_mid_block_pair.rs:17:5
|
||||
|
|
||||
LL | let c = &mut data.0;
|
||||
| ------ borrow of `data.0` occurs here
|
||||
...
|
||||
LL | data.0 = 'f';
|
||||
| ^^^^^^^^^^^^ assignment to borrowed `data.0` occurs here
|
||||
|
||||
error[E0506]: cannot assign to `data.0` because it is borrowed (Ast)
|
||||
--> $DIR/loan_ends_mid_block_pair.rs:19:5
|
||||
|
|
||||
LL | let c = &mut data.0;
|
||||
| ------ borrow of `data.0` occurs here
|
||||
...
|
||||
LL | data.0 = 'g';
|
||||
| ^^^^^^^^^^^^ assignment to borrowed `data.0` occurs here
|
||||
|
||||
error[E0506]: cannot assign to `data.0` because it is borrowed (Ast)
|
||||
--> $DIR/loan_ends_mid_block_pair.rs:28:5
|
||||
|
|
||||
LL | let c = &mut data.0;
|
||||
| ------ borrow of `data.0` occurs here
|
||||
LL | capitalize(c);
|
||||
LL | data.0 = 'e';
|
||||
| ^^^^^^^^^^^^ assignment to borrowed `data.0` occurs here
|
||||
|
||||
error[E0506]: cannot assign to `data.0` because it is borrowed (Ast)
|
||||
--> $DIR/loan_ends_mid_block_pair.rs:30:5
|
||||
|
|
||||
LL | let c = &mut data.0;
|
||||
| ------ borrow of `data.0` occurs here
|
||||
...
|
||||
LL | data.0 = 'f';
|
||||
| ^^^^^^^^^^^^ assignment to borrowed `data.0` occurs here
|
||||
|
||||
error[E0506]: cannot assign to `data.0` because it is borrowed (Ast)
|
||||
--> $DIR/loan_ends_mid_block_pair.rs:32:5
|
||||
|
|
||||
LL | let c = &mut data.0;
|
||||
| ------ borrow of `data.0` occurs here
|
||||
...
|
||||
LL | data.0 = 'g';
|
||||
| ^^^^^^^^^^^^ assignment to borrowed `data.0` occurs here
|
||||
|
||||
error[E0506]: cannot assign to `data.0` because it is borrowed (Mir)
|
||||
--> $DIR/loan_ends_mid_block_pair.rs:14:5
|
||||
error[E0506]: cannot assign to `data.0` because it is borrowed
|
||||
--> $DIR/loan_ends_mid_block_pair.rs:12:5
|
||||
|
|
||||
LL | let c = &mut data.0;
|
||||
| ----------- borrow of `data.0` occurs here
|
||||
@ -64,6 +10,6 @@ LL | data.0 = 'e';
|
||||
LL | capitalize(c);
|
||||
| - borrow later used here
|
||||
|
||||
error: aborting due to 7 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0506`.
|
||||
|
@ -1,5 +1,3 @@
|
||||
// compile-flags:-Zborrowck=compare
|
||||
|
||||
#![allow(warnings)]
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
@ -11,14 +9,11 @@ fn nll_fail() {
|
||||
let slice = &mut data;
|
||||
capitalize(slice);
|
||||
data.push('d');
|
||||
//~^ ERROR (Ast) [E0499]
|
||||
//~| ERROR (Mir) [E0499]
|
||||
//~^ ERROR [E0499]
|
||||
data.push('e');
|
||||
//~^ ERROR (Ast) [E0499]
|
||||
//~| ERROR (Mir) [E0499]
|
||||
//~^ ERROR [E0499]
|
||||
data.push('f');
|
||||
//~^ ERROR (Ast) [E0499]
|
||||
//~| ERROR (Mir) [E0499]
|
||||
//~^ ERROR [E0499]
|
||||
capitalize(slice);
|
||||
}
|
||||
|
||||
@ -27,11 +22,8 @@ fn nll_ok() {
|
||||
let slice = &mut data;
|
||||
capitalize(slice);
|
||||
data.push('d');
|
||||
//~^ ERROR (Ast) [E0499]
|
||||
data.push('e');
|
||||
//~^ ERROR (Ast) [E0499]
|
||||
data.push('f');
|
||||
//~^ ERROR (Ast) [E0499]
|
||||
}
|
||||
|
||||
fn capitalize(_: &mut [char]) {
|
||||
|
@ -1,111 +1,39 @@
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Ast)
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:11:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| --------- first mutable borrow occurs here
|
||||
LL | capitalize(slice);
|
||||
LL | data.push('d');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | capitalize(slice);
|
||||
| ----- first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:13:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| ---- first mutable borrow occurs here
|
||||
LL | capitalize(slice);
|
||||
LL | data.push('d');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Ast)
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:16:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| ---- first mutable borrow occurs here
|
||||
| --------- first mutable borrow occurs here
|
||||
...
|
||||
LL | data.push('e');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Ast)
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:19:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| ---- first mutable borrow occurs here
|
||||
...
|
||||
LL | data.push('f');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Ast)
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:29:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| ---- first mutable borrow occurs here
|
||||
LL | capitalize(slice);
|
||||
LL | data.push('d');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
| ----- first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Ast)
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:31:5
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:15:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| ---- first mutable borrow occurs here
|
||||
...
|
||||
LL | data.push('e');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Ast)
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:33:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| ---- first mutable borrow occurs here
|
||||
| --------- first mutable borrow occurs here
|
||||
...
|
||||
LL | data.push('f');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
LL |
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Mir)
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:13:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| --------- first mutable borrow occurs here
|
||||
LL | capitalize(slice);
|
||||
LL | data.push('d');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | capitalize(slice);
|
||||
| ----- first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Mir)
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:16:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| --------- first mutable borrow occurs here
|
||||
...
|
||||
LL | data.push('e');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | capitalize(slice);
|
||||
| ----- first borrow later used here
|
||||
|
||||
error[E0499]: cannot borrow `data` as mutable more than once at a time (Mir)
|
||||
--> $DIR/loan_ends_mid_block_vec.rs:19:5
|
||||
|
|
||||
LL | let slice = &mut data;
|
||||
| --------- first mutable borrow occurs here
|
||||
...
|
||||
LL | data.push('f');
|
||||
| ^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | capitalize(slice);
|
||||
| ----- first borrow later used here
|
||||
|
||||
error: aborting due to 9 previous errors
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0499`.
|
||||
|
@ -2,8 +2,6 @@
|
||||
// in the type of `p` includes the points after `&v[0]` up to (but not
|
||||
// including) the call to `use_x`. The `else` branch is not included.
|
||||
|
||||
// compile-flags:-Zborrowck=compare
|
||||
|
||||
#![allow(warnings)]
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
@ -17,7 +15,6 @@ fn foo1() {
|
||||
let value = &my_struct.field;
|
||||
if value.is_empty() {
|
||||
my_struct.field.push_str("Hello, world!");
|
||||
//~^ ERROR (Ast) [E0502]
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,8 +24,7 @@ fn foo2() {
|
||||
let value = &my_struct.field;
|
||||
if value.is_empty() {
|
||||
my_struct.field.push_str("Hello, world!");
|
||||
//~^ ERROR (Ast) [E0502]
|
||||
//~| ERROR (Mir) [E0502]
|
||||
//~^ ERROR [E0502]
|
||||
}
|
||||
drop(value);
|
||||
}
|
||||
|
@ -1,39 +1,15 @@
|
||||
error[E0502]: cannot borrow `my_struct.field` as mutable because it is also borrowed as immutable (Ast)
|
||||
--> $DIR/region-ends-after-if-condition.rs:19:9
|
||||
|
|
||||
LL | let value = &my_struct.field;
|
||||
| --------------- immutable borrow occurs here
|
||||
LL | if value.is_empty() {
|
||||
LL | my_struct.field.push_str("Hello, world!");
|
||||
| ^^^^^^^^^^^^^^^ mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - immutable borrow ends here
|
||||
|
||||
error[E0502]: cannot borrow `my_struct.field` as mutable because it is also borrowed as immutable (Ast)
|
||||
--> $DIR/region-ends-after-if-condition.rs:29:9
|
||||
|
|
||||
LL | let value = &my_struct.field;
|
||||
| --------------- immutable borrow occurs here
|
||||
LL | if value.is_empty() {
|
||||
LL | my_struct.field.push_str("Hello, world!");
|
||||
| ^^^^^^^^^^^^^^^ mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - immutable borrow ends here
|
||||
|
||||
error[E0502]: cannot borrow `my_struct.field` as mutable because it is also borrowed as immutable (Mir)
|
||||
--> $DIR/region-ends-after-if-condition.rs:29:9
|
||||
error[E0502]: cannot borrow `my_struct.field` as mutable because it is also borrowed as immutable
|
||||
--> $DIR/region-ends-after-if-condition.rs:26:9
|
||||
|
|
||||
LL | let value = &my_struct.field;
|
||||
| ---------------- immutable borrow occurs here
|
||||
LL | if value.is_empty() {
|
||||
LL | my_struct.field.push_str("Hello, world!");
|
||||
| ^^^^^^^^^^^^^^^ mutable borrow occurs here
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
|
||||
...
|
||||
LL | drop(value);
|
||||
| ----- immutable borrow later used here
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0502`.
|
||||
|
@ -2,8 +2,6 @@
|
||||
// in the type of `p` includes the points after `&v[0]` up to (but not
|
||||
// including) the call to `use_x`. The `else` branch is not included.
|
||||
|
||||
// compile-flags:-Zborrowck=compare
|
||||
|
||||
#![allow(warnings)]
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
@ -20,8 +18,7 @@ fn nll_fail() {
|
||||
let value = &mut my_struct.field;
|
||||
loop {
|
||||
my_struct.field.push_str("Hello, world!");
|
||||
//~^ ERROR (Ast) [E0499]
|
||||
//~| ERROR (Mir) [E0499]
|
||||
//~^ ERROR [E0499]
|
||||
value.len();
|
||||
return;
|
||||
}
|
||||
@ -33,7 +30,6 @@ fn nll_ok() {
|
||||
let value = &mut my_struct.field;
|
||||
loop {
|
||||
my_struct.field.push_str("Hello, world!");
|
||||
//~^ ERROR (Ast) [E0499]
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -1,39 +1,15 @@
|
||||
error[E0499]: cannot borrow `my_struct.field` as mutable more than once at a time (Ast)
|
||||
--> $DIR/return_from_loop.rs:22:9
|
||||
|
|
||||
LL | let value = &mut my_struct.field;
|
||||
| --------------- first mutable borrow occurs here
|
||||
LL | loop {
|
||||
LL | my_struct.field.push_str("Hello, world!");
|
||||
| ^^^^^^^^^^^^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `my_struct.field` as mutable more than once at a time (Ast)
|
||||
--> $DIR/return_from_loop.rs:35:9
|
||||
|
|
||||
LL | let value = &mut my_struct.field;
|
||||
| --------------- first mutable borrow occurs here
|
||||
LL | loop {
|
||||
LL | my_struct.field.push_str("Hello, world!");
|
||||
| ^^^^^^^^^^^^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL | }
|
||||
| - first borrow ends here
|
||||
|
||||
error[E0499]: cannot borrow `my_struct.field` as mutable more than once at a time (Mir)
|
||||
--> $DIR/return_from_loop.rs:22:9
|
||||
error[E0499]: cannot borrow `my_struct.field` as mutable more than once at a time
|
||||
--> $DIR/return_from_loop.rs:20:9
|
||||
|
|
||||
LL | let value = &mut my_struct.field;
|
||||
| -------------------- first mutable borrow occurs here
|
||||
LL | loop {
|
||||
LL | my_struct.field.push_str("Hello, world!");
|
||||
| ^^^^^^^^^^^^^^^ second mutable borrow occurs here
|
||||
...
|
||||
LL |
|
||||
LL | value.len();
|
||||
| ----- first borrow later used here
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0499`.
|
||||
|
Loading…
x
Reference in New Issue
Block a user