Auto merge of #51651 - spastorino:fix_var_name_in_e0502, r=nikomatsakis
Fix variable name in E0502 double borrow error Closes #51268 r? @nikomatsakis
This commit is contained in:
commit
637fd2e048
@ -356,6 +356,9 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> {
|
||||
};
|
||||
|
||||
if let Some((_, var_span)) = old_closure_span {
|
||||
let place = &issued_borrow.borrowed_place;
|
||||
let desc_place = self.describe_place(place).unwrap_or("_".to_owned());
|
||||
|
||||
err.span_label(
|
||||
var_span,
|
||||
format!(
|
||||
|
35
src/test/ui/nll/issue-51268.rs
Normal file
35
src/test/ui/nll/issue-51268.rs
Normal file
@ -0,0 +1,35 @@
|
||||
// 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.
|
||||
|
||||
// ignore-tidy-linelength
|
||||
|
||||
#![feature(nll)]
|
||||
|
||||
struct Bar;
|
||||
|
||||
impl Bar {
|
||||
fn bar(&mut self, _: impl Fn()) {}
|
||||
}
|
||||
|
||||
struct Foo {
|
||||
thing: Bar,
|
||||
number: usize,
|
||||
}
|
||||
|
||||
impl Foo {
|
||||
fn foo(&mut self) {
|
||||
self.thing.bar(|| {
|
||||
//~^ ERROR cannot borrow `self.thing` as mutable because it is also borrowed as immutable [E0502]
|
||||
&self.number;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
20
src/test/ui/nll/issue-51268.stderr
Normal file
20
src/test/ui/nll/issue-51268.stderr
Normal file
@ -0,0 +1,20 @@
|
||||
error[E0502]: cannot borrow `self.thing` as mutable because it is also borrowed as immutable
|
||||
--> $DIR/issue-51268.rs:28:9
|
||||
|
|
||||
LL | self.thing.bar(|| {
|
||||
| ^ -- immutable borrow occurs here
|
||||
| _________|
|
||||
| |_________|
|
||||
| ||
|
||||
LL | || //~^ ERROR cannot borrow `self.thing` as mutable because it is also borrowed as immutable [E0502]
|
||||
LL | || &self.number;
|
||||
| || ---- previous borrow occurs due to use of `self` in closure
|
||||
LL | || });
|
||||
| || ^
|
||||
| ||__________|
|
||||
| |___________mutable borrow occurs here
|
||||
| borrow later used here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0502`.
|
Loading…
Reference in New Issue
Block a user