add tests
This commit is contained in:
parent
cfd0623411
commit
b5732508dd
4 changed files with 78 additions and 0 deletions
|
@ -0,0 +1,18 @@
|
|||
// edition:2021
|
||||
|
||||
// regression test for #112056
|
||||
|
||||
fn extend_lifetime<'a, 'b>(x: &mut (&'a str,), y: &'b str) {
|
||||
let mut closure = |input| x.0 = input;
|
||||
//~^ ERROR: lifetime may not live long enough
|
||||
closure(y);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut tuple = ("static",);
|
||||
{
|
||||
let x = String::from("temporary");
|
||||
extend_lifetime(&mut tuple, &x);
|
||||
}
|
||||
println!("{}", tuple.0);
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
error: lifetime may not live long enough
|
||||
--> $DIR/unique-borrows-are-invariant-1.rs:6:31
|
||||
|
|
||||
LL | fn extend_lifetime<'a, 'b>(x: &mut (&'a str,), y: &'b str) {
|
||||
| -- -- lifetime `'b` defined here
|
||||
| |
|
||||
| lifetime `'a` defined here
|
||||
LL | let mut closure = |input| x.0 = input;
|
||||
| ^^^^^^^^^^^ assignment requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
// edition:2021
|
||||
|
||||
// regression test for #112056
|
||||
|
||||
struct Spooky<'b> {
|
||||
owned: Option<&'static u32>,
|
||||
borrowed: &'b &'static u32,
|
||||
}
|
||||
|
||||
impl<'b> Spooky<'b> {
|
||||
fn create_self_reference<'a>(&'a mut self) {
|
||||
let mut closure = || {
|
||||
if let Some(owned) = &self.owned {
|
||||
let borrow: &'a &'static u32 = owned;
|
||||
self.borrowed = borrow;
|
||||
//~^ ERROR: lifetime may not live long enough
|
||||
}
|
||||
};
|
||||
closure();
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut spooky: Spooky<'static> = Spooky {
|
||||
owned: Some(&1),
|
||||
borrowed: &&1,
|
||||
};
|
||||
spooky.create_self_reference();
|
||||
spooky.owned = None;
|
||||
println!("{}", **spooky.borrowed);
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
error: lifetime may not live long enough
|
||||
--> $DIR/unique-borrows-are-invariant-2.rs:15:17
|
||||
|
|
||||
LL | impl<'b> Spooky<'b> {
|
||||
| -- lifetime `'b` defined here
|
||||
LL | fn create_self_reference<'a>(&'a mut self) {
|
||||
| -- lifetime `'a` defined here
|
||||
...
|
||||
LL | self.borrowed = borrow;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ assignment requires that `'a` must outlive `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Add table
Reference in a new issue