Don't match on region kinds when reporting NLL errors
With NLL region kinds are always ReVar
This commit is contained in:
parent
8dbbd81f7e
commit
338d545b90
@ -14,7 +14,7 @@ use rustc::mir::{BindingForm, BorrowKind, ClearCrossCrate, Field, Local};
|
||||
use rustc::mir::{LocalDecl, LocalKind, Location, Operand, Place};
|
||||
use rustc::mir::{ProjectionElem, Rvalue, Statement, StatementKind};
|
||||
use rustc::mir::VarBindingForm;
|
||||
use rustc::ty::{self, RegionKind};
|
||||
use rustc::ty;
|
||||
use rustc_data_structures::indexed_vec::Idx;
|
||||
use rustc_data_structures::sync::Lrc;
|
||||
use syntax_pos::Span;
|
||||
@ -427,34 +427,9 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
||||
self.access_place_error_reported
|
||||
.insert((root_place.clone(), borrow_span));
|
||||
|
||||
match (borrow.region, &self.describe_place(&borrow.borrowed_place)) {
|
||||
(RegionKind::ReScope(_), Some(name)) => {
|
||||
self.report_scoped_local_value_does_not_live_long_enough(
|
||||
context,
|
||||
name,
|
||||
&scope_tree,
|
||||
&borrow,
|
||||
drop_span,
|
||||
borrow_span,
|
||||
proper_span,
|
||||
);
|
||||
}
|
||||
(RegionKind::ReScope(_), None) => {
|
||||
self.report_scoped_temporary_value_does_not_live_long_enough(
|
||||
context,
|
||||
&scope_tree,
|
||||
&borrow,
|
||||
drop_span,
|
||||
borrow_span,
|
||||
proper_span,
|
||||
);
|
||||
}
|
||||
(RegionKind::ReEarlyBound(_), Some(name))
|
||||
| (RegionKind::ReFree(_), Some(name))
|
||||
| (RegionKind::ReStatic, Some(name))
|
||||
| (RegionKind::ReEmpty, Some(name))
|
||||
| (RegionKind::ReVar(_), Some(name)) => {
|
||||
self.report_unscoped_local_value_does_not_live_long_enough(
|
||||
match &self.describe_place(&borrow.borrowed_place) {
|
||||
Some(name) => {
|
||||
self.report_local_value_does_not_live_long_enough(
|
||||
context,
|
||||
name,
|
||||
&scope_tree,
|
||||
@ -465,12 +440,8 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
||||
kind.map(|k| (k, place_span.0)),
|
||||
);
|
||||
}
|
||||
(RegionKind::ReEarlyBound(_), None)
|
||||
| (RegionKind::ReFree(_), None)
|
||||
| (RegionKind::ReStatic, None)
|
||||
| (RegionKind::ReEmpty, None)
|
||||
| (RegionKind::ReVar(_), None) => {
|
||||
self.report_unscoped_temporary_value_does_not_live_long_enough(
|
||||
None => {
|
||||
self.report_temporary_value_does_not_live_long_enough(
|
||||
context,
|
||||
&scope_tree,
|
||||
&borrow,
|
||||
@ -479,65 +450,10 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
||||
proper_span,
|
||||
);
|
||||
}
|
||||
(RegionKind::ReLateBound(_, _), _)
|
||||
| (RegionKind::ReSkolemized(_, _), _)
|
||||
| (RegionKind::ReClosureBound(_), _)
|
||||
| (RegionKind::ReCanonical(_), _)
|
||||
| (RegionKind::ReErased, _) => {
|
||||
span_bug!(
|
||||
drop_span,
|
||||
"region {:?} does not make sense in this context",
|
||||
borrow.region
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn report_scoped_local_value_does_not_live_long_enough(
|
||||
&mut self,
|
||||
context: Context,
|
||||
name: &String,
|
||||
_scope_tree: &Lrc<ScopeTree>,
|
||||
borrow: &BorrowData<'tcx>,
|
||||
drop_span: Span,
|
||||
borrow_span: Span,
|
||||
_proper_span: Span,
|
||||
) {
|
||||
let tcx = self.tcx;
|
||||
let mut err =
|
||||
tcx.path_does_not_live_long_enough(borrow_span, &format!("`{}`", name), Origin::Mir);
|
||||
err.span_label(borrow_span, "borrowed value does not live long enough");
|
||||
err.span_label(
|
||||
drop_span,
|
||||
format!("`{}` dropped here while still borrowed", name),
|
||||
);
|
||||
self.explain_why_borrow_contains_point(context, borrow, None, &mut err);
|
||||
err.buffer(&mut self.errors_buffer);
|
||||
}
|
||||
|
||||
fn report_scoped_temporary_value_does_not_live_long_enough(
|
||||
&mut self,
|
||||
context: Context,
|
||||
_scope_tree: &Lrc<ScopeTree>,
|
||||
borrow: &BorrowData<'tcx>,
|
||||
drop_span: Span,
|
||||
_borrow_span: Span,
|
||||
proper_span: Span,
|
||||
) {
|
||||
let tcx = self.tcx;
|
||||
let mut err =
|
||||
tcx.path_does_not_live_long_enough(proper_span, "borrowed value", Origin::Mir);
|
||||
err.span_label(proper_span, "temporary value does not live long enough");
|
||||
err.span_label(
|
||||
drop_span,
|
||||
"temporary value dropped here while still borrowed",
|
||||
);
|
||||
err.note("consider using a `let` binding to increase its lifetime");
|
||||
self.explain_why_borrow_contains_point(context, borrow, None, &mut err);
|
||||
err.buffer(&mut self.errors_buffer);
|
||||
}
|
||||
|
||||
fn report_unscoped_local_value_does_not_live_long_enough(
|
||||
fn report_local_value_does_not_live_long_enough(
|
||||
&mut self,
|
||||
context: Context,
|
||||
name: &String,
|
||||
@ -549,7 +465,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
||||
kind_place: Option<(WriteKind, &Place<'tcx>)>,
|
||||
) {
|
||||
debug!(
|
||||
"report_unscoped_local_value_does_not_live_long_enough(\
|
||||
"report_local_value_does_not_live_long_enough(\
|
||||
{:?}, {:?}, {:?}, {:?}, {:?}, {:?}\
|
||||
)",
|
||||
context, name, scope_tree, borrow, drop_span, borrow_span
|
||||
@ -559,13 +475,16 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
||||
let mut err =
|
||||
tcx.path_does_not_live_long_enough(borrow_span, &format!("`{}`", name), Origin::Mir);
|
||||
err.span_label(borrow_span, "borrowed value does not live long enough");
|
||||
err.span_label(drop_span, "borrowed value only lives until here");
|
||||
err.span_label(
|
||||
drop_span,
|
||||
format!("`{}` dropped here while still borrowed", name),
|
||||
);
|
||||
|
||||
self.explain_why_borrow_contains_point(context, borrow, kind_place, &mut err);
|
||||
err.buffer(&mut self.errors_buffer);
|
||||
}
|
||||
|
||||
fn report_unscoped_temporary_value_does_not_live_long_enough(
|
||||
fn report_temporary_value_does_not_live_long_enough(
|
||||
&mut self,
|
||||
context: Context,
|
||||
scope_tree: &Lrc<ScopeTree>,
|
||||
@ -575,7 +494,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
||||
proper_span: Span,
|
||||
) {
|
||||
debug!(
|
||||
"report_unscoped_temporary_value_does_not_live_long_enough(\
|
||||
"report_temporary_value_does_not_live_long_enough(\
|
||||
{:?}, {:?}, {:?}, {:?}, {:?}\
|
||||
)",
|
||||
context, scope_tree, borrow, drop_span, proper_span
|
||||
|
@ -5,7 +5,7 @@ LL | spawn(|| books.push(4));
|
||||
| ^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
LL | //~^ ERROR E0373
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `books` dropped here while still borrowed
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
|
@ -5,7 +5,7 @@ LL | Box::new(|| books.push(4))
|
||||
| ^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
LL | //~^ ERROR E0373
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `books` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 19:8...
|
||||
--> $DIR/borrowck-escaping-closure-error-2.rs:19:8
|
||||
|
@ -7,7 +7,7 @@ LL | dt = Dt("dt", &c_shortest);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `c_shortest` dropped here while still borrowed
|
||||
| borrow later used here, when `dt` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | dt = Dt("dt", &c_shortest);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `c_shortest` dropped here while still borrowed
|
||||
| borrow later used here, when `dt` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | dt = Dt("dt", &c_shortest);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `c_shortest` dropped here while still borrowed
|
||||
| borrow later used here, when `dt` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | //~^ `y` does not live long enough [E0597]
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `y` dropped here while still borrowed
|
||||
| borrow later used here, when `x` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -5,7 +5,7 @@ LL | unsafe { (|| yield &a).resume() }
|
||||
| ^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
LL | //~^ ERROR: `a` does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `a` dropped here while still borrowed
|
||||
|
||||
error[E0597]: `a` does not live long enough
|
||||
--> $DIR/borrowing.rs:24:9
|
||||
@ -16,7 +16,7 @@ LL | | //~^ ERROR: `a` does not live long enough
|
||||
LL | | }
|
||||
| |_________^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `a` dropped here while still borrowed
|
||||
LL | }
|
||||
| - borrow later used here, when `_b` is dropped
|
||||
|
||||
|
@ -7,7 +7,7 @@ LL | let ref_ = Box::leak(Box::new(Some(cell.borrow_mut())));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `*cell` dropped here while still borrowed
|
||||
| borrow later used here, when `gen` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
@ -26,7 +26,7 @@ LL | | };
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `ref_` dropped here while still borrowed
|
||||
| borrow later used here, when `gen` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -5,7 +5,7 @@ LL | a = &b;
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | //~^ ERROR `b` does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `b` dropped here while still borrowed
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -5,7 +5,7 @@ LL | let bb: &B = &*b; //~ ERROR does not live long enough
|
||||
| ^^^ borrowed value does not live long enough
|
||||
LL | make_a(bb)
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `*b` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 36:16...
|
||||
--> $DIR/issue-12470.rs:36:16
|
||||
|
18
src/test/ui/issue-13497-2.nll.stderr
Normal file
18
src/test/ui/issue-13497-2.nll.stderr
Normal file
@ -0,0 +1,18 @@
|
||||
error[E0597]: `rawLines` does not live long enough
|
||||
--> $DIR/issue-13497-2.rs:13:5
|
||||
|
|
||||
LL | rawLines //~ ERROR `rawLines` does not live long enough
|
||||
| ^^^^^^^^ borrowed value does not live long enough
|
||||
LL | .iter().map(|l| l.trim()).collect()
|
||||
LL | }
|
||||
| - `rawLines` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 11:24...
|
||||
--> $DIR/issue-13497-2.rs:11:24
|
||||
|
|
||||
LL | fn read_lines_borrowed<'a>() -> Vec<&'a str> {
|
||||
| ^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0597`.
|
@ -5,7 +5,7 @@ LL | let a = &FOO;
|
||||
| ^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `FOO` dropped here while still borrowed
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
|
@ -5,7 +5,7 @@ LL | let a = &FOO;
|
||||
| ^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `FOO` dropped here while still borrowed
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
|
@ -29,5 +29,5 @@ fn main() {
|
||||
println!("{}", a);
|
||||
});
|
||||
}
|
||||
//[mir]~^ borrowed value only lives until here
|
||||
//[mir]~^ `FOO` dropped here while still borrowed
|
||||
//[ast]~^^ temporary value only lives until here
|
||||
|
@ -57,7 +57,7 @@ LL | &p //~ ERROR `p` does not live long enough
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | //~^ ERROR let bindings in constants are unstable
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `p` dropped here while still borrowed
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
|
@ -5,7 +5,7 @@ LL | &x
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | //~^ ERROR: `x` does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'y as defined on the function body at 17:10...
|
||||
--> $DIR/issue-30438-c.rs:17:10
|
||||
|
@ -11,7 +11,7 @@ LL | id(Box::new(|| *v))
|
||||
| ^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `v` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'r as defined on the function body at 15:6...
|
||||
--> $DIR/issue-4335.rs:15:6
|
||||
|
@ -5,7 +5,7 @@ LL | let foo = Foo { x: &a }; //~ ERROR E0597
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | loop { }
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `a` dropped here while still borrowed
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
|
@ -20,7 +20,7 @@ LL | | &mut z
|
||||
LL | | };
|
||||
| | -
|
||||
| | |
|
||||
| |_____borrowed value only lives until here
|
||||
| |_____`z` dropped here while still borrowed
|
||||
| borrow later used here
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
@ -16,7 +16,7 @@ LL | &x
|
||||
| ^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
|
@ -8,7 +8,7 @@ LL | println!("accumulator before add_assign {:?}", acc.map);
|
||||
| ------- borrow later used here
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `line` dropped here while still borrowed
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -10,7 +10,7 @@ LL | | //~^ ERROR `v` does not live long enough [E0597]
|
||||
LL | | });
|
||||
| |_____-- borrow later used here
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `v` dropped here while still borrowed
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -5,7 +5,7 @@ LL | &v
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | //~^ ERROR `v` does not live long enough [E0597]
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `v` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 14:8...
|
||||
--> $DIR/borrowed-universal-error-2.rs:14:8
|
||||
|
@ -5,7 +5,7 @@ LL | y: &y,
|
||||
| ^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
LL |
|
||||
LL | deref(p);
|
||||
| - borrow later used here
|
||||
|
@ -30,7 +30,7 @@ LL | closure(&mut p, &y);
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | //~^ ERROR `y` does not live long enough [E0597]
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
LL |
|
||||
LL | deref(p);
|
||||
| - borrow later used here
|
||||
|
@ -57,7 +57,7 @@ LL | | };
|
||||
| |_________^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
LL |
|
||||
LL | deref(p);
|
||||
| - borrow later used here
|
||||
|
@ -34,7 +34,7 @@ LL | let mut closure = || p = &y;
|
||||
| ^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
LL |
|
||||
LL | deref(p);
|
||||
| - borrow later used here
|
||||
|
@ -82,7 +82,7 @@ LL | let cell = Cell::new(&a);
|
||||
| ^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `a` dropped here while still borrowed
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
|
@ -5,7 +5,7 @@ LL | let s_inner: &'a S = &*v.0; //~ ERROR `*v.0` does not live long enough
|
||||
| ^^^^^ borrowed value does not live long enough
|
||||
LL | &s_inner.0
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `*v.0` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 21:17...
|
||||
--> $DIR/issue-31567.rs:21:17
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `local` does not live long enough
|
||||
LL | &local //~ ERROR `local` does not live long enough
|
||||
| ^^^^^^ borrowed value does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `local` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the impl at 23:6...
|
||||
--> $DIR/issue-47470.rs:23:6
|
||||
|
@ -5,7 +5,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors for `x
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
||||
error[E0597]: `y` does not live long enough
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:19:17
|
||||
@ -14,7 +14,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors for `x
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
||||
error[E0597]: `x` does not live long enough
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:34:17
|
||||
@ -23,7 +23,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors for `x
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
||||
error[E0597]: `y` does not live long enough
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:34:17
|
||||
@ -32,7 +32,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors for `x
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
||||
error[E0597]: `x` does not live long enough
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:65:17
|
||||
@ -41,7 +41,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors for `x
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 64:10...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:64:10
|
||||
@ -56,7 +56,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors for `x
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 64:10...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:64:10
|
||||
@ -71,7 +71,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors for `x
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 75:10...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:75:10
|
||||
@ -86,7 +86,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors for `x
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the function body at 75:10...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:75:10
|
||||
@ -101,7 +101,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 99:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:99:14
|
||||
@ -116,7 +116,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 99:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:99:14
|
||||
@ -131,7 +131,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 113:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:113:14
|
||||
@ -146,7 +146,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 113:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:113:14
|
||||
@ -161,7 +161,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 141:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:141:14
|
||||
@ -176,7 +176,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 141:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:141:14
|
||||
@ -191,7 +191,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 156:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:156:14
|
||||
@ -206,7 +206,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 156:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:156:14
|
||||
@ -221,7 +221,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 184:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:184:14
|
||||
@ -236,7 +236,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 184:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:184:14
|
||||
@ -251,7 +251,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 198:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:198:14
|
||||
@ -266,7 +266,7 @@ LL | let f = |t: bool| if t { x } else { y }; // (separate errors fo
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
note: borrowed value must be valid for the lifetime 'a as defined on the method body at 198:14...
|
||||
--> $DIR/region-borrow-params-issue-29793-small.rs:198:14
|
||||
|
@ -7,7 +7,7 @@ LL | | if false { &y } else { z }
|
||||
LL | | });
|
||||
| |_________^ borrowed value does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
|
||||
= note: borrowed value must be valid for the static lifetime...
|
||||
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `*a` does not live long enough
|
||||
LL | *a.borrow() + 1
|
||||
| ^ borrowed value does not live long enough
|
||||
LL | }; //~^ ERROR `*a` does not live long enough
|
||||
| - borrowed value only lives until here
|
||||
| - `*a` dropped here while still borrowed
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -7,7 +7,7 @@ LL | assert_eq!(object_invoke1(&*m), (4,5));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `*m` dropped here while still borrowed
|
||||
| borrow later used here, when `m` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | b1.a[1].v.set(Some(&b3));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `b3` dropped here while still borrowed
|
||||
| borrow later used here, when `b1` is dropped
|
||||
|
||||
error[E0597]: `b2` does not live long enough
|
||||
@ -19,7 +19,7 @@ LL | b1.a[0].v.set(Some(&b2));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `b2` dropped here while still borrowed
|
||||
| borrow later used here, when `b1` is dropped
|
||||
|
||||
error[E0597]: `b1` does not live long enough
|
||||
@ -31,7 +31,7 @@ LL | b3.a[0].v.set(Some(&b1));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `b1` dropped here while still borrowed
|
||||
| borrow later used here, when `b1` is dropped
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
@ -7,7 +7,7 @@ LL | d1.p.set(Some(&d2));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `d2` dropped here while still borrowed
|
||||
| borrow later used here, when `d1` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
@ -21,7 +21,7 @@ LL | //~^ ERROR `d1` does not live long enough
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `d1` dropped here while still borrowed
|
||||
| borrow later used here, when `d1` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -6,7 +6,7 @@ LL | _w = Wrap::<&[&str]>(NoisyDrop(&bomb));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `bomb` dropped here while still borrowed
|
||||
| borrow later used here, when `_w` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
@ -20,7 +20,7 @@ LL | let u = NoisyDrop(&v);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `v` dropped here while still borrowed
|
||||
| borrow later used here, when `_w` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | c1.v[1].v.set(Some(&c3));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `c3` dropped here while still borrowed
|
||||
| borrow later used here, when `c1` is dropped
|
||||
|
||||
error[E0597]: `c2` does not live long enough
|
||||
@ -19,7 +19,7 @@ LL | c1.v[0].v.set(Some(&c2));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `c2` dropped here while still borrowed
|
||||
| borrow later used here, when `c1` is dropped
|
||||
|
||||
error[E0597]: `c1` does not live long enough
|
||||
@ -31,7 +31,7 @@ LL | c3.v[0].v.set(Some(&c1));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `c1` dropped here while still borrowed
|
||||
| borrow later used here, when `c1` is dropped
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `x` does not live long enough
|
||||
LL | let f = to_fn_once(move|| &x); //~ ERROR does not live long enough
|
||||
| ^-
|
||||
| ||
|
||||
| |borrowed value only lives until here
|
||||
| |`x` dropped here while still borrowed
|
||||
| borrowed value does not live long enough
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `y` does not live long enough
|
||||
LL | y.borrow().clone()
|
||||
| ^ borrowed value does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
||||
error[E0597]: `y` does not live long enough
|
||||
--> $DIR/issue-23338-locals-die-before-temps-of-body.rs:27:9
|
||||
@ -12,7 +12,7 @@ error[E0597]: `y` does not live long enough
|
||||
LL | y.borrow().clone()
|
||||
| ^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
@ -7,7 +7,7 @@ LL | _d = D_Child(&d1);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `d1` dropped here while still borrowed
|
||||
| borrow later used here, when `_d` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -6,7 +6,7 @@ LL | _d = D_HasSelfMethod(&d1);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `d1` dropped here while still borrowed
|
||||
| borrow later used here, when `_d` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
@ -19,7 +19,7 @@ LL | _d = D_HasMethodWithSelfArg(&d1);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `d1` dropped here while still borrowed
|
||||
| borrow later used here, when `_d` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
@ -32,7 +32,7 @@ LL | _d = D_HasType(&d1);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `d1` dropped here while still borrowed
|
||||
| borrow later used here, when `_d` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -6,7 +6,7 @@ LL | d2 = D(S(&d1, "inner"), "d2");
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `d1` dropped here while still borrowed
|
||||
| borrow later used here, when `d2` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | let test = Test{test: &container};
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `container` dropped here while still borrowed
|
||||
| borrow later used here, when `container` is dropped
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -6,7 +6,7 @@ LL | zook.button = B::BigRedButton(&ticking);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `ticking` dropped here while still borrowed
|
||||
| borrow later used here, when `zook` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -6,7 +6,7 @@ LL | y = Arc::new(Foo(&x));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `x` dropped here while still borrowed
|
||||
| borrow later used here, when `y` is dropped
|
||||
|
||||
error[E0597]: `x` does not live long enough
|
||||
@ -17,7 +17,7 @@ LL | y = Rc::new(Foo(&x));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `x` dropped here while still borrowed
|
||||
| borrow later used here, when `y` is dropped
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
@ -5,7 +5,7 @@ LL | p = &a;
|
||||
| ^^^^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `a` dropped here while still borrowed
|
||||
LL | p.use_ref();
|
||||
| - borrow later used here
|
||||
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `foo` does not live long enough
|
||||
LL | {println!("{:?}", match { let foo = vec![1, 2]; foo.get(1) } { x => x });}
|
||||
| ------------------------------^^^--------------------
|
||||
| | | |
|
||||
| | | borrowed value only lives until here
|
||||
| | | `foo` dropped here while still borrowed
|
||||
| | borrowed value does not live long enough
|
||||
| borrow later used here
|
||||
|
||||
|
@ -7,7 +7,7 @@ LL | foo.data[0].1.set(Some(&foo.data[1]));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `foo.data` dropped here while still borrowed
|
||||
| borrow later used here, when `foo` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | foo1 = Foo(1, &first_dropped);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `first_dropped` dropped here while still borrowed
|
||||
| borrow later used here, when `foo1` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | foo1 = Foo(1, &first_dropped, Box::new(callback));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `first_dropped` dropped here while still borrowed
|
||||
| borrow later used here, when `foo1` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -7,7 +7,7 @@ LL | foo1 = Foo(1, &first_dropped);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `first_dropped` dropped here while still borrowed
|
||||
| borrow later used here, when `foo1` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `b` does not live long enough
|
||||
LL | p = &*b;
|
||||
| ^ borrowed value does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `b` dropped here while still borrowed
|
||||
LL | //~^^ ERROR `b` does not live long enough
|
||||
LL | p.use_ref();
|
||||
| - borrow later used here
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `b` does not live long enough
|
||||
LL | &a..&b
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `b` dropped here while still borrowed
|
||||
...
|
||||
LL | r.use_ref();
|
||||
| - borrow later used here
|
||||
@ -15,7 +15,7 @@ error[E0597]: `a` does not live long enough
|
||||
LL | &a..&b
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `a` dropped here while still borrowed
|
||||
...
|
||||
LL | r.use_ref();
|
||||
| - borrow later used here
|
||||
|
@ -5,7 +5,7 @@ LL | let c_ref = &c;
|
||||
| ^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `c` dropped here while still borrowed
|
||||
LL | f.use_mut();
|
||||
| - borrow later used here
|
||||
|
||||
|
@ -10,7 +10,7 @@ LL | | repeater3(tmp1)
|
||||
LL | | };
|
||||
| | -
|
||||
| | |
|
||||
| |_____borrowed value only lives until here
|
||||
| |_____`tmp0` dropped here while still borrowed
|
||||
| borrow later used here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -6,7 +6,7 @@ LL | let x = 1 + *p;
|
||||
LL | p = &x;
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -41,7 +41,7 @@ LL | _y.push(&mut z);
|
||||
| borrow later used here
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `z` dropped here while still borrowed
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
|
@ -5,7 +5,7 @@ LL | y = borrow(&*x);
|
||||
| ^^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `*x` dropped here while still borrowed
|
||||
LL | assert!(*y != 0);
|
||||
| -- borrow later used here
|
||||
|
||||
|
@ -8,7 +8,7 @@ LL | | //~^ ERROR `y` does not live long enough
|
||||
LL | | })
|
||||
| |_________^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `y` dropped here while still borrowed
|
||||
LL |
|
||||
LL | bad.join();
|
||||
| --- borrow later used here
|
||||
@ -20,7 +20,7 @@ LL | let y = &x;
|
||||
| ^^ borrowed value does not live long enough
|
||||
...
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
LL |
|
||||
LL | bad.join();
|
||||
| --- borrow later used here
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `x` does not live long enough
|
||||
LL | Mutex::new(&x)
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
...
|
||||
LL | let _dangling = *lock.lock().unwrap();
|
||||
| ---- borrow later used here
|
||||
@ -15,7 +15,7 @@ error[E0597]: `x` does not live long enough
|
||||
LL | RwLock::new(&x)
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
LL | //~^^ ERROR `x` does not live long enough
|
||||
LL | let _dangling = *lock.read().unwrap();
|
||||
| ---- borrow later used here
|
||||
@ -30,7 +30,7 @@ LL | let _ = tx.send(&x);
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | (tx, rx)
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `x` dropped here while still borrowed
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
@ -15,7 +15,7 @@ error[E0597]: `z` does not live long enough
|
||||
LL | *lock.lock().unwrap() = &z;
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `z` dropped here while still borrowed
|
||||
LL | //~^^ ERROR `z` does not live long enough
|
||||
LL | lock.use_ref(); // (Mutex is #[may_dangle] so its dtor does not use `z` => needs explicit use)
|
||||
| ---- borrow later used here
|
||||
@ -37,7 +37,7 @@ error[E0597]: `z` does not live long enough
|
||||
LL | *lock.write().unwrap() = &z;
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `z` dropped here while still borrowed
|
||||
LL | //~^^ ERROR `z` does not live long enough
|
||||
LL | lock.use_ref(); // (RwLock is #[may_dangle] so its dtor does not use `z` => needs explicit use)
|
||||
| ---- borrow later used here
|
||||
@ -59,7 +59,7 @@ error[E0597]: `z` does not live long enough
|
||||
LL | tx.send(&z).unwrap();
|
||||
| ^^ borrowed value does not live long enough
|
||||
LL | }
|
||||
| - borrowed value only lives until here
|
||||
| - `z` dropped here while still borrowed
|
||||
...
|
||||
LL | }
|
||||
| - borrow later used here, when `tx` is dropped
|
||||
|
@ -7,7 +7,7 @@ LL | c1.v[0].v.set(Some(&c2));
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `c2` dropped here while still borrowed
|
||||
| borrow later used here, when `c1` is dropped
|
||||
|
||||
error[E0597]: `c1` does not live long enough
|
||||
@ -19,7 +19,7 @@ LL | //~^ ERROR `c1` does not live long enough
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `c1` dropped here while still borrowed
|
||||
| borrow later used here, when `c1` is dropped
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
@ -7,7 +7,7 @@ LL | v.push(&y);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `y` dropped here while still borrowed
|
||||
| borrow later used here, when `v` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
@ -21,7 +21,7 @@ LL | v.push(&x);
|
||||
LL | }
|
||||
| -
|
||||
| |
|
||||
| borrowed value only lives until here
|
||||
| `x` dropped here while still borrowed
|
||||
| borrow later used here, when `v` is dropped
|
||||
|
|
||||
= note: values in a scope are dropped in the opposite order they are defined
|
||||
|
@ -4,7 +4,7 @@ error[E0597]: `pointer` does not live long enough
|
||||
LL | f2.xmute(&pointer)
|
||||
| ^^^^^^^^ borrowed value does not live long enough
|
||||
LL | };
|
||||
| - borrowed value only lives until here
|
||||
| - `pointer` dropped here while still borrowed
|
||||
LL | //~^^ ERROR `pointer` does not live long enough
|
||||
LL | println!("{}", dangling);
|
||||
| -------- borrow later used here
|
||||
|
Loading…
Reference in New Issue
Block a user