Rollup merge of #48902 - csmoe:refactor_BorrowckErrors_fn_self, r=nikomatsakis
refactor the `BorrowckErrors` trait to take `fn(self)` Fixes #48783
This commit is contained in:
@@ -253,8 +253,8 @@ pub struct BorrowckCtxt<'a, 'tcx: 'a> {
|
|||||||
used_mut_nodes: RefCell<FxHashSet<HirId>>,
|
used_mut_nodes: RefCell<FxHashSet<HirId>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'b, 'tcx: 'b> BorrowckErrors for BorrowckCtxt<'b, 'tcx> {
|
impl<'a, 'b, 'tcx: 'b> BorrowckErrors<'a> for &'a BorrowckCtxt<'b, 'tcx> {
|
||||||
fn struct_span_err_with_code<'a, S: Into<MultiSpan>>(&'a self,
|
fn struct_span_err_with_code<S: Into<MultiSpan>>(self,
|
||||||
sp: S,
|
sp: S,
|
||||||
msg: &str,
|
msg: &str,
|
||||||
code: DiagnosticId)
|
code: DiagnosticId)
|
||||||
@@ -263,7 +263,7 @@ impl<'b, 'tcx: 'b> BorrowckErrors for BorrowckCtxt<'b, 'tcx> {
|
|||||||
self.tcx.sess.struct_span_err_with_code(sp, msg, code)
|
self.tcx.sess.struct_span_err_with_code(sp, msg, code)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn struct_span_err<'a, S: Into<MultiSpan>>(&'a self,
|
fn struct_span_err<S: Into<MultiSpan>>(self,
|
||||||
sp: S,
|
sp: S,
|
||||||
msg: &str)
|
msg: &str)
|
||||||
-> DiagnosticBuilder<'a>
|
-> DiagnosticBuilder<'a>
|
||||||
@@ -271,7 +271,7 @@ impl<'b, 'tcx: 'b> BorrowckErrors for BorrowckCtxt<'b, 'tcx> {
|
|||||||
self.tcx.sess.struct_span_err(sp, msg)
|
self.tcx.sess.struct_span_err(sp, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cancel_if_wrong_origin<'a>(&'a self,
|
fn cancel_if_wrong_origin(self,
|
||||||
mut diag: DiagnosticBuilder<'a>,
|
mut diag: DiagnosticBuilder<'a>,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder<'a>
|
-> DiagnosticBuilder<'a>
|
||||||
|
|||||||
@@ -52,30 +52,30 @@ impl Origin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait BorrowckErrors {
|
pub trait BorrowckErrors<'cx>: Sized + Copy {
|
||||||
fn struct_span_err_with_code<'a, S: Into<MultiSpan>>(&'a self,
|
fn struct_span_err_with_code<S: Into<MultiSpan>>(self,
|
||||||
sp: S,
|
sp: S,
|
||||||
msg: &str,
|
msg: &str,
|
||||||
code: DiagnosticId)
|
code: DiagnosticId)
|
||||||
-> DiagnosticBuilder<'a>;
|
-> DiagnosticBuilder<'cx>;
|
||||||
|
|
||||||
fn struct_span_err<'a, S: Into<MultiSpan>>(&'a self,
|
fn struct_span_err<S: Into<MultiSpan>>(self,
|
||||||
sp: S,
|
sp: S,
|
||||||
msg: &str)
|
msg: &str)
|
||||||
-> DiagnosticBuilder<'a>;
|
-> DiagnosticBuilder<'cx>;
|
||||||
|
|
||||||
/// Cancels the given error if we shouldn't emit errors for a given
|
/// Cancels the given error if we shouldn't emit errors for a given
|
||||||
/// origin in the current mode.
|
/// origin in the current mode.
|
||||||
///
|
///
|
||||||
/// Always make sure that the error gets passed through this function
|
/// Always make sure that the error gets passed through this function
|
||||||
/// before you return it.
|
/// before you return it.
|
||||||
fn cancel_if_wrong_origin<'a>(&'a self,
|
fn cancel_if_wrong_origin(self,
|
||||||
diag: DiagnosticBuilder<'a>,
|
diag: DiagnosticBuilder<'cx>,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder<'a>;
|
-> DiagnosticBuilder<'cx>;
|
||||||
|
|
||||||
fn cannot_move_when_borrowed(&self, span: Span, desc: &str, o: Origin)
|
fn cannot_move_when_borrowed(self, span: Span, desc: &str, o: Origin)
|
||||||
-> DiagnosticBuilder<'_>
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, span, E0505,
|
let err = struct_span_err!(self, span, E0505,
|
||||||
"cannot move out of `{}` because it is borrowed{OGN}",
|
"cannot move out of `{}` because it is borrowed{OGN}",
|
||||||
@@ -83,13 +83,13 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_use_when_mutably_borrowed(&self,
|
fn cannot_use_when_mutably_borrowed(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
desc: &str,
|
desc: &str,
|
||||||
borrow_span: Span,
|
borrow_span: Span,
|
||||||
borrow_desc: &str,
|
borrow_desc: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder<'_>
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, span, E0503,
|
let mut err = struct_span_err!(self, span, E0503,
|
||||||
"cannot use `{}` because it was mutably borrowed{OGN}",
|
"cannot use `{}` because it was mutably borrowed{OGN}",
|
||||||
@@ -101,12 +101,12 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_act_on_uninitialized_variable(&self,
|
fn cannot_act_on_uninitialized_variable(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
verb: &str,
|
verb: &str,
|
||||||
desc: &str,
|
desc: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, span, E0381,
|
let err = struct_span_err!(self, span, E0381,
|
||||||
"{} of possibly uninitialized variable: `{}`{OGN}",
|
"{} of possibly uninitialized variable: `{}`{OGN}",
|
||||||
@@ -114,7 +114,7 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_mutably_borrow_multiply(&self,
|
fn cannot_mutably_borrow_multiply(self,
|
||||||
new_loan_span: Span,
|
new_loan_span: Span,
|
||||||
desc: &str,
|
desc: &str,
|
||||||
opt_via: &str,
|
opt_via: &str,
|
||||||
@@ -122,7 +122,7 @@ pub trait BorrowckErrors {
|
|||||||
old_opt_via: &str,
|
old_opt_via: &str,
|
||||||
old_load_end_span: Option<Span>,
|
old_load_end_span: Option<Span>,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, new_loan_span, E0499,
|
let mut err = struct_span_err!(self, new_loan_span, E0499,
|
||||||
"cannot borrow `{}`{} as mutable more than once at a time{OGN}",
|
"cannot borrow `{}`{} as mutable more than once at a time{OGN}",
|
||||||
@@ -148,13 +148,13 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_uniquely_borrow_by_two_closures(&self,
|
fn cannot_uniquely_borrow_by_two_closures(self,
|
||||||
new_loan_span: Span,
|
new_loan_span: Span,
|
||||||
desc: &str,
|
desc: &str,
|
||||||
old_loan_span: Span,
|
old_loan_span: Span,
|
||||||
old_load_end_span: Option<Span>,
|
old_load_end_span: Option<Span>,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, new_loan_span, E0524,
|
let mut err = struct_span_err!(self, new_loan_span, E0524,
|
||||||
"two closures require unique access to `{}` at the same time{OGN}",
|
"two closures require unique access to `{}` at the same time{OGN}",
|
||||||
@@ -173,7 +173,7 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_uniquely_borrow_by_one_closure(&self,
|
fn cannot_uniquely_borrow_by_one_closure(self,
|
||||||
new_loan_span: Span,
|
new_loan_span: Span,
|
||||||
desc_new: &str,
|
desc_new: &str,
|
||||||
opt_via: &str,
|
opt_via: &str,
|
||||||
@@ -182,7 +182,7 @@ pub trait BorrowckErrors {
|
|||||||
old_opt_via: &str,
|
old_opt_via: &str,
|
||||||
previous_end_span: Option<Span>,
|
previous_end_span: Option<Span>,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, new_loan_span, E0500,
|
let mut err = struct_span_err!(self, new_loan_span, E0500,
|
||||||
"closure requires unique access to `{}` but {} is already borrowed{}{OGN}",
|
"closure requires unique access to `{}` but {} is already borrowed{}{OGN}",
|
||||||
@@ -197,7 +197,7 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_reborrow_already_uniquely_borrowed(&self,
|
fn cannot_reborrow_already_uniquely_borrowed(self,
|
||||||
new_loan_span: Span,
|
new_loan_span: Span,
|
||||||
desc_new: &str,
|
desc_new: &str,
|
||||||
opt_via: &str,
|
opt_via: &str,
|
||||||
@@ -206,7 +206,7 @@ pub trait BorrowckErrors {
|
|||||||
old_opt_via: &str,
|
old_opt_via: &str,
|
||||||
previous_end_span: Option<Span>,
|
previous_end_span: Option<Span>,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, new_loan_span, E0501,
|
let mut err = struct_span_err!(self, new_loan_span, E0501,
|
||||||
"cannot borrow `{}`{} as {} because previous closure \
|
"cannot borrow `{}`{} as {} because previous closure \
|
||||||
@@ -222,7 +222,7 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_reborrow_already_borrowed(&self,
|
fn cannot_reborrow_already_borrowed(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
desc_new: &str,
|
desc_new: &str,
|
||||||
msg_new: &str,
|
msg_new: &str,
|
||||||
@@ -233,7 +233,7 @@ pub trait BorrowckErrors {
|
|||||||
msg_old: &str,
|
msg_old: &str,
|
||||||
old_load_end_span: Option<Span>,
|
old_load_end_span: Option<Span>,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, span, E0502,
|
let mut err = struct_span_err!(self, span, E0502,
|
||||||
"cannot borrow `{}`{} as {} because {} is also borrowed as {}{}{OGN}",
|
"cannot borrow `{}`{} as {} because {} is also borrowed as {}{}{OGN}",
|
||||||
@@ -246,8 +246,8 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_assign_to_borrowed(&self, span: Span, borrow_span: Span, desc: &str, o: Origin)
|
fn cannot_assign_to_borrowed(self, span: Span, borrow_span: Span, desc: &str, o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, span, E0506,
|
let mut err = struct_span_err!(self, span, E0506,
|
||||||
"cannot assign to `{}` because it is borrowed{OGN}",
|
"cannot assign to `{}` because it is borrowed{OGN}",
|
||||||
@@ -259,8 +259,8 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_move_into_closure(&self, span: Span, desc: &str, o: Origin)
|
fn cannot_move_into_closure(self, span: Span, desc: &str, o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, span, E0504,
|
let err = struct_span_err!(self, span, E0504,
|
||||||
"cannot move `{}` into closure because it is borrowed{OGN}",
|
"cannot move `{}` into closure because it is borrowed{OGN}",
|
||||||
@@ -269,8 +269,8 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_reassign_immutable(&self, span: Span, desc: &str, is_arg: bool, o: Origin)
|
fn cannot_reassign_immutable(self, span: Span, desc: &str, is_arg: bool, o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let msg = if is_arg {
|
let msg = if is_arg {
|
||||||
"to immutable argument"
|
"to immutable argument"
|
||||||
@@ -284,7 +284,7 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_assign(&self, span: Span, desc: &str, o: Origin) -> DiagnosticBuilder
|
fn cannot_assign(self, span: Span, desc: &str, o: Origin) -> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, span, E0594,
|
let err = struct_span_err!(self, span, E0594,
|
||||||
"cannot assign to {}{OGN}",
|
"cannot assign to {}{OGN}",
|
||||||
@@ -292,14 +292,14 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_assign_static(&self, span: Span, desc: &str, o: Origin)
|
fn cannot_assign_static(self, span: Span, desc: &str, o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
self.cannot_assign(span, &format!("immutable static item `{}`", desc), o)
|
self.cannot_assign(span, &format!("immutable static item `{}`", desc), o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_move_out_of(&self, move_from_span: Span, move_from_desc: &str, o: Origin)
|
fn cannot_move_out_of(self, move_from_span: Span, move_from_desc: &str, o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, move_from_span, E0507,
|
let mut err = struct_span_err!(self, move_from_span, E0507,
|
||||||
"cannot move out of {}{OGN}",
|
"cannot move out of {}{OGN}",
|
||||||
@@ -311,12 +311,12 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_move_out_of_interior_noncopy(&self,
|
fn cannot_move_out_of_interior_noncopy(self,
|
||||||
move_from_span: Span,
|
move_from_span: Span,
|
||||||
ty: ty::Ty,
|
ty: ty::Ty,
|
||||||
is_index: bool,
|
is_index: bool,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let type_name = match (&ty.sty, is_index) {
|
let type_name = match (&ty.sty, is_index) {
|
||||||
(&ty::TyArray(_, _), true) => "array",
|
(&ty::TyArray(_, _), true) => "array",
|
||||||
@@ -332,11 +332,11 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_move_out_of_interior_of_drop(&self,
|
fn cannot_move_out_of_interior_of_drop(self,
|
||||||
move_from_span: Span,
|
move_from_span: Span,
|
||||||
container_ty: ty::Ty,
|
container_ty: ty::Ty,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, move_from_span, E0509,
|
let mut err = struct_span_err!(self, move_from_span, E0509,
|
||||||
"cannot move out of type `{}`, \
|
"cannot move out of type `{}`, \
|
||||||
@@ -347,13 +347,13 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_act_on_moved_value(&self,
|
fn cannot_act_on_moved_value(self,
|
||||||
use_span: Span,
|
use_span: Span,
|
||||||
verb: &str,
|
verb: &str,
|
||||||
optional_adverb_for_moved: &str,
|
optional_adverb_for_moved: &str,
|
||||||
moved_path: &str,
|
moved_path: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, use_span, E0382,
|
let err = struct_span_err!(self, use_span, E0382,
|
||||||
"{} of {}moved value: `{}`{OGN}",
|
"{} of {}moved value: `{}`{OGN}",
|
||||||
@@ -362,11 +362,11 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_partially_reinit_an_uninit_struct(&self,
|
fn cannot_partially_reinit_an_uninit_struct(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
uninit_path: &str,
|
uninit_path: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self,
|
let err = struct_span_err!(self,
|
||||||
span,
|
span,
|
||||||
@@ -377,11 +377,11 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn closure_cannot_assign_to_borrowed(&self,
|
fn closure_cannot_assign_to_borrowed(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
descr: &str,
|
descr: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, span, E0595, "closure cannot assign to {}{OGN}",
|
let err = struct_span_err!(self, span, E0595, "closure cannot assign to {}{OGN}",
|
||||||
descr, OGN=o);
|
descr, OGN=o);
|
||||||
@@ -389,11 +389,11 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_borrow_path_as_mutable(&self,
|
fn cannot_borrow_path_as_mutable(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
path: &str,
|
path: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, span, E0596, "cannot borrow {} as mutable{OGN}",
|
let err = struct_span_err!(self, span, E0596, "cannot borrow {} as mutable{OGN}",
|
||||||
path, OGN=o);
|
path, OGN=o);
|
||||||
@@ -401,11 +401,11 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_borrow_across_generator_yield(&self,
|
fn cannot_borrow_across_generator_yield(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
yield_span: Span,
|
yield_span: Span,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self,
|
let mut err = struct_span_err!(self,
|
||||||
span,
|
span,
|
||||||
@@ -417,11 +417,11 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn path_does_not_live_long_enough(&self,
|
fn path_does_not_live_long_enough(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
path: &str,
|
path: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, span, E0597, "{} does not live long enough{OGN}",
|
let err = struct_span_err!(self, span, E0597, "{} does not live long enough{OGN}",
|
||||||
path, OGN=o);
|
path, OGN=o);
|
||||||
@@ -429,11 +429,11 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lifetime_too_short_for_reborrow(&self,
|
fn lifetime_too_short_for_reborrow(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
path: &str,
|
path: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let err = struct_span_err!(self, span, E0598,
|
let err = struct_span_err!(self, span, E0598,
|
||||||
"lifetime of {} is too short to guarantee \
|
"lifetime of {} is too short to guarantee \
|
||||||
@@ -443,12 +443,12 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_act_on_capture_in_sharable_fn(&self,
|
fn cannot_act_on_capture_in_sharable_fn(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
bad_thing: &str,
|
bad_thing: &str,
|
||||||
help: (Span, &str),
|
help: (Span, &str),
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let (help_span, help_msg) = help;
|
let (help_span, help_msg) = help;
|
||||||
let mut err = struct_span_err!(self, span, E0387,
|
let mut err = struct_span_err!(self, span, E0387,
|
||||||
@@ -459,11 +459,11 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_assign_into_immutable_reference(&self,
|
fn cannot_assign_into_immutable_reference(self,
|
||||||
span: Span,
|
span: Span,
|
||||||
bad_thing: &str,
|
bad_thing: &str,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, span, E0389, "{} in a `&` reference{OGN}",
|
let mut err = struct_span_err!(self, span, E0389, "{} in a `&` reference{OGN}",
|
||||||
bad_thing, OGN=o);
|
bad_thing, OGN=o);
|
||||||
@@ -472,12 +472,12 @@ pub trait BorrowckErrors {
|
|||||||
self.cancel_if_wrong_origin(err, o)
|
self.cancel_if_wrong_origin(err, o)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cannot_capture_in_long_lived_closure(&self,
|
fn cannot_capture_in_long_lived_closure(self,
|
||||||
closure_span: Span,
|
closure_span: Span,
|
||||||
borrowed_path: &str,
|
borrowed_path: &str,
|
||||||
capture_span: Span,
|
capture_span: Span,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
let mut err = struct_span_err!(self, closure_span, E0373,
|
let mut err = struct_span_err!(self, closure_span, E0373,
|
||||||
"closure may outlive the current function, \
|
"closure may outlive the current function, \
|
||||||
@@ -491,28 +491,28 @@ pub trait BorrowckErrors {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'b, 'gcx, 'tcx> BorrowckErrors for TyCtxt<'b, 'gcx, 'tcx> {
|
impl<'cx, 'gcx, 'tcx> BorrowckErrors<'cx> for TyCtxt<'cx, 'gcx, 'tcx> {
|
||||||
fn struct_span_err_with_code<'a, S: Into<MultiSpan>>(&'a self,
|
fn struct_span_err_with_code<S: Into<MultiSpan>>(self,
|
||||||
sp: S,
|
sp: S,
|
||||||
msg: &str,
|
msg: &str,
|
||||||
code: DiagnosticId)
|
code: DiagnosticId)
|
||||||
-> DiagnosticBuilder<'a>
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
self.sess.struct_span_err_with_code(sp, msg, code)
|
self.sess.struct_span_err_with_code(sp, msg, code)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn struct_span_err<'a, S: Into<MultiSpan>>(&'a self,
|
fn struct_span_err<S: Into<MultiSpan>>(self,
|
||||||
sp: S,
|
sp: S,
|
||||||
msg: &str)
|
msg: &str)
|
||||||
-> DiagnosticBuilder<'a>
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
self.sess.struct_span_err(sp, msg)
|
self.sess.struct_span_err(sp, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cancel_if_wrong_origin<'a>(&'a self,
|
fn cancel_if_wrong_origin(self,
|
||||||
mut diag: DiagnosticBuilder<'a>,
|
mut diag: DiagnosticBuilder<'cx>,
|
||||||
o: Origin)
|
o: Origin)
|
||||||
-> DiagnosticBuilder<'a>
|
-> DiagnosticBuilder<'cx>
|
||||||
{
|
{
|
||||||
if !o.should_emit_errors(self.borrowck_mode()) {
|
if !o.should_emit_errors(self.borrowck_mode()) {
|
||||||
self.sess.diagnostic().cancel(&mut diag);
|
self.sess.diagnostic().cancel(&mut diag);
|
||||||
|
|||||||
Reference in New Issue
Block a user