diff --git a/src/librustc/infer/error_reporting/mod.rs b/src/librustc/infer/error_reporting/mod.rs index 8d314e251972d..254fba095e236 100644 --- a/src/librustc/infer/error_reporting/mod.rs +++ b/src/librustc/infer/error_reporting/mod.rs @@ -303,7 +303,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { ) { debug!("report_region_errors(): {} errors to start", errors.len()); - if will_later_be_reported_by_nll && self.tcx.nll() { + if will_later_be_reported_by_nll && self.tcx.use_mir() { // With `#![feature(nll)]`, we want to present a nice user // experience, so don't even mention the errors from the // AST checker. @@ -311,20 +311,20 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { return; } - // But with -Znll, it's nice to have some note for later. + // But with nll, it's nice to have some note for later. for error in errors { match *error { RegionResolutionError::ConcreteFailure(ref origin, ..) | RegionResolutionError::GenericBoundFailure(ref origin, ..) => { self.tcx .sess - .span_warn(origin.span(), "not reporting region error due to -Znll"); + .span_warn(origin.span(), "not reporting region error due to nll"); } RegionResolutionError::SubSupConflict(ref rvo, ..) => { self.tcx .sess - .span_warn(rvo.span(), "not reporting region error due to -Znll"); + .span_warn(rvo.span(), "not reporting region error due to nll"); } } } diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index d309026212bfa..9c59cdffed3c2 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -1255,8 +1255,6 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, useful for profiling / PGO."), relro_level: Option = (None, parse_relro_level, [TRACKED], "choose which RELRO level to use"), - nll: bool = (false, parse_bool, [UNTRACKED], - "run the non-lexical lifetimes MIR pass"), disable_nll_user_type_assert: bool = (false, parse_bool, [UNTRACKED], "disable user provided type assertion in NLL"), trans_time_graph: bool = (false, parse_bool, [UNTRACKED], diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index a508f33db3f77..c4a34b4101aeb 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -1471,12 +1471,6 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { self.on_disk_query_result_cache.serialize(self.global_tcx(), encoder) } - /// If true, we should use NLL-style region checking instead of - /// lexical style. - pub fn nll(self) -> bool { - self.features().nll || self.sess.opts.debugging_opts.nll - } - /// If true, we should use the MIR-based borrowck (we may *also* use /// the AST-based borrowck). pub fn use_mir(self) -> bool { @@ -1498,7 +1492,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { mode @ BorrowckMode::Compare => mode, mode @ BorrowckMode::Ast => { - if self.nll() { + if self.features().nll { BorrowckMode::Mir } else { mode @@ -1512,8 +1506,6 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> { /// MIR borrowck, but not when NLL is used. They are also consumed /// by the validation stuff. pub fn emit_end_regions(self) -> bool { - // FIXME(#46875) -- we should not emit end regions when NLL is enabled, - // but for now we can't stop doing so because it causes false positives self.sess.opts.debugging_opts.emit_end_regions || self.sess.opts.debugging_opts.mir_emit_validate > 0 || self.use_mir() diff --git a/src/librustc_mir/borrow_check/borrow_set.rs b/src/librustc_mir/borrow_check/borrow_set.rs index c2d7d68923dd9..ccfb44a8b58fb 100644 --- a/src/librustc_mir/borrow_check/borrow_set.rs +++ b/src/librustc_mir/borrow_check/borrow_set.rs @@ -13,13 +13,12 @@ use dataflow::indexes::BorrowIndex; use rustc::mir::traversal; use rustc::mir::visit::{PlaceContext, Visitor}; use rustc::mir::{self, Location, Mir, Place}; -use rustc::ty::{self, Region, RegionKind, TyCtxt}; +use rustc::ty::{Region, TyCtxt}; use rustc::util::nodemap::{FxHashMap, FxHashSet}; use rustc_data_structures::indexed_vec::IndexVec; use std::fmt; use std::hash::Hash; use std::ops::Index; -use syntax_pos::Span; crate struct BorrowSet<'tcx> { /// The fundamental map relating bitvector indexes to the borrows @@ -44,10 +43,6 @@ crate struct BorrowSet<'tcx> { /// Map from local to all the borrows on that local crate local_map: FxHashMap>, - - /// Maps regions to their corresponding source spans - /// Only contains ReScope()s as keys - crate region_span_map: FxHashMap, } impl<'tcx> Index for BorrowSet<'tcx> { @@ -103,7 +98,6 @@ impl<'tcx> BorrowSet<'tcx> { activation_map: FxHashMap(), region_map: FxHashMap(), local_map: FxHashMap(), - region_span_map: FxHashMap(), pending_activations: FxHashMap(), }; @@ -130,7 +124,6 @@ impl<'tcx> BorrowSet<'tcx> { activation_map: visitor.activation_map, region_map: visitor.region_map, local_map: visitor.local_map, - region_span_map: visitor.region_span_map, } } @@ -150,7 +143,6 @@ struct GatherBorrows<'a, 'gcx: 'tcx, 'tcx: 'a> { activation_map: FxHashMap>, region_map: FxHashMap, FxHashSet>, local_map: FxHashMap>, - region_span_map: FxHashMap, /// When we encounter a 2-phase borrow statement, it will always /// be assigning into a temporary TEMP: @@ -276,10 +268,6 @@ impl<'a, 'gcx, 'tcx> Visitor<'tcx> for GatherBorrows<'a, 'gcx, 'tcx> { statement: &mir::Statement<'tcx>, location: Location, ) { - if let mir::StatementKind::EndRegion(region_scope) = statement.kind { - self.region_span_map - .insert(ty::ReScope(region_scope), statement.source_info.span); - } return self.super_statement(block, statement, location); } } diff --git a/src/librustc_mir/borrow_check/error_reporting.rs b/src/librustc_mir/borrow_check/error_reporting.rs index 340ff5e178767..3dc5a7a84900c 100644 --- a/src/librustc_mir/borrow_check/error_reporting.rs +++ b/src/librustc_mir/borrow_check/error_reporting.rs @@ -263,7 +263,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { (place, span): (&Place<'tcx>, Span), gen_borrow_kind: BorrowKind, issued_borrow: &BorrowData<'tcx>, - end_issued_loan_span: Option, ) { let issued_span = self.retrieve_borrow_span(issued_borrow); @@ -297,7 +296,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { "it", rgt, "", - end_issued_loan_span, + None, Origin::Mir, ) } @@ -309,7 +308,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { "", issued_span, "", - end_issued_loan_span, + None, Origin::Mir, ) } @@ -319,7 +318,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { span, &desc_place, issued_span, - end_issued_loan_span, + None, Origin::Mir, ) } @@ -331,7 +330,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { issued_span, "it", "", - end_issued_loan_span, + None, Origin::Mir, ), @@ -343,7 +342,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { lft, issued_span, "", - end_issued_loan_span, + None, Origin::Mir, ) } @@ -356,7 +355,7 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { lft, issued_span, "", - end_issued_loan_span, + None, Origin::Mir, ) } @@ -392,7 +391,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { borrow: &BorrowData<'tcx>, drop_span: Span, ) { - let end_span = self.opt_region_end_span(&borrow.region); let scope_tree = self.tcx.region_scope_tree(self.mir_def_id); let root_place = self.prefixes(&borrow.borrowed_place, PrefixSet::All) .last() @@ -427,7 +425,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span, borrow_span, proper_span, - end_span, ); } (RegionKind::ReScope(_), None) => { @@ -438,7 +435,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span, borrow_span, proper_span, - end_span, ); } (RegionKind::ReEarlyBound(_), Some(name)) @@ -454,7 +450,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span, borrow_span, proper_span, - end_span, ); } (RegionKind::ReEarlyBound(_), None) @@ -469,7 +464,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span, borrow_span, proper_span, - end_span, ); } (RegionKind::ReLateBound(_, _), _) @@ -491,7 +485,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span: Span, borrow_span: Span, _proper_span: Span, - end_span: Option, ) { let tcx = self.tcx; let mut err = @@ -501,9 +494,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span, format!("`{}` dropped here while still borrowed", name), ); - if let Some(end) = end_span { - err.span_label(end, "borrowed value needs to live until here"); - } self.explain_why_borrow_contains_point(context, borrow, &mut err); err.emit(); } @@ -516,7 +506,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span: Span, _borrow_span: Span, proper_span: Span, - end_span: Option, ) { let tcx = self.tcx; let mut err = @@ -527,9 +516,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { "temporary value dropped here while still borrowed", ); err.note("consider using a `let` binding to increase its lifetime"); - if let Some(end) = end_span { - err.span_label(end, "temporary value needs to live until here"); - } self.explain_why_borrow_contains_point(context, borrow, &mut err); err.emit(); } @@ -543,7 +529,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span: Span, borrow_span: Span, _proper_span: Span, - _end_span: Option, ) { debug!( "report_unscoped_local_value_does_not_live_long_enough(\ @@ -558,16 +543,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { err.span_label(borrow_span, "borrowed value does not live long enough"); err.span_label(drop_span, "borrowed value only lives until here"); - if !tcx.nll() { - tcx.note_and_explain_region( - scope_tree, - &mut err, - "borrowed value must be valid for ", - borrow.region, - "...", - ); - } - self.explain_why_borrow_contains_point(context, borrow, &mut err); err.emit(); } @@ -580,7 +555,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { drop_span: Span, _borrow_span: Span, proper_span: Span, - _end_span: Option, ) { debug!( "report_unscoped_temporary_value_does_not_live_long_enough(\ @@ -595,16 +569,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { err.span_label(proper_span, "temporary value does not live long enough"); err.span_label(drop_span, "temporary value only lives until here"); - if !tcx.nll() { - tcx.note_and_explain_region( - scope_tree, - &mut err, - "borrowed value must be valid for ", - borrow.region, - "...", - ); - } - self.explain_why_borrow_contains_point(context, borrow, &mut err); err.emit(); } diff --git a/src/librustc_mir/borrow_check/mod.rs b/src/librustc_mir/borrow_check/mod.rs index 5b4c66bd65c17..22550319a1c63 100644 --- a/src/librustc_mir/borrow_check/mod.rs +++ b/src/librustc_mir/borrow_check/mod.rs @@ -98,19 +98,13 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>( .as_local_node_id(def_id) .expect("do_mir_borrowck: non-local DefId"); - // Make our own copy of the MIR. This copy will be modified (in place) to - // contain non-lexical lifetimes. It will have a lifetime tied - // to the inference context. + // Replace all regions with fresh inference variables. This + // requires first making our own copy of the MIR. This copy will + // be modified (in place) to contain non-lexical lifetimes. It + // will have a lifetime tied to the inference context. let mut mir: Mir<'tcx> = input_mir.clone(); - let free_regions = if !tcx.nll() { - None - } else { - let mir = &mut mir; - - // Replace all regions with fresh inference variables. - Some(nll::replace_regions_in_mir(infcx, def_id, param_env, mir)) - }; - let mir = &mir; + let free_regions = nll::replace_regions_in_mir(infcx, def_id, param_env, &mut mir); + let mir = &mir; // no further changes let move_data: MoveData<'tcx> = match MoveData::gather_moves(mir, tcx) { Ok(move_data) => move_data, @@ -195,22 +189,17 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>( let borrow_set = Rc::new(BorrowSet::build(tcx, mir)); // If we are in non-lexical mode, compute the non-lexical lifetimes. - let (opt_regioncx, opt_closure_req) = if let Some(free_regions) = free_regions { - let (regioncx, opt_closure_req) = nll::compute_regions( - infcx, - def_id, - free_regions, - mir, - param_env, - &mut flow_inits, - &mdpe.move_data, - &borrow_set, - ); - (Some(Rc::new(regioncx)), opt_closure_req) - } else { - assert!(!tcx.nll()); - (None, None) - }; + let (regioncx, opt_closure_req) = nll::compute_regions( + infcx, + def_id, + free_regions, + mir, + param_env, + &mut flow_inits, + &mdpe.move_data, + &borrow_set, + ); + let regioncx = Rc::new(regioncx); let flow_inits = flow_inits; // remove mut let flow_borrows = FlowAtLocation::new(do_dataflow( @@ -219,7 +208,7 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>( id, &attributes, &dead_unwinds, - Borrows::new(tcx, mir, opt_regioncx.clone(), def_id, body_id, &borrow_set), + Borrows::new(tcx, mir, regioncx.clone(), def_id, body_id, &borrow_set), |rs, i| DebugFormatted::new(&rs.location(i)), )); @@ -247,7 +236,7 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>( access_place_error_reported: FxHashSet(), reservation_error_reported: FxHashSet(), moved_error_reported: FxHashSet(), - nonlexical_regioncx: opt_regioncx, + nonlexical_regioncx: regioncx, nonlexical_cause_info: None, borrow_set, dominators, @@ -301,7 +290,7 @@ pub struct MirBorrowckCtxt<'cx, 'gcx: 'tcx, 'tcx: 'cx> { /// Non-lexical region inference context, if NLL is enabled. This /// contains the results from region inference and lets us e.g. /// find out which CFG points are contained in each borrow region. - nonlexical_regioncx: Option>>, + nonlexical_regioncx: Rc>, nonlexical_cause_info: Option, /// The set of borrows extracted from the MIR @@ -897,14 +886,12 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { this.report_use_while_mutably_borrowed(context, place_span, borrow) } ReadKind::Borrow(bk) => { - let end_issued_loan_span = this.opt_region_end_span(&borrow.region); error_reported = true; this.report_conflicting_borrow( context, place_span, bk, &borrow, - end_issued_loan_span, ) } } @@ -936,15 +923,12 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { match kind { WriteKind::MutableBorrow(bk) => { - let end_issued_loan_span = this.opt_region_end_span(&borrow.region); - error_reported = true; this.report_conflicting_borrow( context, place_span, bk, &borrow, - end_issued_loan_span, ) } WriteKind::StorageDeadOrDrop => { @@ -1832,22 +1816,6 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { _ => None, } } - - /// Returns the span for the "end point" given region. This will - /// return `None` if NLL is enabled, since that concept has no - /// meaning there. Otherwise, return region span if it exists and - /// span for end of the function if it doesn't exist. - pub(crate) fn opt_region_end_span(&self, region: &ty::Region<'tcx>) -> Option { - match self.nonlexical_regioncx { - Some(_) => None, - None => { - match self.borrow_set.region_span_map.get(region) { - Some(span) => Some(self.tcx.sess.codemap().end_point(*span)), - None => Some(self.tcx.sess.codemap().end_point(self.mir.span)) - } - } - } - } } #[derive(Copy, Clone, PartialEq, Eq, Debug)] 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 b12beb524e20d..d5e11a312ec26 100644 --- a/src/librustc_mir/borrow_check/nll/explain_borrow/mod.rs +++ b/src/librustc_mir/borrow_check/nll/explain_borrow/mod.rs @@ -29,82 +29,81 @@ impl<'cx, 'gcx, 'tcx> MirBorrowckCtxt<'cx, 'gcx, 'tcx> { borrow: &BorrowData<'tcx>, err: &mut DiagnosticBuilder<'_>, ) { - if let Some(regioncx) = &self.nonlexical_regioncx { - let mir = self.mir; + let regioncx = &&self.nonlexical_regioncx; + let mir = self.mir; - if self.nonlexical_cause_info.is_none() { - self.nonlexical_cause_info = Some(regioncx.compute_causal_info(mir)); - } + if self.nonlexical_cause_info.is_none() { + self.nonlexical_cause_info = Some(regioncx.compute_causal_info(mir)); + } + + let cause_info = self.nonlexical_cause_info.as_ref().unwrap(); + if let Some(cause) = cause_info.why_region_contains_point(borrow.region, context.loc) { + match *cause.root_cause() { + Cause::LiveVar(local, location) => { + match find_regular_use(mir, regioncx, borrow, location, local) { + Some(p) => { + err.span_label( + mir.source_info(p).span, + format!("borrow later used here"), + ); + } + + None => { + span_bug!( + mir.source_info(context.loc).span, + "Cause should end in a LiveVar" + ); + } + } + } - let cause_info = self.nonlexical_cause_info.as_ref().unwrap(); - if let Some(cause) = cause_info.why_region_contains_point(borrow.region, context.loc) { - match *cause.root_cause() { - Cause::LiveVar(local, location) => { - match find_regular_use(mir, regioncx, borrow, location, local) { - Some(p) => { + Cause::DropVar(local, location) => { + match find_drop_use(mir, regioncx, borrow, location, local) { + Some(p) => match &mir.local_decls[local].name { + Some(local_name) => { err.span_label( mir.source_info(p).span, - format!("borrow later used here"), + format!( + "borrow later used here, when `{}` is dropped", + local_name + ), ); } - None => { - span_bug!( - mir.source_info(context.loc).span, - "Cause should end in a LiveVar" + err.span_label( + mir.local_decls[local].source_info.span, + "borrow may end up in a temporary, created here", ); - } - } - } - Cause::DropVar(local, location) => { - match find_drop_use(mir, regioncx, borrow, location, local) { - Some(p) => match &mir.local_decls[local].name { - Some(local_name) => { - err.span_label( - mir.source_info(p).span, - format!( - "borrow later used here, when `{}` is dropped", - local_name - ), - ); - } - None => { - err.span_label( - mir.local_decls[local].source_info.span, - "borrow may end up in a temporary, created here", - ); - - err.span_label( - mir.source_info(p).span, - "temporary later dropped here, \ - potentially using the reference", - ); - } - }, - - None => { - span_bug!( - mir.source_info(context.loc).span, - "Cause should end in a DropVar" + err.span_label( + mir.source_info(p).span, + "temporary later dropped here, \ + potentially using the reference", ); } - } - } + }, - Cause::UniversalRegion(region_vid) => { - if let Some(region) = regioncx.to_error_region(region_vid) { - self.tcx.note_and_explain_free_region( - err, - "borrowed value must be valid for ", - region, - "...", + None => { + span_bug!( + mir.source_info(context.loc).span, + "Cause should end in a DropVar" ); } } + } - _ => {} + Cause::UniversalRegion(region_vid) => { + if let Some(region) = regioncx.to_error_region(region_vid) { + self.tcx.note_and_explain_free_region( + err, + "borrowed value must be valid for ", + region, + "...", + ); + } } + + _ => {} } } } diff --git a/src/librustc_mir/borrow_check/nll/type_check/mod.rs b/src/librustc_mir/borrow_check/nll/type_check/mod.rs index 544cb5eefc886..bdcff1a2d819c 100644 --- a/src/librustc_mir/borrow_check/nll/type_check/mod.rs +++ b/src/librustc_mir/borrow_check/nll/type_check/mod.rs @@ -1596,7 +1596,7 @@ impl MirPass for TypeckMir { // When NLL is enabled, the borrow checker runs the typeck // itself, so we don't need this MIR pass anymore. - if tcx.nll() { + if tcx.use_mir() { return; } diff --git a/src/librustc_mir/dataflow/impls/borrows.rs b/src/librustc_mir/dataflow/impls/borrows.rs index 55c38dc89f636..a21691813a4d4 100644 --- a/src/librustc_mir/dataflow/impls/borrows.rs +++ b/src/librustc_mir/dataflow/impls/borrows.rs @@ -48,14 +48,14 @@ pub struct Borrows<'a, 'gcx: 'tcx, 'tcx: 'a> { borrow_set: Rc>, /// NLL region inference context with which NLL queries should be resolved - nonlexical_regioncx: Option>>, + nonlexical_regioncx: Rc>, } impl<'a, 'gcx, 'tcx> Borrows<'a, 'gcx, 'tcx> { crate fn new( tcx: TyCtxt<'a, 'gcx, 'tcx>, mir: &'a Mir<'tcx>, - nonlexical_regioncx: Option>>, + nonlexical_regioncx: Rc>, def_id: DefId, body_id: Option, borrow_set: &Rc> @@ -89,23 +89,23 @@ impl<'a, 'gcx, 'tcx> Borrows<'a, 'gcx, 'tcx> { fn kill_loans_out_of_scope_at_location(&self, sets: &mut BlockSets, location: Location) { - if let Some(ref regioncx) = self.nonlexical_regioncx { - // NOTE: The state associated with a given `location` - // reflects the dataflow on entry to the statement. If it - // does not contain `borrow_region`, then then that means - // that the statement at `location` kills the borrow. - // - // We are careful always to call this function *before* we - // set up the gen-bits for the statement or - // termanator. That way, if the effect of the statement or - // terminator *does* introduce a new loan of the same - // region, then setting that gen-bit will override any - // potential kill introduced here. - for (borrow_index, borrow_data) in self.borrow_set.borrows.iter_enumerated() { - let borrow_region = borrow_data.region.to_region_vid(); - if !regioncx.region_contains_point(borrow_region, location) { - sets.kill(&borrow_index); - } + let regioncx = &self.nonlexical_regioncx; + + // NOTE: The state associated with a given `location` + // reflects the dataflow on entry to the statement. If it + // does not contain `borrow_region`, then then that means + // that the statement at `location` kills the borrow. + // + // We are careful always to call this function *before* we + // set up the gen-bits for the statement or + // termanator. That way, if the effect of the statement or + // terminator *does* introduce a new loan of the same + // region, then setting that gen-bit will override any + // potential kill introduced here. + for (borrow_index, borrow_data) in self.borrow_set.borrows.iter_enumerated() { + let borrow_region = borrow_data.region.to_region_vid(); + if !regioncx.region_contains_point(borrow_region, location) { + sets.kill(&borrow_index); } } } @@ -153,18 +153,7 @@ impl<'a, 'gcx, 'tcx> BitDenotation for Borrows<'a, 'gcx, 'tcx> { self.kill_loans_out_of_scope_at_location(sets, location); match stmt.kind { - // EndRegion kills any borrows (reservations and active borrows both) - mir::StatementKind::EndRegion(region_scope) => { - if let Some(borrow_indexes) = - self.borrow_set.region_map.get(&ReScope(region_scope)) - { - assert!(self.nonlexical_regioncx.is_none()); - for idx in borrow_indexes { - sets.kill(idx); - } - } else { - // (if there is no entry, then there are no borrows to be tracked) - } + mir::StatementKind::EndRegion(_) => { } mir::StatementKind::Assign(ref lhs, ref rhs) => { diff --git a/src/test/compile-fail/E0501.rs b/src/test/compile-fail/E0501.rs index f7e246e8f0f41..5643e1ef09146 100644 --- a/src/test/compile-fail/E0501.rs +++ b/src/test/compile-fail/E0501.rs @@ -26,10 +26,12 @@ fn foo(a: &mut i32) { inside_closure(a) }; outside_closure_1(a); //[ast]~ ERROR cannot borrow `*a` as mutable because previous closure requires unique access - //[mir]~^ ERROR cannot borrow `*a` as mutable because previous closure requires unique access + //[mir]~^ ERROR cannot borrow `*a` as mutable because previous closure requires unique access outside_closure_2(a); //[ast]~ ERROR cannot borrow `*a` as immutable because previous closure requires unique access - //[mir]~^ ERROR cannot borrow `*a` as immutable because previous closure requires unique access + //[mir]~^ ERROR cannot borrow `*a` as immutable because previous closure requires unique access + + drop(bar); } fn main() { diff --git a/src/test/compile-fail/borrowck/borrowck-asm.rs b/src/test/compile-fail/borrowck/borrowck-asm.rs index 9ad3a8f9fc867..0b230be85ad97 100644 --- a/src/test/compile-fail/borrowck/borrowck-asm.rs +++ b/src/test/compile-fail/borrowck/borrowck-asm.rs @@ -14,7 +14,7 @@ // ignore-sparc // revisions: ast mir -//[mir]compile-flags: -Z borrowck=mir -Z nll +//[mir]compile-flags: -Z borrowck=mir #![feature(asm)] diff --git a/src/test/compile-fail/borrowck/borrowck-closures-mut-and-imm.rs b/src/test/compile-fail/borrowck/borrowck-closures-mut-and-imm.rs index f498d8d500e64..9057ba0790712 100644 --- a/src/test/compile-fail/borrowck/borrowck-closures-mut-and-imm.rs +++ b/src/test/compile-fail/borrowck/borrowck-closures-mut-and-imm.rs @@ -29,7 +29,8 @@ fn a() { let mut x = 3; let c1 = || x = 4; let c2 = || x * 5; //[ast]~ ERROR cannot borrow `x` - //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable + //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable + drop(c1); } fn b() { @@ -37,6 +38,7 @@ fn b() { let c1 = || set(&mut x); let c2 = || get(&x); //[ast]~ ERROR cannot borrow `x` //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable + drop(c1); } fn c() { @@ -44,6 +46,7 @@ fn c() { let c1 = || set(&mut x); let c2 = || x * 5; //[ast]~ ERROR cannot borrow `x` //[mir]~^ ERROR cannot borrow `x` as immutable because it is also borrowed as mutable + drop(c1); } fn d() { @@ -51,6 +54,7 @@ fn d() { let c2 = || x * 5; x = 5; //[ast]~ ERROR cannot assign //[mir]~^ ERROR cannot assign to `x` because it is borrowed + drop(c2); } fn e() { @@ -58,6 +62,7 @@ fn e() { let c1 = || get(&x); x = 5; //[ast]~ ERROR cannot assign //[mir]~^ ERROR cannot assign to `x` because it is borrowed + drop(c1); } fn f() { @@ -65,6 +70,7 @@ fn f() { let c1 = || get(&*x); *x = 5; //[ast]~ ERROR cannot assign to `*x` //[mir]~^ ERROR cannot assign to `*x` because it is borrowed + drop(c1); } fn g() { @@ -76,6 +82,7 @@ fn g() { let c1 = || get(&*x.f); *x.f = 5; //[ast]~ ERROR cannot assign to `*x.f` //[mir]~^ ERROR cannot assign to `*x.f` because it is borrowed + drop(c1); } fn h() { @@ -87,6 +94,7 @@ fn h() { let c1 = || get(&*x.f); let c2 = || *x.f = 5; //[ast]~ ERROR cannot borrow `x` as mutable //[mir]~^ ERROR cannot borrow `x` as mutable because it is also borrowed as immutable + drop(c1); } fn main() { diff --git a/src/test/compile-fail/borrowck/borrowck-describe-lvalue.rs b/src/test/compile-fail/borrowck/borrowck-describe-lvalue.rs index fa475949b36b0..3a7e4a13740d0 100644 --- a/src/test/compile-fail/borrowck/borrowck-describe-lvalue.rs +++ b/src/test/compile-fail/borrowck/borrowck-describe-lvalue.rs @@ -49,83 +49,93 @@ fn main() { // Local and field from struct { let mut f = Foo { x: 22 }; - let _x = f.x(); + let x = f.x(); f.x; //[ast]~ ERROR cannot use `f.x` because it was mutably borrowed - //[mir]~^ ERROR cannot use `f.x` because it was mutably borrowed + //[mir]~^ ERROR cannot use `f.x` because it was mutably borrowed + drop(x); } // Local and field from tuple-struct { let mut g = Bar(22); - let _0 = g.x(); + let x = g.x(); g.0; //[ast]~ ERROR cannot use `g.0` because it was mutably borrowed //[mir]~^ ERROR cannot use `g.0` because it was mutably borrowed + drop(x); } // Local and field from tuple { let mut h = (22, 23); - let _0 = &mut h.0; + let x = &mut h.0; h.0; //[ast]~ ERROR cannot use `h.0` because it was mutably borrowed //[mir]~^ ERROR cannot use `h.0` because it was mutably borrowed + drop(x); } // Local and field from enum { let mut e = Baz::X(2); - let _e0 = e.x(); + let x = e.x(); match e { //[mir]~ ERROR cannot use `e` because it was mutably borrowed Baz::X(value) => value //[ast]~^ ERROR cannot use `e.0` because it was mutably borrowed //[mir]~^^ ERROR cannot use `e.0` because it was mutably borrowed }; + drop(x); } // Local and field from union unsafe { let mut u = U { b: 0 }; - let _ra = &mut u.a; + let x = &mut u.a; u.a; //[ast]~ ERROR cannot use `u.a` because it was mutably borrowed //[mir]~^ ERROR cannot use `u.a` because it was mutably borrowed + drop(x); } // Deref and field from struct { let mut f = Box::new(Foo { x: 22 }); - let _x = f.x(); + let x = f.x(); f.x; //[ast]~ ERROR cannot use `f.x` because it was mutably borrowed //[mir]~^ ERROR cannot use `f.x` because it was mutably borrowed + drop(x); } // Deref and field from tuple-struct { let mut g = Box::new(Bar(22)); - let _0 = g.x(); + let x = g.x(); g.0; //[ast]~ ERROR cannot use `g.0` because it was mutably borrowed //[mir]~^ ERROR cannot use `g.0` because it was mutably borrowed + drop(x); } // Deref and field from tuple { let mut h = Box::new((22, 23)); - let _0 = &mut h.0; + let x = &mut h.0; h.0; //[ast]~ ERROR cannot use `h.0` because it was mutably borrowed //[mir]~^ ERROR cannot use `h.0` because it was mutably borrowed + drop(x); } // Deref and field from enum { let mut e = Box::new(Baz::X(3)); - let _e0 = e.x(); + let x = e.x(); match *e { //[mir]~ ERROR cannot use `*e` because it was mutably borrowed Baz::X(value) => value //[ast]~^ ERROR cannot use `e.0` because it was mutably borrowed //[mir]~^^ ERROR cannot use `e.0` because it was mutably borrowed }; + drop(x); } // Deref and field from union unsafe { let mut u = Box::new(U { b: 0 }); - let _ra = &mut u.a; + let x = &mut u.a; u.a; //[ast]~ ERROR cannot use `u.a` because it was mutably borrowed //[mir]~^ ERROR cannot use `u.a` because it was mutably borrowed + drop(x); } // Constant index { let mut v = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let _v = &mut v; + let x = &mut v; match v { //[mir]~ ERROR cannot use `v` because it was mutably borrowed &[x, _, .., _, _] => println!("{}", x), //[ast]~^ ERROR cannot use `v[..]` because it was mutably borrowed @@ -150,11 +160,12 @@ fn main() { //[mir]~^^ ERROR cannot use `v[..]` because it was mutably borrowed _ => panic!("other case"), } + drop(x); } // Subslices { let mut v = &[1, 2, 3, 4, 5]; - let _v = &mut v; + let x = &mut v; match v { //[mir]~ ERROR cannot use `v` because it was mutably borrowed &[x..] => println!("{:?}", x), //[ast]~^ ERROR cannot use `v[..]` because it was mutably borrowed @@ -179,13 +190,14 @@ fn main() { //[mir]~^^ ERROR cannot use `v[..]` because it was mutably borrowed _ => panic!("other case"), } + drop(x); } // Downcasted field { enum E { A(X), B { x: X } } let mut e = E::A(3); - let _e = &mut e; + let x = &mut e; match e { //[mir]~ ERROR cannot use `e` because it was mutably borrowed E::A(ref ax) => //[ast]~^ ERROR cannot borrow `e.0` as immutable because `e` is also borrowed as mutable @@ -197,13 +209,14 @@ fn main() { //[mir]~^^ ERROR cannot borrow `e.x` as immutable because it is also borrowed as mutable println!("e.bx: {:?}", bx), } + drop(x); } // Field in field { struct F { x: u32, y: u32 }; struct S { x: F, y: (u32, u32), }; let mut s = S { x: F { x: 1, y: 2}, y: (999, 998) }; - let _s = &mut s; + let x = &mut s; match s { //[mir]~ ERROR cannot use `s` because it was mutably borrowed S { y: (ref y0, _), .. } => //[ast]~^ ERROR cannot borrow `s.y.0` as immutable because `s` is also borrowed as mutable @@ -218,6 +231,7 @@ fn main() { println!("x0: {:?}", x0), _ => panic!("other case"), } + drop(x); } // Field of ref { @@ -231,6 +245,7 @@ fn main() { let p: &'a u8 = &*block.current; //[mir]~^ ERROR cannot borrow `*block.current` as immutable because it is also borrowed as mutable // No errors in AST because of issue rust#38899 + drop(x); } } // Field of ptr @@ -245,29 +260,32 @@ fn main() { let p : *const u8 = &*(*block).current; //[mir]~^ ERROR cannot borrow `*block.current` as immutable because it is also borrowed as mutable // No errors in AST because of issue rust#38899 + drop(x); } } // Field of index { struct F {x: u32, y: u32}; let mut v = &[F{x: 1, y: 2}, F{x: 3, y: 4}]; - let _v = &mut v; + let x = &mut v; v[0].y; //[ast]~^ ERROR cannot use `v[..].y` because it was mutably borrowed //[mir]~^^ ERROR cannot use `v[..].y` because it was mutably borrowed //[mir]~| ERROR cannot use `*v` because it was mutably borrowed + drop(x); } // Field of constant index { struct F {x: u32, y: u32}; let mut v = &[F{x: 1, y: 2}, F{x: 3, y: 4}]; - let _v = &mut v; + let x = &mut v; match v { //[mir]~ ERROR cannot use `v` because it was mutably borrowed &[_, F {x: ref xf, ..}] => println!("{}", xf), //[mir]~^ ERROR cannot borrow `v[..].x` as immutable because it is also borrowed as mutable // No errors in AST _ => panic!("other case") } + drop(x); } // Field from upvar { @@ -281,13 +299,15 @@ fn main() { } // Field from upvar nested { + // FIXME(#49824) -- the free region error below should probably not be there let mut x = 0; || { - || { - let y = &mut x; - &mut x; //[ast]~ ERROR cannot borrow `**x` as mutable more than once at a time - //[mir]~^ ERROR cannot borrow `x` as mutable more than once at a time - *y = 1; + || { //[mir]~ ERROR free region `` does not outlive + let y = &mut x; + &mut x; //[ast]~ ERROR cannot borrow `**x` as mutable more than once at a time + //[mir]~^ ERROR cannot borrow `x` as mutable more than once at a time + *y = 1; + drop(y); } }; } diff --git a/src/test/compile-fail/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs b/src/test/compile-fail/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs index f09a0c7414ba9..6f0e0f43f6088 100644 --- a/src/test/compile-fail/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs +++ b/src/test/compile-fail/borrowck/borrowck-imm-ref-to-mut-rec-field-issue-3162-c.rs @@ -13,10 +13,12 @@ fn main() { let mut _a = 3; - let _b = &mut _a; + let b = &mut _a; { - let _c = &*_b; + let c = &*b; _a = 4; //[ast]~ ERROR cannot assign to `_a` - //[mir]~^ ERROR cannot assign to `_a` because it is borrowed + //[mir]~^ ERROR cannot assign to `_a` because it is borrowed + drop(c); } + drop(b); } diff --git a/src/test/compile-fail/borrowck/borrowck-lend-flow-match.rs b/src/test/compile-fail/borrowck/borrowck-lend-flow-match.rs index 2fe764568bc82..f2f3e7914227c 100644 --- a/src/test/compile-fail/borrowck/borrowck-lend-flow-match.rs +++ b/src/test/compile-fail/borrowck/borrowck-lend-flow-match.rs @@ -24,9 +24,10 @@ fn separate_arms() { // fact no outstanding loan of x! x = Some(0); } - Some(ref __isize) => { + Some(ref r) => { x = Some(1); //[ast]~ ERROR cannot assign - //[mir]~^ ERROR cannot assign to `x` because it is borrowed + //[mir]~^ ERROR cannot assign to `x` because it is borrowed + drop(r); } } x.clone(); // just to prevent liveness warnings diff --git a/src/test/compile-fail/borrowck/borrowck-match-already-borrowed.rs b/src/test/compile-fail/borrowck/borrowck-match-already-borrowed.rs index 3e57ac0ca1910..c2136e62a7b22 100644 --- a/src/test/compile-fail/borrowck/borrowck-match-already-borrowed.rs +++ b/src/test/compile-fail/borrowck/borrowck-match-already-borrowed.rs @@ -25,16 +25,18 @@ fn match_enum() { Foo::A(x) => x //[ast]~ ERROR [E0503] //[mir]~^ ERROR [E0503] }; + drop(p); } fn main() { let mut x = 1; - let _x = &mut x; + let r = &mut x; let _ = match x { //[mir]~ ERROR [E0503] x => x + 1, //[ast]~ ERROR [E0503] //[mir]~^ ERROR [E0503] y => y + 2, //[ast]~ ERROR [E0503] //[mir]~^ ERROR [E0503] }; + drop(r); } diff --git a/src/test/compile-fail/borrowck/borrowck-mut-borrow-linear-errors.rs b/src/test/compile-fail/borrowck/borrowck-mut-borrow-linear-errors.rs index 63bb04a0e4c3a..7b0a71815a5f0 100644 --- a/src/test/compile-fail/borrowck/borrowck-mut-borrow-linear-errors.rs +++ b/src/test/compile-fail/borrowck/borrowck-mut-borrow-linear-errors.rs @@ -17,14 +17,14 @@ fn main() { let mut x = 1; - let mut addr; + let mut addr = vec![]; loop { match 1 { - 1 => { addr = &mut x; } //[ast]~ ERROR [E0499] + 1 => { addr.push(&mut x); } //[ast]~ ERROR [E0499] //[mir]~^ ERROR [E0499] - 2 => { addr = &mut x; } //[ast]~ ERROR [E0499] + 2 => { addr.push(&mut x); } //[ast]~ ERROR [E0499] //[mir]~^ ERROR [E0499] - _ => { addr = &mut x; } //[ast]~ ERROR [E0499] + _ => { addr.push(&mut x); } //[ast]~ ERROR [E0499] //[mir]~^ ERROR [E0499] } } diff --git a/src/test/compile-fail/borrowck/borrowck-overloaded-index-ref-index.rs b/src/test/compile-fail/borrowck/borrowck-overloaded-index-ref-index.rs index 3a4c22eb1395a..109fe3d1128e1 100644 --- a/src/test/compile-fail/borrowck/borrowck-overloaded-index-ref-index.rs +++ b/src/test/compile-fail/borrowck/borrowck-overloaded-index-ref-index.rs @@ -71,4 +71,5 @@ fn main() { s[2] = 20; //[ast]~^ ERROR cannot assign to immutable indexed content //[mir]~^^ ERROR cannot assign to immutable item + drop(rs); } diff --git a/src/test/compile-fail/borrowck/borrowck-pat-reassign-binding.rs b/src/test/compile-fail/borrowck/borrowck-pat-reassign-binding.rs index 0f3a841821080..d917a0abb88d0 100644 --- a/src/test/compile-fail/borrowck/borrowck-pat-reassign-binding.rs +++ b/src/test/compile-fail/borrowck/borrowck-pat-reassign-binding.rs @@ -21,7 +21,8 @@ fn main() { Some(ref i) => { // But on this branch, `i` is an outstanding borrow x = Some(*i+1); //[ast]~ ERROR cannot assign to `x` - //[mir]~^ ERROR cannot assign to `x` because it is borrowed + //[mir]~^ ERROR cannot assign to `x` because it is borrowed + drop(i); } } x.clone(); // just to prevent liveness warnings diff --git a/src/test/compile-fail/borrowck/borrowck-union-borrow.rs b/src/test/compile-fail/borrowck/borrowck-union-borrow.rs index 0241b3870c7e6..97193bd019123 100644 --- a/src/test/compile-fail/borrowck/borrowck-union-borrow.rs +++ b/src/test/compile-fail/borrowck/borrowck-union-borrow.rs @@ -25,82 +25,98 @@ fn main() { { let ra = &u.a; let ra2 = &u.a; // OK + drop(ra); } { let ra = &u.a; let a = u.a; // OK + drop(ra); } { let ra = &u.a; let rma = &mut u.a; //[ast]~ ERROR cannot borrow `u.a` as mutable because it is also borrowed as immutable //[mir]~^ ERROR cannot borrow `u.a` as mutable because it is also borrowed as immutable + drop(ra); } { let ra = &u.a; u.a = 1; //[ast]~ ERROR cannot assign to `u.a` because it is borrowed //[mir]~^ ERROR cannot assign to `u.a` because it is borrowed + drop(ra); } // Imm borrow, other field { let ra = &u.a; let rb = &u.b; // OK + drop(ra); } { let ra = &u.a; let b = u.b; // OK + drop(ra); } { let ra = &u.a; let rmb = &mut u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b`) as mutable because `u` is also borrowed as immutable (via `u.a`) //[mir]~^ ERROR cannot borrow `u.b` as mutable because it is also borrowed as immutable + drop(ra); } { let ra = &u.a; u.b = 1; //[ast]~ ERROR cannot assign to `u.b` because it is borrowed //[mir]~^ ERROR cannot assign to `u.b` because it is borrowed + drop(ra); } // Mut borrow, same field { let rma = &mut u.a; let ra = &u.a; //[ast]~ ERROR cannot borrow `u.a` as immutable because it is also borrowed as mutable //[mir]~^ ERROR cannot borrow `u.a` as immutable because it is also borrowed as mutable + drop(rma); } { let ra = &mut u.a; let a = u.a; //[ast]~ ERROR cannot use `u.a` because it was mutably borrowed //[mir]~^ ERROR cannot use `u.a` because it was mutably borrowed + drop(ra); } { let rma = &mut u.a; let rma2 = &mut u.a; //[ast]~ ERROR cannot borrow `u.a` as mutable more than once at a time //[mir]~^ ERROR cannot borrow `u.a` as mutable more than once at a time + drop(rma); } { let rma = &mut u.a; u.a = 1; //[ast]~ ERROR cannot assign to `u.a` because it is borrowed //[mir]~^ ERROR cannot assign to `u.a` because it is borrowed + drop(rma); } // Mut borrow, other field { let rma = &mut u.a; let rb = &u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b`) as immutable because `u` is also borrowed as mutable (via `u.a`) //[mir]~^ ERROR cannot borrow `u.b` as immutable because it is also borrowed as mutable + drop(rma); } { let ra = &mut u.a; let b = u.b; //[ast]~ ERROR cannot use `u.b` because it was mutably borrowed //[mir]~^ ERROR cannot use `u.b` because it was mutably borrowed + drop(ra); } { let rma = &mut u.a; let rmb2 = &mut u.b; //[ast]~ ERROR cannot borrow `u` (via `u.b`) as mutable more than once at a time //[mir]~^ ERROR cannot borrow `u.b` as mutable more than once at a time + drop(rma); } { let rma = &mut u.a; u.b = 1; //[ast]~ ERROR cannot assign to `u.b` because it is borrowed //[mir]~^ ERROR cannot assign to `u.b` because it is borrowed + drop(rma); } } } diff --git a/src/test/compile-fail/borrowck/two-phase-activation-sharing-interference.rs b/src/test/compile-fail/borrowck/two-phase-activation-sharing-interference.rs index 90933c6b31fa8..77b237e34f2b7 100644 --- a/src/test/compile-fail/borrowck/two-phase-activation-sharing-interference.rs +++ b/src/test/compile-fail/borrowck/two-phase-activation-sharing-interference.rs @@ -13,10 +13,9 @@ // revisions: nll_target // The following revisions are disabled due to missing support from two-phase beyond autorefs -//[lxl_beyond] compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two-phase-beyond-autoref -//[nll_beyond] compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two-phase-beyond-autoref -Z nll +//[nll_beyond] compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two-phase-beyond-autoref -//[nll_target] compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +//[nll_target] compile-flags: -Z borrowck=mir -Z two-phase-borrows // This is an important corner case pointed out by Niko: one is // allowed to initiate a shared borrow during a reservation, but it diff --git a/src/test/compile-fail/borrowck/two-phase-allow-access-during-reservation.rs b/src/test/compile-fail/borrowck/two-phase-allow-access-during-reservation.rs index d2f4154433ab1..5deabf9376482 100644 --- a/src/test/compile-fail/borrowck/two-phase-allow-access-during-reservation.rs +++ b/src/test/compile-fail/borrowck/two-phase-allow-access-during-reservation.rs @@ -13,11 +13,9 @@ // revisions: nll_target // The following revisions are disabled due to missing support for two_phase_beyond_autoref -//[lxl_beyond] compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two_phase_beyond_autoref -//[nll_beyond] compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two_phase_beyond_autoref -Z nll +//[nll_beyond] compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two_phase_beyond_autoref - -//[nll_target] compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +//[nll_target] compile-flags: -Z borrowck=mir -Z two-phase-borrows // This is the second counter-example from Niko's blog post // smallcultfollowing.com/babysteps/blog/2017/03/01/nested-method-calls-via-two-phase-borrowing/ @@ -44,9 +42,8 @@ fn main() { /*3*/ *p += 1; // (mutable borrow of `i` starts here, since `p` is used) - /*4*/ let k = i; //[lxl_beyond]~ ERROR cannot use `i` because it was mutably borrowed [E0503] - //[nll_beyond]~^ ERROR cannot use `i` because it was mutably borrowed [E0503] - //[nll_target]~^^ ERROR cannot use `i` because it was mutably borrowed [E0503] + /*4*/ let k = i; //[nll_beyond]~ ERROR cannot use `i` because it was mutably borrowed [E0503] + //[nll_target]~^ ERROR cannot use `i` because it was mutably borrowed [E0503] /*5*/ *p += 1; diff --git a/src/test/compile-fail/borrowck/two-phase-cannot-nest-mut-self-calls.rs b/src/test/compile-fail/borrowck/two-phase-cannot-nest-mut-self-calls.rs index 01b04708599c0..15700a1d61a1f 100644 --- a/src/test/compile-fail/borrowck/two-phase-cannot-nest-mut-self-calls.rs +++ b/src/test/compile-fail/borrowck/two-phase-cannot-nest-mut-self-calls.rs @@ -8,9 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// revisions: lxl nll -//[lxl]compile-flags: -Z borrowck=mir -Z two-phase-borrows -//[nll]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +// compile-flags: -Z borrowck=mir -Z two-phase-borrows // This is the third counter-example from Niko's blog post // smallcultfollowing.com/babysteps/blog/2017/03/01/nested-method-calls-via-two-phase-borrowing/ @@ -26,8 +24,7 @@ fn main() { vec.get({ vec.push(2); - //[lxl]~^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable - //[nll]~^^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable + //~^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable 0 }); diff --git a/src/test/compile-fail/borrowck/two-phase-nonrecv-autoref.rs b/src/test/compile-fail/borrowck/two-phase-nonrecv-autoref.rs index ef39fabda10e6..4303048138d91 100644 --- a/src/test/compile-fail/borrowck/two-phase-nonrecv-autoref.rs +++ b/src/test/compile-fail/borrowck/two-phase-nonrecv-autoref.rs @@ -8,12 +8,11 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// revisions: ast lxl nll +// revisions: ast nll //[ast]compile-flags: -//[lxl]compile-flags: -Z borrowck=mir -Z two-phase-borrows -//[nll]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +//[nll]compile-flags: -Z borrowck=mir -Z two-phase-borrows -//[g2p]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll -Z two-phase-beyond-autoref +//[g2p]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two-phase-beyond-autoref // the above revision is disabled until two-phase-beyond-autoref support is better // This is a test checking that when we limit two-phase borrows to @@ -69,44 +68,38 @@ fn overloaded_call_traits() { fn twice_ten_sm i32>(f: &mut F) { f(f(10)); - //[lxl]~^ ERROR cannot borrow `*f` as mutable more than once at a time - //[nll]~^^ ERROR cannot borrow `*f` as mutable more than once at a time - //[g2p]~^^^ ERROR cannot borrow `*f` as mutable more than once at a time - //[ast]~^^^^ ERROR cannot borrow `*f` as mutable more than once at a time + //[nll]~^ ERROR cannot borrow `*f` as mutable more than once at a time + //[g2p]~^^ ERROR cannot borrow `*f` as mutable more than once at a time + //[ast]~^^^ ERROR cannot borrow `*f` as mutable more than once at a time } fn twice_ten_si i32>(f: &mut F) { f(f(10)); } fn twice_ten_so i32>(f: Box) { f(f(10)); - //[lxl]~^ ERROR use of moved value: `*f` - //[nll]~^^ ERROR use of moved value: `*f` - //[g2p]~^^^ ERROR use of moved value: `*f` - //[ast]~^^^^ ERROR use of moved value: `*f` + //[nll]~^ ERROR use of moved value: `*f` + //[g2p]~^^ ERROR use of moved value: `*f` + //[ast]~^^^ ERROR use of moved value: `*f` } fn twice_ten_om(f: &mut FnMut(i32) -> i32) { f(f(10)); - //[lxl]~^ ERROR cannot borrow `*f` as mutable more than once at a time - //[nll]~^^ ERROR cannot borrow `*f` as mutable more than once at a time - //[g2p]~^^^ ERROR cannot borrow `*f` as mutable more than once at a time - //[ast]~^^^^ ERROR cannot borrow `*f` as mutable more than once at a time + //[nll]~^ ERROR cannot borrow `*f` as mutable more than once at a time + //[g2p]~^^ ERROR cannot borrow `*f` as mutable more than once at a time + //[ast]~^^^ ERROR cannot borrow `*f` as mutable more than once at a time } fn twice_ten_oi(f: &mut Fn(i32) -> i32) { f(f(10)); } fn twice_ten_oo(f: Box i32>) { f(f(10)); - //[lxl]~^ ERROR cannot move a value of type - //[lxl]~^^ ERROR cannot move a value of type - //[lxl]~^^^ ERROR use of moved value: `*f` - //[nll]~^^^^ ERROR cannot move a value of type - //[nll]~^^^^^ ERROR cannot move a value of type - //[nll]~^^^^^^ ERROR use of moved value: `*f` - //[g2p]~^^^^^^^ ERROR cannot move a value of type - //[g2p]~^^^^^^^^ ERROR cannot move a value of type - //[g2p]~^^^^^^^^^ ERROR use of moved value: `*f` - //[ast]~^^^^^^^^^^ ERROR use of moved value: `*f` + //[nll]~^ ERROR cannot move a value of type + //[nll]~^^ ERROR cannot move a value of type + //[nll]~^^^ ERROR use of moved value: `*f` + //[g2p]~^^^^ ERROR cannot move a value of type + //[g2p]~^^^^^ ERROR cannot move a value of type + //[g2p]~^^^^^^ ERROR use of moved value: `*f` + //[ast]~^^^^^^^ ERROR use of moved value: `*f` } twice_ten_sm(&mut |x| x + 1); @@ -144,10 +137,9 @@ fn coerce_unsized() { // This is not okay. double_access(&mut a, &a); - //[lxl]~^ ERROR cannot borrow `a` as immutable because it is also borrowed as mutable [E0502] - //[nll]~^^ ERROR cannot borrow `a` as immutable because it is also borrowed as mutable [E0502] - //[g2p]~^^^ ERROR cannot borrow `a` as immutable because it is also borrowed as mutable [E0502] - //[ast]~^^^^ ERROR cannot borrow `a` as immutable because it is also borrowed as mutable [E0502] + //[nll]~^ ERROR cannot borrow `a` as immutable because it is also borrowed as mutable [E0502] + //[g2p]~^^ ERROR cannot borrow `a` as immutable because it is also borrowed as mutable [E0502] + //[ast]~^^^ ERROR cannot borrow `a` as immutable because it is also borrowed as mutable [E0502] // But this is okay. a.m(a.i(10)); @@ -173,16 +165,14 @@ impl IndexMut for I { fn coerce_index_op() { let mut i = I(10); i[i[3]] = 4; - //[lxl]~^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] - //[nll]~^^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] - //[ast]~^^^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] + //[nll]~^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] + //[ast]~^^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] i[3] = i[4]; i[i[3]] = i[4]; - //[lxl]~^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] - //[nll]~^^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] - //[ast]~^^^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] + //[nll]~^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] + //[ast]~^^ ERROR cannot borrow `i` as immutable because it is also borrowed as mutable [E0502] } fn main() { diff --git a/src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference-2.rs b/src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference-2.rs index fc9100c8a9a86..f9326d944b8e4 100644 --- a/src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference-2.rs +++ b/src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference-2.rs @@ -8,9 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// revisions: lxl nll -//[lxl]compile-flags: -Z borrowck=mir -Z two-phase-borrows -//[nll]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +// compile-flags: -Z borrowck=mir -Z two-phase-borrows // This is similar to two-phase-reservation-sharing-interference.rs // in that it shows a reservation that overlaps with a shared borrow. @@ -26,12 +24,11 @@ #![feature(rustc_attrs)] #[rustc_error] -fn main() { //[nll]~ ERROR compilation successful +fn main() { //~ ERROR compilation successful let mut v = vec![0, 1, 2]; let shared = &v; v.push(shared.len()); - //[lxl]~^ ERROR cannot borrow `v` as mutable because it is also borrowed as immutable [E0502] assert_eq!(v, [0, 1, 2, 3]); } diff --git a/src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference.rs b/src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference.rs index 058022ad588e8..1333167b780a8 100644 --- a/src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference.rs +++ b/src/test/compile-fail/borrowck/two-phase-reservation-sharing-interference.rs @@ -10,15 +10,13 @@ // ignore-tidy-linelength -// revisions: lxl_beyond nll_beyond nll_target +// revisions: nll_beyond nll_target // The following revisions are disabled due to missing support from two-phase beyond autorefs -//[lxl_beyond]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two-phase-beyond-autoref -//[lxl_beyond] should-fail -//[nll_beyond]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two-phase-beyond-autoref -Z nll +//[nll_beyond]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z two-phase-beyond-autoref //[nll_beyond] should-fail -//[nll_target]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +//[nll_target]compile-flags: -Z borrowck=mir -Z two-phase-borrows // This is a corner case that the current implementation is (probably) // treating more conservatively than is necessary. But it also does @@ -46,9 +44,8 @@ fn main() { // with the shared borrow. But in the current implementation, // its an error. delay = &mut vec; - //[lxl_beyond]~^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable - //[nll_beyond]~^^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable - //[nll_target]~^^^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable + //[nll_beyond]~^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable + //[nll_target]~^^ ERROR cannot borrow `vec` as mutable because it is also borrowed as immutable shared[0]; } diff --git a/src/test/compile-fail/borrowck/two-phase-sneaky.rs b/src/test/compile-fail/borrowck/two-phase-sneaky.rs index 32747407c67f0..eec4b470d75f7 100644 --- a/src/test/compile-fail/borrowck/two-phase-sneaky.rs +++ b/src/test/compile-fail/borrowck/two-phase-sneaky.rs @@ -8,9 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// revisions: lxl nll -//[lxl]compile-flags: -Z borrowck=mir -Z two-phase-borrows -//[nll]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +// cmpile-flags: -Z borrowck=mir -Z two-phase-borrows // This is the first counter-example from Niko's blog post // smallcultfollowing.com/babysteps/blog/2017/03/01/nested-method-calls-via-two-phase-borrowing/ @@ -22,8 +20,7 @@ fn main() { v[0].push_str({ v.push(format!("foo")); - //[lxl]~^ ERROR cannot borrow `v` as mutable more than once at a time [E0499] - //[nll]~^^ ERROR cannot borrow `v` as mutable more than once at a time [E0499] + //~^ ERROR cannot borrow `v` as mutable more than once at a time [E0499] "World!" }); diff --git a/src/test/compile-fail/coerce-overloaded-autoderef.rs b/src/test/compile-fail/coerce-overloaded-autoderef.rs index 0487b03171adb..5a05f59c6f402 100644 --- a/src/test/compile-fail/coerce-overloaded-autoderef.rs +++ b/src/test/compile-fail/coerce-overloaded-autoderef.rs @@ -22,6 +22,7 @@ fn double_mut_borrow(x: &mut Box) { let z = borrow_mut(x); //[ast]~^ ERROR cannot borrow `*x` as mutable more than once at a time //[mir]~^^ ERROR cannot borrow `*x` as mutable more than once at a time + drop((y, z)); } fn double_imm_borrow(x: &mut Box) { @@ -30,6 +31,7 @@ fn double_imm_borrow(x: &mut Box) { **x += 1; //[ast]~^ ERROR cannot assign to `**x` because it is borrowed //[mir]~^^ ERROR cannot assign to `**x` because it is borrowed + drop((y, z)); } fn double_mut_borrow2(x: &mut Box) { diff --git a/src/test/compile-fail/hrtb-identity-fn-borrows.rs b/src/test/compile-fail/hrtb-identity-fn-borrows.rs index 5f5b70dda5e81..e98cf4eb2abd9 100644 --- a/src/test/compile-fail/hrtb-identity-fn-borrows.rs +++ b/src/test/compile-fail/hrtb-identity-fn-borrows.rs @@ -33,6 +33,7 @@ fn call_repeatedly(f: F) f.call(&x); f.call(&x); x = 5; + drop(y); } fn main() { diff --git a/src/test/compile-fail/issue-36082.rs b/src/test/compile-fail/issue-36082.rs index fc3e0633750d8..ed6a2f85fbe23 100644 --- a/src/test/compile-fail/issue-36082.rs +++ b/src/test/compile-fail/issue-36082.rs @@ -11,6 +11,8 @@ // revisions: ast mir //[mir]compile-flags: -Z borrowck=mir +// FIXME(#49821) -- No tip about using a let binding + use std::cell::RefCell; fn main() { @@ -24,10 +26,9 @@ fn main() { //[ast]~| NOTE temporary value does not live long enough //[ast]~| NOTE consider using a `let` binding to increase its lifetime //[mir]~^^^^^ ERROR borrowed value does not live long enough [E0597] - //[mir]~| NOTE temporary value dropped here while still borrowed //[mir]~| NOTE temporary value does not live long enough - //[mir]~| NOTE consider using a `let` binding to increase its lifetime + //[mir]~| NOTE temporary value only lives until here println!("{}", val); + //[mir]~^ borrow later used here } //[ast]~^ NOTE temporary value needs to live until here -//[mir]~^^ NOTE temporary value needs to live until here diff --git a/src/test/compile-fail/mir_check_cast_closure.rs b/src/test/compile-fail/mir_check_cast_closure.rs index 6562efeb6d893..d8f5956b58530 100644 --- a/src/test/compile-fail/mir_check_cast_closure.rs +++ b/src/test/compile-fail/mir_check_cast_closure.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags: -Z borrowck=mir -Z nll +// compile-flags: -Z borrowck=mir #![allow(dead_code)] @@ -16,7 +16,7 @@ fn bar<'a, 'b>() -> fn(&'a u32, &'b u32) -> &'a u32 { let g: fn(_, _) -> _ = |_x, y| y; //~^ ERROR free region `'b` does not outlive free region `'a` g - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll } fn main() {} diff --git a/src/test/compile-fail/mir_check_cast_reify.rs b/src/test/compile-fail/mir_check_cast_reify.rs index f6ad2820d17ce..1f9174b3574a7 100644 --- a/src/test/compile-fail/mir_check_cast_reify.rs +++ b/src/test/compile-fail/mir_check_cast_reify.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags: -Z borrowck=mir -Z nll +// compile-flags: -Zborrowck=mir #![allow(dead_code)] @@ -44,7 +44,7 @@ fn bar<'a>(x: &'a u32) -> &'static u32 { // The MIR type checker must therefore relate `'?0` to `'?1` and `'?2` // as part of checking the `ReifyFnPointer`. let f: fn(_) -> _ = foo; - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR free region `'a` does not outlive free region `'static` f(x) } diff --git a/src/test/compile-fail/mir_check_cast_unsafe_fn.rs b/src/test/compile-fail/mir_check_cast_unsafe_fn.rs index c9b378dacd540..27ca2728ddfd6 100644 --- a/src/test/compile-fail/mir_check_cast_unsafe_fn.rs +++ b/src/test/compile-fail/mir_check_cast_unsafe_fn.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags: -Z borrowck=mir -Z nll +// compile-flags: -Zborrowck=mir #![allow(dead_code)] @@ -16,7 +16,7 @@ fn bar<'a>(input: &'a u32, f: fn(&'a u32) -> &'a u32) -> &'static u32 { // Here the NLL checker must relate the types in `f` to the types // in `g`. These are related via the `UnsafeFnPointer` cast. let g: unsafe fn(_) -> _ = f; - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR free region `'a` does not outlive free region `'static` unsafe { g(input) } } diff --git a/src/test/compile-fail/mir_check_cast_unsize.rs b/src/test/compile-fail/mir_check_cast_unsize.rs index 1df56793f73bd..e30bed6105815 100644 --- a/src/test/compile-fail/mir_check_cast_unsize.rs +++ b/src/test/compile-fail/mir_check_cast_unsize.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags: -Z borrowck=mir -Z nll +// compile-flags: -Z borrowck=mir #![allow(dead_code)] #![feature(dyn_trait)] @@ -18,7 +18,7 @@ use std::fmt::Debug; fn bar<'a>(x: &'a u32) -> &'static dyn Debug { //~^ ERROR free region `'a` does not outlive free region `'static` x - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll } fn main() {} diff --git a/src/test/compile-fail/mut-pattern-internal-mutability.rs b/src/test/compile-fail/mut-pattern-internal-mutability.rs index 72727cdfe54d2..a05ee64937eb7 100644 --- a/src/test/compile-fail/mut-pattern-internal-mutability.rs +++ b/src/test/compile-fail/mut-pattern-internal-mutability.rs @@ -25,5 +25,6 @@ fn main() { // check borrowing is detected successfully let &mut ref x = foo; *foo += 1; //[ast]~ ERROR cannot assign to `*foo` because it is borrowed - //[mir]~^ ERROR cannot assign to `*foo` because it is borrowed + //[mir]~^ ERROR cannot assign to `*foo` because it is borrowed + drop(x); } diff --git a/src/test/compile-fail/nll/loan_ends_mid_block_pair.rs b/src/test/compile-fail/nll/loan_ends_mid_block_pair.rs index fdc650a072131..97126e98cbf3a 100644 --- a/src/test/compile-fail/nll/loan_ends_mid_block_pair.rs +++ b/src/test/compile-fail/nll/loan_ends_mid_block_pair.rs @@ -9,7 +9,7 @@ // except according to those terms. -// compile-flags:-Zborrowck=compare -Znll +// compile-flags:-Zborrowck=compare #![allow(warnings)] #![feature(rustc_attrs)] diff --git a/src/test/compile-fail/nll/loan_ends_mid_block_vec.rs b/src/test/compile-fail/nll/loan_ends_mid_block_vec.rs index f22d2fc23e057..b5357d0ee827c 100644 --- a/src/test/compile-fail/nll/loan_ends_mid_block_vec.rs +++ b/src/test/compile-fail/nll/loan_ends_mid_block_vec.rs @@ -9,7 +9,7 @@ // except according to those terms. -// compile-flags:-Zborrowck=compare -Znll +// compile-flags:-Zborrowck=compare #![allow(warnings)] #![feature(rustc_attrs)] diff --git a/src/test/compile-fail/nll/reference-carried-through-struct-field.rs b/src/test/compile-fail/nll/reference-carried-through-struct-field.rs index efa6cc273b6f4..589a3daa38d85 100644 --- a/src/test/compile-fail/nll/reference-carried-through-struct-field.rs +++ b/src/test/compile-fail/nll/reference-carried-through-struct-field.rs @@ -9,7 +9,7 @@ // except according to those terms. //revisions: ast mir -//[mir] compile-flags: -Z borrowck=mir -Z nll +//[mir] compile-flags: -Z borrowck=mir #![allow(unused_assignments)] diff --git a/src/test/compile-fail/nll/region-ends-after-if-condition.rs b/src/test/compile-fail/nll/region-ends-after-if-condition.rs index 1128d65af95c5..e1c47a6bbff2c 100644 --- a/src/test/compile-fail/nll/region-ends-after-if-condition.rs +++ b/src/test/compile-fail/nll/region-ends-after-if-condition.rs @@ -12,7 +12,7 @@ // in the type of `p` includes the points after `&v[0]` up to (but not // including) the call to `use_x`. The `else` branch is not included. -// compile-flags:-Zborrowck=compare -Znll +// compile-flags:-Zborrowck=compare #![allow(warnings)] #![feature(rustc_attrs)] diff --git a/src/test/compile-fail/nll/return_from_loop.rs b/src/test/compile-fail/nll/return_from_loop.rs index 7ed59ef2a879b..13f1ca6431b3d 100644 --- a/src/test/compile-fail/nll/return_from_loop.rs +++ b/src/test/compile-fail/nll/return_from_loop.rs @@ -12,7 +12,7 @@ // in the type of `p` includes the points after `&v[0]` up to (but not // including) the call to `use_x`. The `else` branch is not included. -// compile-flags:-Zborrowck=compare -Znll +// compile-flags:-Zborrowck=compare #![allow(warnings)] #![feature(rustc_attrs)] diff --git a/src/test/compile-fail/nll/where_clauses_in_functions.rs b/src/test/compile-fail/nll/where_clauses_in_functions.rs index ecea8756903ae..1a3dc76005db4 100644 --- a/src/test/compile-fail/nll/where_clauses_in_functions.rs +++ b/src/test/compile-fail/nll/where_clauses_in_functions.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags: -Z borrowck=mir -Z nll +// compile-flags: -Zborrowck=mir #![allow(dead_code)] @@ -22,7 +22,7 @@ where fn bar<'a, 'b>(x: &'a u32, y: &'b u32) -> (&'a u32, &'b u32) { foo(x, y) //~^ ERROR lifetime mismatch [E0623] - //~| WARNING not reporting region error due to -Znll + //~| WARNING not reporting region error due to nll } fn main() {} diff --git a/src/test/compile-fail/nll/where_clauses_in_structs.rs b/src/test/compile-fail/nll/where_clauses_in_structs.rs index f1a6dc48e13b8..69f0f43af1342 100644 --- a/src/test/compile-fail/nll/where_clauses_in_structs.rs +++ b/src/test/compile-fail/nll/where_clauses_in_structs.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags: -Z borrowck=mir -Z nll +// compile-flags: -Z borrowck=mir #![allow(dead_code)] @@ -22,7 +22,7 @@ struct Foo<'a: 'b, 'b> { fn bar<'a, 'b>(x: Cell<&'a u32>, y: Cell<&'b u32>) { Foo { x, y }; //~^ ERROR lifetime mismatch [E0623] - //~| WARNING not reporting region error due to -Znll + //~| WARNING not reporting region error due to nll } fn main() {} diff --git a/src/test/compile-fail/regions-pattern-typing-issue-19997.rs b/src/test/compile-fail/regions-pattern-typing-issue-19997.rs index 6fbc65ce6a71f..1f23dcbb72523 100644 --- a/src/test/compile-fail/regions-pattern-typing-issue-19997.rs +++ b/src/test/compile-fail/regions-pattern-typing-issue-19997.rs @@ -18,7 +18,8 @@ fn main() { match (&a1,) { (&ref b0,) => { a1 = &f; //[ast]~ ERROR cannot assign - //[mir]~^ ERROR cannot assign to `a1` because it is borrowed + //[mir]~^ ERROR cannot assign to `a1` because it is borrowed + drop(b0); } } } diff --git a/src/test/compile-fail/regions-static-bound.rs b/src/test/compile-fail/regions-static-bound.rs index 13f93090fbbb4..a0097b9f6d7df 100644 --- a/src/test/compile-fail/regions-static-bound.rs +++ b/src/test/compile-fail/regions-static-bound.rs @@ -9,7 +9,7 @@ // except according to those terms. // revisions: ll nll -//[nll] compile-flags: -Znll -Zborrowck=mir +//[nll] compile-flags:-Zborrowck=mir fn static_id<'a,'b>(t: &'a ()) -> &'static () where 'a: 'static { t } @@ -17,16 +17,16 @@ fn static_id_indirect<'a,'b>(t: &'a ()) -> &'static () where 'a: 'b, 'b: 'static { t } fn static_id_wrong_way<'a>(t: &'a ()) -> &'static () where 'static: 'a { t //[ll]~ ERROR E0312 - //[nll]~^ WARNING not reporting region error due to -Znll + //[nll]~^ WARNING not reporting region error due to nll //[nll]~| ERROR free region `'a` does not outlive free region `'static` } fn error(u: &(), v: &()) { static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621] - //[nll]~^ WARNING not reporting region error due to -Znll + //[nll]~^ WARNING not reporting region error due to nll //[nll]~| ERROR explicit lifetime required in the type of `u` [E0621] static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621] - //[nll]~^ WARNING not reporting region error due to -Znll + //[nll]~^ WARNING not reporting region error due to nll //[nll]~| ERROR explicit lifetime required in the type of `v` [E0621] } diff --git a/src/test/mir-opt/nll/liveness-call-subtlety.rs b/src/test/mir-opt/nll/liveness-call-subtlety.rs index 09288cf69ff58..f41b39845a579 100644 --- a/src/test/mir-opt/nll/liveness-call-subtlety.rs +++ b/src/test/mir-opt/nll/liveness-call-subtlety.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll +// compile-flags:-Zborrowck=mir fn can_panic() -> Box { Box::new(44) diff --git a/src/test/mir-opt/nll/liveness-drop-intra-block.rs b/src/test/mir-opt/nll/liveness-drop-intra-block.rs index 64ffc7446062c..073b44d6e3387 100644 --- a/src/test/mir-opt/nll/liveness-drop-intra-block.rs +++ b/src/test/mir-opt/nll/liveness-drop-intra-block.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll +// compile-flags:-Zborrowck=mir #![allow(warnings)] diff --git a/src/test/mir-opt/nll/liveness-interblock.rs b/src/test/mir-opt/nll/liveness-interblock.rs index 671f5e5292aa4..6a8749084068a 100644 --- a/src/test/mir-opt/nll/liveness-interblock.rs +++ b/src/test/mir-opt/nll/liveness-interblock.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll +// compile-flags:-Zborrowck=mir fn cond() -> bool { false } diff --git a/src/test/mir-opt/nll/named-lifetimes-basic.rs b/src/test/mir-opt/nll/named-lifetimes-basic.rs index 8feac15d69a82..5cca3e55259d0 100644 --- a/src/test/mir-opt/nll/named-lifetimes-basic.rs +++ b/src/test/mir-opt/nll/named-lifetimes-basic.rs @@ -13,8 +13,8 @@ // suitable variables and that we setup the outlives relationship // between R0 and R1 properly. -// compile-flags:-Znll -Zverbose -// ^^^^^^^^^ force compiler to dump more region information +// compile-flags:-Zborrowck=mir -Zverbose +// ^^^^^^^^^ force compiler to dump more region information // ignore-tidy-linelength #![allow(warnings)] diff --git a/src/test/mir-opt/nll/reborrow-basic.rs b/src/test/mir-opt/nll/reborrow-basic.rs index 92e42a73bbb6a..b7c8d81b77fdb 100644 --- a/src/test/mir-opt/nll/reborrow-basic.rs +++ b/src/test/mir-opt/nll/reborrow-basic.rs @@ -12,8 +12,8 @@ // in the type of `r_a` must outlive the region (`R7`) that appears in // the type of `r_b` -// compile-flags:-Znll -Zverbose -// ^^^^^^^^^ force compiler to dump more region information +// compile-flags:-Zborrowck=mir -Zverbose +// ^^^^^^^^^ force compiler to dump more region information #![allow(warnings)] diff --git a/src/test/mir-opt/nll/region-liveness-basic.rs b/src/test/mir-opt/nll/region-liveness-basic.rs index 19d733d4f6b6a..75d8a6a4f6ac5 100644 --- a/src/test/mir-opt/nll/region-liveness-basic.rs +++ b/src/test/mir-opt/nll/region-liveness-basic.rs @@ -12,8 +12,8 @@ // in the type of `p` includes the points after `&v[0]` up to (but not // including) the call to `use_x`. The `else` branch is not included. -// compile-flags:-Znll -Zverbose -// ^^^^^^^^^ force compiler to dump more region information +// compile-flags:-Zborrowck=mir -Zverbose +// ^^^^^^^^^ force compiler to dump more region information #![allow(warnings)] diff --git a/src/test/mir-opt/nll/region-liveness-two-disjoint-uses.rs b/src/test/mir-opt/nll/region-liveness-two-disjoint-uses.rs index 821cd73667193..153739133ac82 100644 --- a/src/test/mir-opt/nll/region-liveness-two-disjoint-uses.rs +++ b/src/test/mir-opt/nll/region-liveness-two-disjoint-uses.rs @@ -14,8 +14,8 @@ // but only at a particular point, and hence they wind up including // distinct regions. -// compile-flags:-Znll -Zverbose -// ^^^^^^^^^ force compiler to dump more region information +// compile-flags:-Zborrowck=mir -Zverbose +// ^^^^^^^^^ force compiler to dump more region information #![allow(warnings)] diff --git a/src/test/mir-opt/nll/region-subtyping-basic.rs b/src/test/mir-opt/nll/region-subtyping-basic.rs index a3f68ed5ebf5e..16952143d0a5b 100644 --- a/src/test/mir-opt/nll/region-subtyping-basic.rs +++ b/src/test/mir-opt/nll/region-subtyping-basic.rs @@ -12,8 +12,8 @@ // in the type of `p` includes the points after `&v[0]` up to (but not // including) the call to `use_x`. The `else` branch is not included. -// compile-flags:-Znll -Zverbose -// ^^^^^^^^^ force compiler to dump more region information +// compile-flags:-Zborrowck=mir -Zverbose +// ^^^^^^^^^ force compiler to dump more region information #![allow(warnings)] diff --git a/src/test/run-pass/borrowck/two-phase-baseline.rs b/src/test/run-pass/borrowck/two-phase-baseline.rs index 6623444926398..ca15591a10192 100644 --- a/src/test/run-pass/borrowck/two-phase-baseline.rs +++ b/src/test/run-pass/borrowck/two-phase-baseline.rs @@ -8,9 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// revisions: lxl nll -//[lxl]compile-flags: -Z borrowck=mir -Z two-phase-borrows -//[nll]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +// compile-flags: -Z borrowck=mir -Z two-phase-borrows // This is the "goto example" for why we want two phase borrows. diff --git a/src/test/run-pass/impl-trait/example-calendar.rs b/src/test/run-pass/impl-trait/example-calendar.rs index b1db203071788..e3b7322e48b6b 100644 --- a/src/test/run-pass/impl-trait/example-calendar.rs +++ b/src/test/run-pass/impl-trait/example-calendar.rs @@ -9,7 +9,7 @@ // except according to those terms. // revisions: normal nll -//[nll] compile-flags: -Znll -Zborrowck=mir +//[nll] compile-flags:-Zborrowck=mir #![feature(fn_traits, step_trait, diff --git a/src/test/ui/borrowck/borrowck-closures-two-mut.rs b/src/test/ui/borrowck/borrowck-closures-two-mut.rs index b6946154fa00a..55e73af9e6a1b 100644 --- a/src/test/ui/borrowck/borrowck-closures-two-mut.rs +++ b/src/test/ui/borrowck/borrowck-closures-two-mut.rs @@ -23,6 +23,7 @@ fn a() { let c1 = to_fn_mut(|| x = 4); let c2 = to_fn_mut(|| x = 5); //~ ERROR cannot borrow `x` as mutable more than once //~| ERROR cannot borrow `x` as mutable more than once + drop((c1, c2)); } fn set(x: &mut isize) { @@ -34,6 +35,7 @@ fn b() { let c1 = to_fn_mut(|| set(&mut x)); let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as mutable more than once //~| ERROR cannot borrow `x` as mutable more than once + drop((c1, c2)); } fn c() { @@ -41,6 +43,7 @@ fn c() { let c1 = to_fn_mut(|| x = 5); let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as mutable more than once //~| ERROR cannot borrow `x` as mutable more than once + drop((c1, c2)); } fn d() { @@ -49,6 +52,7 @@ fn d() { let c2 = to_fn_mut(|| { let _y = to_fn_mut(|| set(&mut x)); }); // (nested closure) //~^ ERROR cannot borrow `x` as mutable more than once //~| ERROR cannot borrow `x` as mutable more than once + drop((c1, c2)); } fn g() { @@ -61,6 +65,7 @@ fn g() { let c2 = to_fn_mut(|| set(&mut *x.f)); //~^ ERROR cannot borrow `x` as mutable more than once //~| ERROR cannot borrow `x` as mutable more than once + drop((c1, c2)); } fn main() { diff --git a/src/test/ui/borrowck/borrowck-closures-two-mut.stderr b/src/test/ui/borrowck/borrowck-closures-two-mut.stderr index c739165ddbd37..a4f8e8b408ba5 100644 --- a/src/test/ui/borrowck/borrowck-closures-two-mut.stderr +++ b/src/test/ui/borrowck/borrowck-closures-two-mut.stderr @@ -9,12 +9,12 @@ LL | let c2 = to_fn_mut(|| x = 5); //~ ERROR cannot borrow `x` as mutable mo | ^^ - borrow occurs due to use of `x` in closure | | | second mutable borrow occurs here -LL | //~| ERROR cannot borrow `x` as mutable more than once +... LL | } | - first borrow ends here error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast) - --> $DIR/borrowck-closures-two-mut.rs:35:24 + --> $DIR/borrowck-closures-two-mut.rs:36:24 | LL | let c1 = to_fn_mut(|| set(&mut x)); | -- - previous borrow occurs due to use of `x` in closure @@ -24,12 +24,12 @@ LL | let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as muta | ^^ - borrow occurs due to use of `x` in closure | | | second mutable borrow occurs here -LL | //~| ERROR cannot borrow `x` as mutable more than once +... LL | } | - first borrow ends here error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast) - --> $DIR/borrowck-closures-two-mut.rs:42:24 + --> $DIR/borrowck-closures-two-mut.rs:44:24 | LL | let c1 = to_fn_mut(|| x = 5); | -- - previous borrow occurs due to use of `x` in closure @@ -39,12 +39,12 @@ LL | let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as muta | ^^ - borrow occurs due to use of `x` in closure | | | second mutable borrow occurs here -LL | //~| ERROR cannot borrow `x` as mutable more than once +... LL | } | - first borrow ends here error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast) - --> $DIR/borrowck-closures-two-mut.rs:49:24 + --> $DIR/borrowck-closures-two-mut.rs:52:24 | LL | let c1 = to_fn_mut(|| x = 5); | -- - previous borrow occurs due to use of `x` in closure @@ -59,7 +59,7 @@ LL | } | - first borrow ends here error[E0499]: cannot borrow `x` as mutable more than once at a time (Ast) - --> $DIR/borrowck-closures-two-mut.rs:61:24 + --> $DIR/borrowck-closures-two-mut.rs:65:24 | LL | let c1 = to_fn_mut(|| set(&mut *x.f)); | -- - previous borrow occurs due to use of `x` in closure @@ -85,11 +85,11 @@ LL | let c2 = to_fn_mut(|| x = 5); //~ ERROR cannot borrow `x` as mutable mo | | | second mutable borrow occurs here LL | //~| ERROR cannot borrow `x` as mutable more than once -LL | } - | - first borrow ends here +LL | drop((c1, c2)); + | -- borrow later used here error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir) - --> $DIR/borrowck-closures-two-mut.rs:35:24 + --> $DIR/borrowck-closures-two-mut.rs:36:24 | LL | let c1 = to_fn_mut(|| set(&mut x)); | -- - previous borrow occurs due to use of `x` in closure @@ -100,11 +100,11 @@ LL | let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as muta | | | second mutable borrow occurs here LL | //~| ERROR cannot borrow `x` as mutable more than once -LL | } - | - first borrow ends here +LL | drop((c1, c2)); + | -- borrow later used here error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir) - --> $DIR/borrowck-closures-two-mut.rs:42:24 + --> $DIR/borrowck-closures-two-mut.rs:44:24 | LL | let c1 = to_fn_mut(|| x = 5); | -- - previous borrow occurs due to use of `x` in closure @@ -115,11 +115,11 @@ LL | let c2 = to_fn_mut(|| set(&mut x)); //~ ERROR cannot borrow `x` as muta | | | second mutable borrow occurs here LL | //~| ERROR cannot borrow `x` as mutable more than once -LL | } - | - first borrow ends here +LL | drop((c1, c2)); + | -- borrow later used here error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir) - --> $DIR/borrowck-closures-two-mut.rs:49:24 + --> $DIR/borrowck-closures-two-mut.rs:52:24 | LL | let c1 = to_fn_mut(|| x = 5); | -- - previous borrow occurs due to use of `x` in closure @@ -130,11 +130,11 @@ LL | let c2 = to_fn_mut(|| { let _y = to_fn_mut(|| set(&mut x)); }); // (nes | | | second mutable borrow occurs here ... -LL | } - | - first borrow ends here +LL | drop((c1, c2)); + | -- borrow later used here error[E0499]: cannot borrow `x` as mutable more than once at a time (Mir) - --> $DIR/borrowck-closures-two-mut.rs:61:24 + --> $DIR/borrowck-closures-two-mut.rs:65:24 | LL | let c1 = to_fn_mut(|| set(&mut *x.f)); | -- - previous borrow occurs due to use of `x` in closure @@ -145,8 +145,8 @@ LL | let c2 = to_fn_mut(|| set(&mut *x.f)); | | | second mutable borrow occurs here ... -LL | } - | - first borrow ends here +LL | drop((c1, c2)); + | -- borrow later used here error: aborting due to 10 previous errors diff --git a/src/test/ui/borrowck/two-phase-method-receivers.rs b/src/test/ui/borrowck/two-phase-method-receivers.rs index e690263a916f3..6d7ed61bdd8b5 100644 --- a/src/test/ui/borrowck/two-phase-method-receivers.rs +++ b/src/test/ui/borrowck/two-phase-method-receivers.rs @@ -8,9 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// revisions: lxl nll -//[lxl]compile-flags: -Z borrowck=mir -Z two-phase-borrows -//[nll]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +// compile-flags: -Z borrowck=mir -Z two-phase-borrows // run-pass diff --git a/src/test/ui/borrowck/two-phase-multiple-activations.rs b/src/test/ui/borrowck/two-phase-multiple-activations.rs index e1ed41bfb2c64..9ea9696511b71 100644 --- a/src/test/ui/borrowck/two-phase-multiple-activations.rs +++ b/src/test/ui/borrowck/two-phase-multiple-activations.rs @@ -8,9 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// revisions: lxl nll -//[lxl]compile-flags: -Z borrowck=mir -Z two-phase-borrows -//[nll]compile-flags: -Z borrowck=mir -Z two-phase-borrows -Z nll +// compile-flags: -Z borrowck=mir -Z two-phase-borrows // run-pass diff --git a/src/test/ui/issue-45697-1.rs b/src/test/ui/issue-45697-1.rs index 7734b14b2ab7b..b8be209833a6e 100644 --- a/src/test/ui/issue-45697-1.rs +++ b/src/test/ui/issue-45697-1.rs @@ -30,6 +30,7 @@ fn main() { *y.pointer += 1; //~^ ERROR cannot assign to `*y.pointer` because it is borrowed (Ast) [E0506] //~| ERROR cannot use `*y.pointer` because it was mutably borrowed (Mir) [E0503] + //~| ERROR cannot assign to `*y.pointer` because it is borrowed (Mir) [E0506] *z.pointer += 1; } } diff --git a/src/test/ui/issue-45697-1.stderr b/src/test/ui/issue-45697-1.stderr index aa899c5aee9eb..cf108691a0e4f 100644 --- a/src/test/ui/issue-45697-1.stderr +++ b/src/test/ui/issue-45697-1.stderr @@ -13,8 +13,22 @@ LL | let z = copy_borrowed_ptr(&mut y); | ------ borrow of `y` occurs here LL | *y.pointer += 1; | ^^^^^^^^^^^^^^^ use of borrowed `y` +... +LL | *z.pointer += 1; + | --------------- borrow later used here -error: aborting due to 2 previous errors +error[E0506]: cannot assign to `*y.pointer` because it is borrowed (Mir) + --> $DIR/issue-45697-1.rs:30:9 + | +LL | let z = copy_borrowed_ptr(&mut y); + | ------ borrow of `*y.pointer` occurs here +LL | *y.pointer += 1; + | ^^^^^^^^^^^^^^^ assignment to borrowed `*y.pointer` occurs here +... +LL | *z.pointer += 1; + | --------------- borrow later used here + +error: aborting due to 3 previous errors Some errors occurred: E0503, E0506. For more information about an error, try `rustc --explain E0503`. diff --git a/src/test/ui/issue-45697.rs b/src/test/ui/issue-45697.rs index 4e93eccd6f649..27acc2c89f75d 100644 --- a/src/test/ui/issue-45697.rs +++ b/src/test/ui/issue-45697.rs @@ -30,6 +30,7 @@ fn main() { *y.pointer += 1; //~^ ERROR cannot assign to `*y.pointer` because it is borrowed (Ast) [E0506] //~| ERROR cannot use `*y.pointer` because it was mutably borrowed (Mir) [E0503] + //~| ERROR cannot assign to `*y.pointer` because it is borrowed (Mir) [E0506] *z.pointer += 1; } } diff --git a/src/test/ui/issue-45697.stderr b/src/test/ui/issue-45697.stderr index babfc33b94582..a85972fcd7a1c 100644 --- a/src/test/ui/issue-45697.stderr +++ b/src/test/ui/issue-45697.stderr @@ -13,8 +13,22 @@ LL | let z = copy_borrowed_ptr(&mut y); | ------ borrow of `y` occurs here LL | *y.pointer += 1; | ^^^^^^^^^^^^^^^ use of borrowed `y` +... +LL | *z.pointer += 1; + | --------------- borrow later used here -error: aborting due to 2 previous errors +error[E0506]: cannot assign to `*y.pointer` because it is borrowed (Mir) + --> $DIR/issue-45697.rs:30:9 + | +LL | let z = copy_borrowed_ptr(&mut y); + | ------ borrow of `*y.pointer` occurs here +LL | *y.pointer += 1; + | ^^^^^^^^^^^^^^^ assignment to borrowed `*y.pointer` occurs here +... +LL | *z.pointer += 1; + | --------------- borrow later used here + +error: aborting due to 3 previous errors Some errors occurred: E0503, E0506. For more information about an error, try `rustc --explain E0503`. diff --git a/src/test/ui/issue-46471-1.stderr b/src/test/ui/issue-46471-1.stderr index bfd5bfa9f7274..0108056bc7278 100644 --- a/src/test/ui/issue-46471-1.stderr +++ b/src/test/ui/issue-46471-1.stderr @@ -12,13 +12,16 @@ LL | } error[E0597]: `z` does not live long enough (Mir) --> $DIR/issue-46471-1.rs:16:9 | -LL | &mut z - | ^^^^^^ borrowed value does not live long enough -LL | }; - | - `z` dropped here while still borrowed -... -LL | } - | - borrowed value needs to live until here +LL | let y = { + | _____________- +LL | | let mut z = 0; +LL | | &mut z + | | ^^^^^^ borrowed value does not live long enough +LL | | }; + | | - + | | | + | |_____borrowed value only lives until here + | borrow later used here error: aborting due to 2 previous errors diff --git a/src/test/ui/nll/closure-requirements/escape-argument-callee.rs b/src/test/ui/nll/closure-requirements/escape-argument-callee.rs index 41c744fec6e76..1e168028c7c9a 100644 --- a/src/test/ui/nll/closure-requirements/escape-argument-callee.rs +++ b/src/test/ui/nll/closure-requirements/escape-argument-callee.rs @@ -22,7 +22,7 @@ // that appear free in its type (hence, we see it before the closure's // "external requirements" report). -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -35,7 +35,7 @@ fn test() { let y = 22; let mut closure = expect_sig(|p, y| *p = y); //~^ ERROR does not outlive free region - //~| WARNING not reporting region error due to -Znll + //~| WARNING not reporting region error due to nll closure(&mut p, &y); } diff --git a/src/test/ui/nll/closure-requirements/escape-argument-callee.stderr b/src/test/ui/nll/closure-requirements/escape-argument-callee.stderr index 5f84001a8fb99..d876c751a41d2 100644 --- a/src/test/ui/nll/closure-requirements/escape-argument-callee.stderr +++ b/src/test/ui/nll/closure-requirements/escape-argument-callee.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/escape-argument-callee.rs:36:50 | LL | let mut closure = expect_sig(|p, y| *p = y); diff --git a/src/test/ui/nll/closure-requirements/escape-argument.rs b/src/test/ui/nll/closure-requirements/escape-argument.rs index 7e918c6431de4..7a28cb26f3570 100644 --- a/src/test/ui/nll/closure-requirements/escape-argument.rs +++ b/src/test/ui/nll/closure-requirements/escape-argument.rs @@ -22,7 +22,7 @@ // basically checking that the MIR type checker correctly enforces the // closure signature. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] diff --git a/src/test/ui/nll/closure-requirements/escape-upvar-nested.rs b/src/test/ui/nll/closure-requirements/escape-upvar-nested.rs index 05700ae00ad4f..598839f872e01 100644 --- a/src/test/ui/nll/closure-requirements/escape-upvar-nested.rs +++ b/src/test/ui/nll/closure-requirements/escape-upvar-nested.rs @@ -15,7 +15,7 @@ // // except that the closure does so via a second closure. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] diff --git a/src/test/ui/nll/closure-requirements/escape-upvar-ref.rs b/src/test/ui/nll/closure-requirements/escape-upvar-ref.rs index 93d8bfafcbaa4..49d31bbc139d7 100644 --- a/src/test/ui/nll/closure-requirements/escape-upvar-ref.rs +++ b/src/test/ui/nll/closure-requirements/escape-upvar-ref.rs @@ -19,7 +19,7 @@ // `'b`. This relationship is propagated to the closure creator, // which reports an error. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs b/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs index 30a6dfc5b3edd..e7ec0b9684d2c 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.rs @@ -11,7 +11,7 @@ // Test where we fail to approximate due to demanding a postdom // relationship between our upper bounds. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -53,7 +53,7 @@ fn supply<'a, 'b, 'c>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>, cell_c: Cell |_outlives1, _outlives2, _outlives3, x, y| { // Only works if 'x: 'y: let p = x.get(); - //~^ WARN not reporting region error due to -Znll + //~^ WARN not reporting region error due to nll //~| ERROR does not outlive free region demand_y(x, y, p) }, diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr b/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr index 0c058e40a5086..ef5a31e40d445 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-fail-no-postdom.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-approximated-fail-no-postdom.rs:55:21 | LL | let p = x.get(); @@ -16,7 +16,7 @@ note: No external requirements LL | / |_outlives1, _outlives2, _outlives3, x, y| { LL | | // Only works if 'x: 'y: LL | | let p = x.get(); -LL | | //~^ WARN not reporting region error due to -Znll +LL | | //~^ WARN not reporting region error due to nll LL | | //~| ERROR does not outlive free region LL | | demand_y(x, y, p) LL | | }, diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-ref.rs b/src/test/ui/nll/closure-requirements/propagate-approximated-ref.rs index 91128035f3d95..da8ce55162f37 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-ref.rs +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-ref.rs @@ -22,7 +22,7 @@ // Note: the use of `Cell` here is to introduce invariance. One less // variable. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -54,7 +54,7 @@ fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { //~^ ERROR lifetime mismatch // Only works if 'x: 'y: - demand_y(x, y, x.get()) //~ WARNING not reporting region error due to -Znll + demand_y(x, y, x.get()) //~ WARNING not reporting region error due to nll }); } diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-ref.stderr b/src/test/ui/nll/closure-requirements/propagate-approximated-ref.stderr index 947b95b1c5321..3a3236fd16c49 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-ref.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-ref.stderr @@ -1,7 +1,7 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-approximated-ref.rs:57:9 | -LL | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to -Znll +LL | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to nll | ^^^^^^^^^^^^^^^^^^^^^^^ note: External requirements @@ -12,7 +12,7 @@ LL | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, LL | | //~^ ERROR lifetime mismatch LL | | LL | | // Only works if 'x: 'y: -LL | | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to -Znll +LL | | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to nll LL | | }); | |_____^ | diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs index f210346a82a67..84bfd6ea4f253 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.rs @@ -12,7 +12,7 @@ // where `'x` is bound in closure type but `'a` is free. This forces // us to approximate `'x` one way or the other. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -29,7 +29,7 @@ fn case1() { let a = 0; let cell = Cell::new(&a); foo(cell, |cell_a, cell_x| { - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll cell_a.set(cell_x.get()); // forces 'x: 'a, error in closure //~^ ERROR does not outlive free region }) diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr index d39cdc34471ab..6480cbe443127 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-approximated-shorter-to-static-comparing-against-free.rs:31:5 | LL | foo(cell, |cell_a, cell_x| { @@ -15,7 +15,7 @@ note: No external requirements | LL | foo(cell, |cell_a, cell_x| { | _______________^ -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | cell_a.set(cell_x.get()); // forces 'x: 'a, error in closure LL | | //~^ ERROR does not outlive free region LL | | }) diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs index c66472d5ce9b1..df715c52921a0 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.rs @@ -16,7 +16,7 @@ // FIXME(#45827) Because of shortcomings in the MIR type checker, // these errors are not (yet) reported. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -46,7 +46,7 @@ fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { //~^ ERROR does not outlive free region // Only works if 'x: 'y: - demand_y(x, y, x.get()) //~ WARNING not reporting region error due to -Znll + demand_y(x, y, x.get()) //~ WARNING not reporting region error due to nll }); } diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr index 3131142ec73bf..6dcc8421177d9 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-no-bound.stderr @@ -1,7 +1,7 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-approximated-shorter-to-static-no-bound.rs:49:9 | -LL | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to -Znll +LL | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to nll | ^^^^^^^^^^^^^^^^^^^^^^^ note: External requirements @@ -12,7 +12,7 @@ LL | establish_relationships(&cell_a, &cell_b, |_outlives, x, y| { LL | | //~^ ERROR does not outlive free region LL | | LL | | // Only works if 'x: 'y: -LL | | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to -Znll +LL | | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to nll LL | | }); | |_____^ | @@ -31,7 +31,7 @@ LL | establish_relationships(&cell_a, &cell_b, |_outlives, x, y| { LL | | //~^ ERROR does not outlive free region LL | | LL | | // Only works if 'x: 'y: -LL | | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to -Znll +LL | | demand_y(x, y, x.get()) //~ WARNING not reporting region error due to nll LL | | }); | |_____^ diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs index f4011a0e5335e..fdbb312572f89 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.rs @@ -17,7 +17,7 @@ // FIXME(#45827) Because of shortcomings in the MIR type checker, // these errors are not (yet) reported. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -49,7 +49,7 @@ fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { //~^ ERROR does not outlive free region // Only works if 'x: 'y: demand_y(x, y, x.get()) - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll }); } diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr index 5b038653b6068..1291f2e9901b0 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-wrong-bound.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-approximated-shorter-to-static-wrong-bound.rs:51:9 | LL | demand_y(x, y, x.get()) @@ -12,7 +12,7 @@ LL | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, LL | | //~^ ERROR does not outlive free region LL | | // Only works if 'x: 'y: LL | | demand_y(x, y, x.get()) -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | }); | |_____^ | @@ -31,7 +31,7 @@ LL | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, LL | | //~^ ERROR does not outlive free region LL | | // Only works if 'x: 'y: LL | | demand_y(x, y, x.get()) -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | }); | |_____^ diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-val.rs b/src/test/ui/nll/closure-requirements/propagate-approximated-val.rs index d163f304ae5b1..0449dc1d1a75c 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-val.rs +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-val.rs @@ -15,7 +15,7 @@ // relationships. In the 'main' variant, there are a number of // anonymous regions as well. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -47,7 +47,7 @@ fn test<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { //~^ ERROR lifetime mismatch // Only works if 'x: 'y: - demand_y(outlives1, outlives2, x.get()) //~ WARNING not reporting region error due to -Znll + demand_y(outlives1, outlives2, x.get()) //~ WARNING not reporting region error due to nll }); } diff --git a/src/test/ui/nll/closure-requirements/propagate-approximated-val.stderr b/src/test/ui/nll/closure-requirements/propagate-approximated-val.stderr index 475fdd947817e..d1824a9415102 100644 --- a/src/test/ui/nll/closure-requirements/propagate-approximated-val.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-approximated-val.stderr @@ -1,7 +1,7 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-approximated-val.rs:50:9 | -LL | demand_y(outlives1, outlives2, x.get()) //~ WARNING not reporting region error due to -Znll +LL | demand_y(outlives1, outlives2, x.get()) //~ WARNING not reporting region error due to nll | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ note: External requirements @@ -12,7 +12,7 @@ LL | establish_relationships(cell_a, cell_b, |outlives1, outlives2, x, y| LL | | //~^ ERROR lifetime mismatch LL | | LL | | // Only works if 'x: 'y: -LL | | demand_y(outlives1, outlives2, x.get()) //~ WARNING not reporting region error due to -Znll +LL | | demand_y(outlives1, outlives2, x.get()) //~ WARNING not reporting region error due to nll LL | | }); | |_____^ | diff --git a/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.rs b/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.rs index 1ccfa61f4ce46..c21c824b22c3b 100644 --- a/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.rs +++ b/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.rs @@ -13,7 +13,7 @@ // need to propagate; but in fact we do because identity of free // regions is erased. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose // compile-pass #![feature(rustc_attrs)] diff --git a/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr b/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr index ab4faaca75633..d6eeda881daf2 100644 --- a/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-despite-same-free-region.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-despite-same-free-region.rs:54:21 | LL | let p = x.get(); diff --git a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs b/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs index eb512a3b9b1fb..7699d10173495 100644 --- a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs +++ b/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.rs @@ -17,7 +17,7 @@ // as it knows of no relationships between `'x` and any // non-higher-ranked regions. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -45,7 +45,7 @@ fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { establish_relationships(&cell_a, &cell_b, |_outlives, x, y| { // Only works if 'x: 'y: demand_y(x, y, x.get()) - //~^ WARN not reporting region error due to -Znll + //~^ WARN not reporting region error due to nll //~| ERROR does not outlive free region }); } diff --git a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr b/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr index ce808f56b4297..ffae47bd081c3 100644 --- a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-no-bounds.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-fail-to-approximate-longer-no-bounds.rs:47:9 | LL | demand_y(x, y, x.get()) @@ -17,7 +17,7 @@ LL | establish_relationships(&cell_a, &cell_b, |_outlives, x, y| { | _______________________________________________^ LL | | // Only works if 'x: 'y: LL | | demand_y(x, y, x.get()) -LL | | //~^ WARN not reporting region error due to -Znll +LL | | //~^ WARN not reporting region error due to nll LL | | //~| ERROR does not outlive free region LL | | }); | |_____^ diff --git a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs b/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs index 9307424642972..afb61b221be94 100644 --- a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs +++ b/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.rs @@ -17,7 +17,7 @@ // as it only knows of regions that `'x` is outlived by, and none that // `'x` outlives. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] @@ -49,7 +49,7 @@ fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| { // Only works if 'x: 'y: demand_y(x, y, x.get()) - //~^ WARN not reporting region error due to -Znll + //~^ WARN not reporting region error due to nll //~| ERROR does not outlive free region }); } diff --git a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr b/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr index 547ff75bac62c..01af756b8332c 100644 --- a/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-fail-to-approximate-longer-wrong-bounds.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-fail-to-approximate-longer-wrong-bounds.rs:51:9 | LL | demand_y(x, y, x.get()) @@ -17,7 +17,7 @@ LL | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, | _______________________________________________^ LL | | // Only works if 'x: 'y: LL | | demand_y(x, y, x.get()) -LL | | //~^ WARN not reporting region error due to -Znll +LL | | //~^ WARN not reporting region error due to nll LL | | //~| ERROR does not outlive free region LL | | }); | |_____^ diff --git a/src/test/ui/nll/closure-requirements/propagate-from-trait-match.rs b/src/test/ui/nll/closure-requirements/propagate-from-trait-match.rs index 91796355752a5..7baf24f88f8fa 100644 --- a/src/test/ui/nll/closure-requirements/propagate-from-trait-match.rs +++ b/src/test/ui/nll/closure-requirements/propagate-from-trait-match.rs @@ -14,7 +14,7 @@ // the same `'a` for which it implements `Trait`, which can only be the `'a` // from the function definition. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] #![allow(dead_code)] @@ -53,7 +53,7 @@ where // The latter does not hold. require(value); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll }); } diff --git a/src/test/ui/nll/closure-requirements/propagate-from-trait-match.stderr b/src/test/ui/nll/closure-requirements/propagate-from-trait-match.stderr index 5bdfc7e935fea..a8b4ed528015f 100644 --- a/src/test/ui/nll/closure-requirements/propagate-from-trait-match.stderr +++ b/src/test/ui/nll/closure-requirements/propagate-from-trait-match.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/propagate-from-trait-match.rs:55:9 | LL | require(value); @@ -13,7 +13,7 @@ LL | | //~^ ERROR the parameter type `T` may not live long enough LL | | LL | | // This function call requires that ... | -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | }); | |_____^ | @@ -35,7 +35,7 @@ LL | | //~^ ERROR the parameter type `T` may not live long enough LL | | LL | | // This function call requires that ... | -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | }); | |_____^ | diff --git a/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs b/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs index ac21fe25bd112..a6b2e531ac28f 100644 --- a/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs +++ b/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.rs @@ -13,11 +13,11 @@ // a variety of errors from the older, AST-based machinery (notably // borrowck), and then we get the NLL error at the end. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose fn foo(x: &u32) -> &'static u32 { &*x - //~^ WARN not reporting region error due to -Znll + //~^ WARN not reporting region error due to nll //~| ERROR explicit lifetime required in the type of `x` } diff --git a/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr b/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr index 1e93ae1ee07c6..a823e62d3b843 100644 --- a/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr +++ b/src/test/ui/nll/closure-requirements/region-lbr-anon-does-not-outlive-static.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/region-lbr-anon-does-not-outlive-static.rs:19:5 | LL | &*x diff --git a/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs b/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs index a1be8e8518515..dedbd8df41b13 100644 --- a/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs +++ b/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.rs @@ -13,11 +13,11 @@ // a variety of errors from the older, AST-based machinery (notably // borrowck), and then we get the NLL error at the end. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose fn foo<'a>(x: &'a u32) -> &'static u32 { &*x - //~^ WARN not reporting region error due to -Znll + //~^ WARN not reporting region error due to nll //~| ERROR does not outlive free region } diff --git a/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr b/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr index ac3bf4b459fec..9520b446303c3 100644 --- a/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr +++ b/src/test/ui/nll/closure-requirements/region-lbr-named-does-not-outlive-static.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/region-lbr-named-does-not-outlive-static.rs:19:5 | LL | &*x diff --git a/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs b/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs index 00b09e2ab21ad..8598668bef50e 100644 --- a/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs +++ b/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.rs @@ -13,11 +13,11 @@ // a variety of errors from the older, AST-based machinery (notably // borrowck), and then we get the NLL error at the end. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose fn foo<'a, 'b>(x: &'a u32, y: &'b u32) -> &'b u32 { &*x - //~^ WARN not reporting region error due to -Znll + //~^ WARN not reporting region error due to nll //~| ERROR lifetime mismatch } diff --git a/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr b/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr index 3af6d7d21f753..415aefdeee947 100644 --- a/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr +++ b/src/test/ui/nll/closure-requirements/region-lbr1-does-not-outlive-ebr2.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/region-lbr1-does-not-outlive-ebr2.rs:19:5 | LL | &*x diff --git a/src/test/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs b/src/test/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs index 7454a8e71f270..6d2bb30980236 100644 --- a/src/test/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs +++ b/src/test/ui/nll/closure-requirements/region-lbr1-does-outlive-lbr2-because-implied-bound.rs @@ -11,7 +11,7 @@ // Basic test for free regions in the NLL code. This test does not // report an error because of the (implied) bound that `'b: 'a`. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose // compile-pass #![allow(warnings)] diff --git a/src/test/ui/nll/closure-requirements/return-wrong-bound-region.rs b/src/test/ui/nll/closure-requirements/return-wrong-bound-region.rs index 754df4f2c5db6..60f82ca0eefb9 100644 --- a/src/test/ui/nll/closure-requirements/return-wrong-bound-region.rs +++ b/src/test/ui/nll/closure-requirements/return-wrong-bound-region.rs @@ -12,14 +12,14 @@ // the first, but actually returns the second. This should fail within // the closure. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![feature(rustc_attrs)] #[rustc_regions] fn test() { expect_sig(|a, b| b); // ought to return `a` - //~^ WARN not reporting region error due to -Znll + //~^ WARN not reporting region error due to nll //~| ERROR does not outlive free region } diff --git a/src/test/ui/nll/closure-requirements/return-wrong-bound-region.stderr b/src/test/ui/nll/closure-requirements/return-wrong-bound-region.stderr index b34f4c470df49..4d021fb545494 100644 --- a/src/test/ui/nll/closure-requirements/return-wrong-bound-region.stderr +++ b/src/test/ui/nll/closure-requirements/return-wrong-bound-region.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/return-wrong-bound-region.rs:21:23 | LL | expect_sig(|a, b| b); // ought to return `a` @@ -26,7 +26,7 @@ note: No external requirements | LL | / fn test() { LL | | expect_sig(|a, b| b); // ought to return `a` -LL | | //~^ WARN not reporting region error due to -Znll +LL | | //~^ WARN not reporting region error due to nll LL | | //~| ERROR does not outlive free region LL | | } | |_^ diff --git a/src/test/ui/nll/constant.rs b/src/test/ui/nll/constant.rs index 589d8ffd28f0b..10ce0652d43c2 100644 --- a/src/test/ui/nll/constant.rs +++ b/src/test/ui/nll/constant.rs @@ -11,7 +11,7 @@ // Test that MIR borrowck and NLL analysis can handle constants of // arbitrary types without ICEs. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose // compile-pass const HI: &str = "hi"; diff --git a/src/test/ui/nll/drop-may-dangle.rs b/src/test/ui/nll/drop-may-dangle.rs index 6dcbe0a528d90..b357b3facf9bb 100644 --- a/src/test/ui/nll/drop-may-dangle.rs +++ b/src/test/ui/nll/drop-may-dangle.rs @@ -12,7 +12,7 @@ // in the type of `p` includes the points after `&v[0]` up to (but not // including) the call to `use_x`. The `else` branch is not included. -// compile-flags:-Znll -Zborrowck=mir +// compile-flags:-Zborrowck=mir // compile-pass #![allow(warnings)] diff --git a/src/test/ui/nll/drop-no-may-dangle.rs b/src/test/ui/nll/drop-no-may-dangle.rs index e5478e39fecca..513609316311a 100644 --- a/src/test/ui/nll/drop-no-may-dangle.rs +++ b/src/test/ui/nll/drop-no-may-dangle.rs @@ -13,7 +13,7 @@ // because of destructor. (Note that the stderr also identifies this // destructor in the error message.) -// compile-flags:-Znll -Zborrowck=mir +// compile-flags:-Zborrowck=mir #![allow(warnings)] #![feature(dropck_eyepatch)] diff --git a/src/test/ui/nll/get_default.rs b/src/test/ui/nll/get_default.rs index e5944e75e4241..728c84695eacf 100644 --- a/src/test/ui/nll/get_default.rs +++ b/src/test/ui/nll/get_default.rs @@ -13,7 +13,7 @@ // a variety of errors from the older, AST-based machinery (notably // borrowck), and then we get the NLL error at the end. -// compile-flags:-Znll -Zborrowck=compare +// compile-flags:-Zborrowck=compare struct Map { } diff --git a/src/test/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs b/src/test/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs index d4df2a01c8143..5538eca362974 100644 --- a/src/test/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs +++ b/src/test/ui/nll/maybe-initialized-drop-implicit-fragment-drop.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//compile-flags: -Z emit-end-regions -Zborrowck=mir -Znll +//compile-flags: -Z emit-end-regions -Zborrowck=mir #![allow(warnings)] diff --git a/src/test/ui/nll/maybe-initialized-drop-uninitialized.rs b/src/test/ui/nll/maybe-initialized-drop-uninitialized.rs index 7e8a4e0ec95fc..ae815a5efe97c 100644 --- a/src/test/ui/nll/maybe-initialized-drop-uninitialized.rs +++ b/src/test/ui/nll/maybe-initialized-drop-uninitialized.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//compile-flags: -Z emit-end-regions -Zborrowck=mir -Z nll +// compile-flags: -Z emit-end-regions -Zborrowck=mir // compile-pass #![allow(warnings)] diff --git a/src/test/ui/nll/maybe-initialized-drop-with-fragment.rs b/src/test/ui/nll/maybe-initialized-drop-with-fragment.rs index 2eb90dca7026e..00d146e0f02d6 100644 --- a/src/test/ui/nll/maybe-initialized-drop-with-fragment.rs +++ b/src/test/ui/nll/maybe-initialized-drop-with-fragment.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//compile-flags: -Z emit-end-regions -Zborrowck=mir -Znll +//compile-flags: -Z emit-end-regions -Zborrowck=mir #![allow(warnings)] diff --git a/src/test/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs b/src/test/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs index f639d8f243f14..cd46014a7f5ca 100644 --- a/src/test/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs +++ b/src/test/ui/nll/maybe-initialized-drop-with-uninitialized-fragments.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//compile-flags: -Z emit-end-regions -Zborrowck=mir -Znll +//compile-flags: -Z emit-end-regions -Zborrowck=mir #![allow(warnings)] diff --git a/src/test/ui/nll/maybe-initialized-drop.rs b/src/test/ui/nll/maybe-initialized-drop.rs index c2cc479d28e3e..9a3aca346208d 100644 --- a/src/test/ui/nll/maybe-initialized-drop.rs +++ b/src/test/ui/nll/maybe-initialized-drop.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//compile-flags: -Z emit-end-regions -Zborrowck=mir -Znll +//compile-flags: -Z emit-end-regions -Zborrowck=mir #![allow(warnings)] diff --git a/src/test/ui/nll/projection-return.rs b/src/test/ui/nll/projection-return.rs index 1515911fe870e..c1abcb434e68f 100644 --- a/src/test/ui/nll/projection-return.rs +++ b/src/test/ui/nll/projection-return.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir +// compile-flags:-Zborrowck=mir // compile-pass #![feature(rustc_attrs)] diff --git a/src/test/ui/nll/ty-outlives/impl-trait-captures.rs b/src/test/ui/nll/ty-outlives/impl-trait-captures.rs index 571bd9fd76e86..f21127064d4c2 100644 --- a/src/test/ui/nll/ty-outlives/impl-trait-captures.rs +++ b/src/test/ui/nll/ty-outlives/impl-trait-captures.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] @@ -19,7 +19,7 @@ impl<'a, T> Foo<'a> for T { } fn foo<'a, T>(x: &T) -> impl Foo<'a> { x - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR explicit lifetime required in the type of `x` [E0621] } diff --git a/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr b/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr index 92e4f72da3a10..f836960a28cf3 100644 --- a/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr +++ b/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/impl-trait-captures.rs:21:5 | LL | x diff --git a/src/test/ui/nll/ty-outlives/impl-trait-outlives.rs b/src/test/ui/nll/ty-outlives/impl-trait-outlives.rs index 2e0671f1a51e8..182e11da082f8 100644 --- a/src/test/ui/nll/ty-outlives/impl-trait-outlives.rs +++ b/src/test/ui/nll/ty-outlives/impl-trait-outlives.rs @@ -8,14 +8,14 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] use std::fmt::Debug; fn no_region<'a, T>(x: Box) -> impl Debug + 'a - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll where T: Debug, { @@ -31,7 +31,7 @@ where } fn wrong_region<'a, 'b, T>(x: Box) -> impl Debug + 'a - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll where T: 'b + Debug, { diff --git a/src/test/ui/nll/ty-outlives/impl-trait-outlives.stderr b/src/test/ui/nll/ty-outlives/impl-trait-outlives.stderr index 2b90d53774e65..50b80282e6241 100644 --- a/src/test/ui/nll/ty-outlives/impl-trait-outlives.stderr +++ b/src/test/ui/nll/ty-outlives/impl-trait-outlives.stderr @@ -1,10 +1,10 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/impl-trait-outlives.rs:17:35 | LL | fn no_region<'a, T>(x: Box) -> impl Debug + 'a | ^^^^^^^^^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/impl-trait-outlives.rs:33:42 | LL | fn wrong_region<'a, 'b, T>(x: Box) -> impl Debug + 'a diff --git a/src/test/ui/nll/ty-outlives/projection-implied-bounds.rs b/src/test/ui/nll/ty-outlives/projection-implied-bounds.rs index 0ec6d7b74ad5a..d8f077467d9fc 100644 --- a/src/test/ui/nll/ty-outlives/projection-implied-bounds.rs +++ b/src/test/ui/nll/ty-outlives/projection-implied-bounds.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose // Test that we can deduce when projections like `T::Item` outlive the // function body. Test that this does not imply that `T: 'a` holds. @@ -43,7 +43,7 @@ where #[rustc_errors] fn generic2(value: T) { twice(value, |value_ref, item| invoke2(value_ref, item)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR the parameter type `T` may not live long enough } diff --git a/src/test/ui/nll/ty-outlives/projection-implied-bounds.stderr b/src/test/ui/nll/ty-outlives/projection-implied-bounds.stderr index fa53967ed3aca..0a2bd3247655a 100644 --- a/src/test/ui/nll/ty-outlives/projection-implied-bounds.stderr +++ b/src/test/ui/nll/ty-outlives/projection-implied-bounds.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-implied-bounds.rs:45:36 | LL | twice(value, |value_ref, item| invoke2(value_ref, item)); diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-closure.rs b/src/test/ui/nll/ty-outlives/projection-no-regions-closure.rs index 0493bd1ea0d9c..7b3ed6a94fcbb 100644 --- a/src/test/ui/nll/ty-outlives/projection-no-regions-closure.rs +++ b/src/test/ui/nll/ty-outlives/projection-no-regions-closure.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose // Tests closures that propagate an outlives relationship to their // creator where the subject is a projection with no regions (`::Item` may not live long enough } @@ -52,7 +52,7 @@ where T: 'b + Iterator, { with_signature(x, |mut y| Box::new(y.next())) - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR the associated type `::Item` may not live long enough } diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr b/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr index bcdf984f65a8a..0efbbdff12a3f 100644 --- a/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr +++ b/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr @@ -1,10 +1,10 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-no-regions-closure.rs:36:31 | LL | with_signature(x, |mut y| Box::new(y.next())) | ^^^^^^^^^^^^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-no-regions-closure.rs:54:31 | LL | with_signature(x, |mut y| Box::new(y.next())) diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-fn.rs b/src/test/ui/nll/ty-outlives/projection-no-regions-fn.rs index 5f2e84e247a3c..32b73a51e11a5 100644 --- a/src/test/ui/nll/ty-outlives/projection-no-regions-fn.rs +++ b/src/test/ui/nll/ty-outlives/projection-no-regions-fn.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] #![feature(dyn_trait)] @@ -22,7 +22,7 @@ where T: Iterator, { Box::new(x.next()) - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| the associated type `::Item` may not live long enough } @@ -38,7 +38,7 @@ where T: 'b + Iterator, { Box::new(x.next()) - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| the associated type `::Item` may not live long enough } diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-fn.stderr b/src/test/ui/nll/ty-outlives/projection-no-regions-fn.stderr index 95851e7edc70c..b2c5f28268db8 100644 --- a/src/test/ui/nll/ty-outlives/projection-no-regions-fn.stderr +++ b/src/test/ui/nll/ty-outlives/projection-no-regions-fn.stderr @@ -1,10 +1,10 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-no-regions-fn.rs:24:5 | LL | Box::new(x.next()) | ^^^^^^^^^^^^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-no-regions-fn.rs:40:5 | LL | Box::new(x.next()) diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-closure.rs b/src/test/ui/nll/ty-outlives/projection-one-region-closure.rs index 9a5e04deddfc9..cfe2880bfed47 100644 --- a/src/test/ui/nll/ty-outlives/projection-one-region-closure.rs +++ b/src/test/ui/nll/ty-outlives/projection-one-region-closure.rs @@ -22,7 +22,7 @@ // // Ensuring that both `T: 'a` and `'b: 'a` holds does work (`elements_outlive`). -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] #![feature(dyn_trait)] @@ -54,7 +54,7 @@ where T: Anything<'b>, { with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR the parameter type `T` may not live long enough //~| ERROR does not outlive free region } @@ -66,7 +66,7 @@ where 'a: 'a, { with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR the parameter type `T` may not live long enough //~| ERROR does not outlive free region } @@ -88,7 +88,7 @@ where // can do better here with a more involved verification step. with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR the parameter type `T` may not live long enough //~| ERROR free region `ReEarlyBound(1, 'b)` does not outlive free region `ReEarlyBound(0, 'a)` } diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-closure.stderr b/src/test/ui/nll/ty-outlives/projection-one-region-closure.stderr index aa45cf1870106..0d5a2dc7c5598 100644 --- a/src/test/ui/nll/ty-outlives/projection-one-region-closure.stderr +++ b/src/test/ui/nll/ty-outlives/projection-one-region-closure.stderr @@ -1,16 +1,16 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-one-region-closure.rs:56:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); | ^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-one-region-closure.rs:68:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); | ^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-one-region-closure.rs:90:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs b/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs index 232025b57355c..16e91f2708fe9 100644 --- a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs +++ b/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.rs @@ -14,7 +14,7 @@ // case, the best way to satisfy the trait bound is to show that `'b: // 'a`, which can be done in various ways. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] #![feature(dyn_trait)] @@ -46,7 +46,7 @@ where T: Anything<'b>, { with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR does not outlive free region } @@ -57,7 +57,7 @@ where 'a: 'a, { with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR does not outlive free region } @@ -78,7 +78,7 @@ where // can do better here with a more involved verification step. with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR does not outlive free region } diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr b/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr index 7a8010ad8e0ea..d4aca8380b469 100644 --- a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr +++ b/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-closure.stderr @@ -1,16 +1,16 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-one-region-trait-bound-closure.rs:48:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); | ^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-one-region-trait-bound-closure.rs:59:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); | ^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-one-region-trait-bound-closure.rs:80:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); diff --git a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs b/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs index a1bdd1b89f9a9..0d42636c844a5 100644 --- a/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs +++ b/src/test/ui/nll/ty-outlives/projection-one-region-trait-bound-static-closure.rs @@ -12,7 +12,7 @@ // outlive `'static`. In this case, we don't get any errors, and in fact // we don't even propagate constraints from the closures to the callers. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose // compile-pass #![allow(warnings)] diff --git a/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs b/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs index e3cee00ed4eb3..7c8ef140a2907 100644 --- a/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs +++ b/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.rs @@ -15,7 +15,7 @@ // the trait bound, and hence we propagate it to the caller as a type // test. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] #![feature(dyn_trait)] @@ -47,7 +47,7 @@ where T: Anything<'b, 'c>, { with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR associated type `>::AssocType` may not live long enough } @@ -58,7 +58,7 @@ where 'a: 'a, { with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR associated type `>::AssocType` may not live long enough } @@ -79,7 +79,7 @@ where // can do better here with a more involved verification step. with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR associated type `>::AssocType` may not live long enough } @@ -107,7 +107,7 @@ where T: Anything<'b, 'b>, { with_signature(cell, t, |cell, t| require(cell, t)); - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR does not outlive free region } diff --git a/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr b/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr index c7cbdaec3395c..7e36e467e4eba 100644 --- a/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr +++ b/src/test/ui/nll/ty-outlives/projection-two-region-trait-bound-closure.stderr @@ -1,22 +1,22 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-two-region-trait-bound-closure.rs:49:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); | ^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-two-region-trait-bound-closure.rs:60:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); | ^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-two-region-trait-bound-closure.rs:81:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); | ^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/projection-two-region-trait-bound-closure.rs:109:39 | LL | with_signature(cell, t, |cell, t| require(cell, t)); diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs b/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs index 423747a6bd6cb..80b42c29563f1 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs +++ b/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] #![feature(dyn_trait)] diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr b/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr index 997cc57cfa28c..c8feaddff9382 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr +++ b/src/test/ui/nll/ty-outlives/ty-param-closure-approximate-lower-bound.stderr @@ -1,16 +1,16 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-closure-approximate-lower-bound.rs:35:31 | LL | twice(cell, value, |a, b| invoke(a, b)); | ^^^^^^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-closure-approximate-lower-bound.rs:43:31 | LL | twice(cell, value, |a, b| invoke(a, b)); | ^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-closure-approximate-lower-bound.rs:43:31 | LL | twice(cell, value, |a, b| invoke(a, b)); diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs index 95a483b3c355d..50763a1d50808 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs +++ b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] #![feature(dyn_trait)] @@ -35,7 +35,7 @@ where // `'a` (and subsequently reports an error). with_signature(x, |y| y) - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR the parameter type `T` may not live long enough } @@ -51,7 +51,7 @@ where T: 'b + Debug, { x - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR the parameter type `T` may not live long enough } diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr index ba08bc1ff7b43..500595e0c5dca 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr +++ b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr @@ -1,10 +1,10 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-closure-outlives-from-return-type.rs:37:27 | LL | with_signature(x, |y| y) | ^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-closure-outlives-from-return-type.rs:53:5 | LL | x diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs index 1149f250a46e2..b70fc2b2ec4b4 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs +++ b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.rs @@ -12,7 +12,7 @@ // `correct_region` for an explanation of how this test is setup; it's // somewhat intricate. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose #![allow(warnings)] #![feature(dyn_trait)] @@ -43,7 +43,7 @@ fn no_region<'a, T>(a: Cell<&'a ()>, b: T) { // function, there is no where clause *anywhere*, and hence we // get an error (but reported by the closure creator). require(&x, &y) - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll }) } @@ -77,7 +77,7 @@ where //~^ ERROR the parameter type `T` may not live long enough // See `correct_region` require(&x, &y) - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll }) } diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr index fcdb0b0a4a9fe..4d8a66ba8e1c4 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr +++ b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-where-clause.stderr @@ -1,10 +1,10 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-closure-outlives-from-where-clause.rs:45:9 | LL | require(&x, &y) | ^^^^^^^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-closure-outlives-from-where-clause.rs:79:9 | LL | require(&x, &y) @@ -19,7 +19,7 @@ LL | | //~^ ERROR the parameter type `T` may not live long enough LL | | // LL | | // See `correct_region`, which explains the point of this ... | -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | }) | |_____^ | @@ -40,7 +40,7 @@ LL | | //~^ ERROR the parameter type `T` may not live long enough LL | | // LL | | // See `correct_region`, which explains the point of this ... | -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | }) | |_____^ | @@ -109,7 +109,7 @@ LL | with_signature(a, b, |x, y| { LL | | //~^ ERROR the parameter type `T` may not live long enough LL | | // See `correct_region` LL | | require(&x, &y) -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | }) | |_____^ | @@ -130,7 +130,7 @@ LL | with_signature(a, b, |x, y| { LL | | //~^ ERROR the parameter type `T` may not live long enough LL | | // See `correct_region` LL | | require(&x, &y) -LL | | //~^ WARNING not reporting region error due to -Znll +LL | | //~^ WARNING not reporting region error due to nll LL | | }) | |_____^ | diff --git a/src/test/ui/nll/ty-outlives/ty-param-fn-body.rs b/src/test/ui/nll/ty-outlives/ty-param-fn-body.rs index e66c1853b64b9..fb4ea63f8532c 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-fn-body.rs +++ b/src/test/ui/nll/ty-outlives/ty-param-fn-body.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir +// compile-flags:-Zborrowck=mir // Test that we assume that universal types like `T` outlive the // function body. @@ -28,7 +28,7 @@ fn region_within_body(t: T) { // Error here, because T: 'a is not satisfied. fn region_static<'a, T>(cell: Cell<&'a usize>, t: T) { outlives(cell, t) - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| ERROR the parameter type `T` may not live long enough } diff --git a/src/test/ui/nll/ty-outlives/ty-param-fn-body.stderr b/src/test/ui/nll/ty-outlives/ty-param-fn-body.stderr index 34ed709a2730e..0596861e67b57 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-fn-body.stderr +++ b/src/test/ui/nll/ty-outlives/ty-param-fn-body.stderr @@ -1,4 +1,4 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-fn-body.rs:30:5 | LL | outlives(cell, t) diff --git a/src/test/ui/nll/ty-outlives/ty-param-fn.rs b/src/test/ui/nll/ty-outlives/ty-param-fn.rs index aa3a03afa35cd..42d662e14193c 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-fn.rs +++ b/src/test/ui/nll/ty-outlives/ty-param-fn.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir +// compile-flags:-Zborrowck=mir #![allow(warnings)] #![feature(dyn_trait)] @@ -20,7 +20,7 @@ where T: Debug, { x - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| the parameter type `T` may not live long enough } @@ -36,7 +36,7 @@ where T: 'b + Debug, { x - //~^ WARNING not reporting region error due to -Znll + //~^ WARNING not reporting region error due to nll //~| the parameter type `T` may not live long enough } diff --git a/src/test/ui/nll/ty-outlives/ty-param-fn.stderr b/src/test/ui/nll/ty-outlives/ty-param-fn.stderr index 98ccfc52029ff..0d09cac8c3851 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-fn.stderr +++ b/src/test/ui/nll/ty-outlives/ty-param-fn.stderr @@ -1,10 +1,10 @@ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-fn.rs:22:5 | LL | x | ^ -warning: not reporting region error due to -Znll +warning: not reporting region error due to nll --> $DIR/ty-param-fn.rs:38:5 | LL | x diff --git a/src/test/ui/nll/ty-outlives/ty-param-implied-bounds.rs b/src/test/ui/nll/ty-outlives/ty-param-implied-bounds.rs index d4ae9b20e56ff..51927d353ecc4 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-implied-bounds.rs +++ b/src/test/ui/nll/ty-outlives/ty-param-implied-bounds.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// compile-flags:-Znll -Zborrowck=mir -Zverbose +// compile-flags:-Zborrowck=mir -Zverbose // compile-pass // Test that we assume that universal types like `T` outlive the diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index db0ac9279046c..f394a60ad9ffc 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -1686,7 +1686,7 @@ impl<'test> TestCx<'test> { match self.config.compare_mode { Some(CompareMode::Nll) => { - rustc.args(&["-Znll", "-Zborrowck=mir", "-Ztwo-phase-borrows"]); + rustc.args(&["-Zborrowck=mir", "-Ztwo-phase-borrows"]); }, None => {}, }