mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-25 14:13:38 +00:00
Rollup merge of #47368 - chrisvittal:nll-tests, r=nikomatsakis
Add NLL tests for #46557 and #38899 This adapts the sample code from the two issues into test code. Closes #46557 Closes #38899 r? @nikomatsakis
This commit is contained in:
commit
afb1e193ef
30
src/test/ui/nll/borrowed-referent-issue-38899.rs
Normal file
30
src/test/ui/nll/borrowed-referent-issue-38899.rs
Normal file
@ -0,0 +1,30 @@
|
||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// Regression test for issue #38899
|
||||
|
||||
#![feature(nll)]
|
||||
#![allow(dead_code)]
|
||||
|
||||
pub struct Block<'a> {
|
||||
current: &'a u8,
|
||||
unrelated: &'a u8,
|
||||
}
|
||||
|
||||
fn bump<'a>(mut block: &mut Block<'a>) {
|
||||
let x = &mut block;
|
||||
println!("{}", x.current);
|
||||
let p: &'a u8 = &*block.current;
|
||||
//~^ ERROR cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
drop(x);
|
||||
drop(p);
|
||||
}
|
||||
|
||||
fn main() {}
|
11
src/test/ui/nll/borrowed-referent-issue-38899.stderr
Normal file
11
src/test/ui/nll/borrowed-referent-issue-38899.stderr
Normal file
@ -0,0 +1,11 @@
|
||||
error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
|
||||
--> $DIR/borrowed-referent-issue-38899.rs:24:21
|
||||
|
|
||||
22 | let x = &mut block;
|
||||
| ---------- mutable borrow occurs here
|
||||
23 | println!("{}", x.current);
|
||||
24 | let p: &'a u8 = &*block.current;
|
||||
| ^^^^^^^^^^^^^^^ immutable borrow occurs here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
21
src/test/ui/nll/return-ref-mut-issue-46557.rs
Normal file
21
src/test/ui/nll/return-ref-mut-issue-46557.rs
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// Regression test for issue #46557
|
||||
|
||||
#![feature(nll)]
|
||||
#![allow(dead_code)]
|
||||
|
||||
fn gimme_static_mut() -> &'static mut u32 {
|
||||
let ref mut x = 1234543; //~ ERROR borrowed value does not live long enough [E0597]
|
||||
x
|
||||
}
|
||||
|
||||
fn main() {}
|
13
src/test/ui/nll/return-ref-mut-issue-46557.stderr
Normal file
13
src/test/ui/nll/return-ref-mut-issue-46557.stderr
Normal file
@ -0,0 +1,13 @@
|
||||
error[E0597]: borrowed value does not live long enough
|
||||
--> $DIR/return-ref-mut-issue-46557.rs:17:21
|
||||
|
|
||||
17 | let ref mut x = 1234543; //~ ERROR borrowed value does not live long enough [E0597]
|
||||
| ^^^^^^^ temporary value does not live long enough
|
||||
18 | x
|
||||
19 | }
|
||||
| - temporary value only lives until here
|
||||
|
|
||||
= note: borrowed value must be valid for lifetime '_#2r...
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Reference in New Issue
Block a user