diff options
| author | Matthew Jasper <mjjasper1@gmail.com> | 2018-09-23 15:56:14 +0100 |
|---|---|---|
| committer | Matthew Jasper <mjjasper1@gmail.com> | 2018-09-23 20:27:41 +0100 |
| commit | d3f9af88919f213f70147da0317e4fc4b54fc830 (patch) | |
| tree | 72857354bf87be99a1544d44574dca1787eb9789 | |
| parent | f49f6e73a8a2dd6ec9f86df9922ccfa2210d9eda (diff) | |
| download | rust-d3f9af88919f213f70147da0317e4fc4b54fc830.tar.gz rust-d3f9af88919f213f70147da0317e4fc4b54fc830.zip | |
Remove irrelevant message about drop order
When dropping a self-borrowing struct we shouldn't add a "values in a scope are dropped in the opposite order they are defined" message, since there is only one value being dropped.
5 files changed, 4 insertions, 9 deletions
diff --git a/src/librustc_mir/borrow_check/nll/explain_borrow/mod.rs b/src/librustc_mir/borrow_check/nll/explain_borrow/mod.rs index 755148b6992..f4052f94801 100644 --- a/src/librustc_mir/borrow_check/nll/explain_borrow/mod.rs +++ b/src/librustc_mir/borrow_check/nll/explain_borrow/mod.rs @@ -143,13 +143,15 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { Some(Cause::DropVar(local, location)) => match &mir.local_decls[local].name { Some(local_name) => { let mut should_note_order = false; - if let Some((WriteKind::StorageDeadOrDrop(_), place)) = kind_place { + if let Some((WriteKind::StorageDeadOrDrop, place)) = kind_place { if let Place::Local(borrowed_local) = place { let dropped_local_scope = mir.local_decls[local].visibility_scope; let borrowed_local_scope = mir.local_decls[*borrowed_local].visibility_scope; - if mir.is_sub_scope(borrowed_local_scope, dropped_local_scope) { + if mir.is_sub_scope(borrowed_local_scope, dropped_local_scope) + && local != *borrowed_local + { should_note_order = true; } } diff --git a/src/test/ui/dropck/dropck-union.nll.stderr b/src/test/ui/dropck/dropck-union.nll.stderr index 35d7ffc7879..ffb322b85dc 100644 --- a/src/test/ui/dropck/dropck-union.nll.stderr +++ b/src/test/ui/dropck/dropck-union.nll.stderr @@ -8,8 +8,6 @@ LL | } | | | `v` 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 error: aborting due to previous error diff --git a/src/test/ui/span/dropck_direct_cycle_with_drop.nll.stderr b/src/test/ui/span/dropck_direct_cycle_with_drop.nll.stderr index 2884b1818ba..baf3cef2ae8 100644 --- a/src/test/ui/span/dropck_direct_cycle_with_drop.nll.stderr +++ b/src/test/ui/span/dropck_direct_cycle_with_drop.nll.stderr @@ -23,8 +23,6 @@ LL | } | | | `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 error: aborting due to 2 previous errors diff --git a/src/test/ui/span/issue28498-reject-ex1.nll.stderr b/src/test/ui/span/issue28498-reject-ex1.nll.stderr index 1f72b78ebc7..0f6f6e381d8 100644 --- a/src/test/ui/span/issue28498-reject-ex1.nll.stderr +++ b/src/test/ui/span/issue28498-reject-ex1.nll.stderr @@ -11,7 +11,6 @@ LL | } | borrow later used here, when `foo` is dropped | = note: consider using a `let` binding to create a longer lived value - = note: values in a scope are dropped in the opposite order they are defined error: aborting due to previous error diff --git a/src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.nll.stderr b/src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.nll.stderr index 8cda1e60ba9..afd90237d16 100644 --- a/src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.nll.stderr +++ b/src/test/ui/unboxed-closures/unboxed-closures-failed-recursive-fn-1.nll.stderr @@ -11,8 +11,6 @@ LL | } | | | `factorial` dropped here while still borrowed | borrow later used here, when `factorial` is dropped - | - = note: values in a scope are dropped in the opposite order they are defined error[E0506]: cannot assign to `factorial` because it is borrowed --> $DIR/unboxed-closures-failed-recursive-fn-1.rs:30:5 |
