Skip to content

Commit ae3e8c6

Browse files
committedMay 7, 2025·
Auto merge of rust-lang#140751 - GuillaumeGomez:rollup-eahw4ta, r=GuillaumeGomez
Rollup of 8 pull requests Successful merges: - rust-lang#140234 (Separate dataflow analysis and results) - rust-lang#140614 (Correct warning message in restricted visibility) - rust-lang#140671 (Parser: Recover error from named params while parse_path) - rust-lang#140700 (Don't crash on error codes passed to `--explain` which exceed our internal limit of 9999 ) - rust-lang#140706 ([rustdoc] Ensure that temporary doctest folder is correctly removed even if doctests failed) - rust-lang#140734 (Fix regression from rust-lang#140393 for espidf / horizon / nuttx / vita) - rust-lang#140741 (add armv5te-unknown-linux-gnueabi target maintainer) - rust-lang#140745 (run-make-support: set rustc dylib path for cargo wrapper) r? `@ghost` `@rustbot` modify labels: rollup
2 parents e9f8103 + 5e5043d commit ae3e8c6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+643
-292
lines changed
 

‎compiler/rustc_borrowck/src/lib.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ use rustc_mir_dataflow::impls::{
4747
use rustc_mir_dataflow::move_paths::{
4848
InitIndex, InitLocation, LookupResult, MoveData, MovePathIndex,
4949
};
50-
use rustc_mir_dataflow::{Analysis, EntryStates, Results, ResultsVisitor, visit_results};
50+
use rustc_mir_dataflow::{Analysis, Results, ResultsVisitor, visit_results};
5151
use rustc_session::lint::builtin::{TAIL_EXPR_DROP_ORDER, UNUSED_MUT};
5252
use rustc_span::{ErrorGuaranteed, Span, Symbol};
5353
use smallvec::SmallVec;
@@ -469,11 +469,13 @@ fn do_mir_borrowck<'tcx>(
469469
// Compute and report region errors, if any.
470470
mbcx.report_region_errors(nll_errors);
471471

472-
let mut flow_results = get_flow_results(tcx, body, &move_data, &borrow_set, &regioncx);
472+
let (mut flow_analysis, flow_entry_states) =
473+
get_flow_results(tcx, body, &move_data, &borrow_set, &regioncx);
473474
visit_results(
474475
body,
475476
traversal::reverse_postorder(body).map(|(bb, _)| bb),
476-
&mut flow_results,
477+
&mut flow_analysis,
478+
&flow_entry_states,
477479
&mut mbcx,
478480
);
479481

@@ -533,7 +535,7 @@ fn get_flow_results<'a, 'tcx>(
533535
move_data: &'a MoveData<'tcx>,
534536
borrow_set: &'a BorrowSet<'tcx>,
535537
regioncx: &RegionInferenceContext<'tcx>,
536-
) -> Results<'tcx, Borrowck<'a, 'tcx>> {
538+
) -> (Borrowck<'a, 'tcx>, Results<BorrowckDomain>) {
537539
// We compute these three analyses individually, but them combine them into
538540
// a single results so that `mbcx` can visit them all together.
539541
let borrows = Borrows::new(tcx, body, regioncx, borrow_set).iterate_to_fixpoint(
@@ -558,14 +560,14 @@ fn get_flow_results<'a, 'tcx>(
558560
ever_inits: ever_inits.analysis,
559561
};
560562

561-
assert_eq!(borrows.entry_states.len(), uninits.entry_states.len());
562-
assert_eq!(borrows.entry_states.len(), ever_inits.entry_states.len());
563-
let entry_states: EntryStates<'_, Borrowck<'_, '_>> =
564-
itertools::izip!(borrows.entry_states, uninits.entry_states, ever_inits.entry_states)
563+
assert_eq!(borrows.results.len(), uninits.results.len());
564+
assert_eq!(borrows.results.len(), ever_inits.results.len());
565+
let results: Results<_> =
566+
itertools::izip!(borrows.results, uninits.results, ever_inits.results)
565567
.map(|(borrows, uninits, ever_inits)| BorrowckDomain { borrows, uninits, ever_inits })
566568
.collect();
567569

568-
Results { analysis, entry_states }
570+
(analysis, results)
569571
}
570572

571573
pub(crate) struct BorrowckInferCtxt<'tcx> {
@@ -713,7 +715,7 @@ struct MirBorrowckCtxt<'a, 'infcx, 'tcx> {
713715
impl<'a, 'tcx> ResultsVisitor<'tcx, Borrowck<'a, 'tcx>> for MirBorrowckCtxt<'a, '_, 'tcx> {
714716
fn visit_after_early_statement_effect(
715717
&mut self,
716-
_results: &mut Results<'tcx, Borrowck<'a, 'tcx>>,
718+
_analysis: &mut Borrowck<'a, 'tcx>,
717719
state: &BorrowckDomain,
718720
stmt: &Statement<'tcx>,
719721
location: Location,
@@ -789,7 +791,7 @@ impl<'a, 'tcx> ResultsVisitor<'tcx, Borrowck<'a, 'tcx>> for MirBorrowckCtxt<'a,
789791

790792
fn visit_after_early_terminator_effect(
791793
&mut self,
792-
_results: &mut Results<'tcx, Borrowck<'a, 'tcx>>,
794+
_analysis: &mut Borrowck<'a, 'tcx>,
793795
state: &BorrowckDomain,
794796
term: &Terminator<'tcx>,
795797
loc: Location,
@@ -909,7 +911,7 @@ impl<'a, 'tcx> ResultsVisitor<'tcx, Borrowck<'a, 'tcx>> for MirBorrowckCtxt<'a,
909911

910912
fn visit_after_primary_terminator_effect(
911913
&mut self,
912-
_results: &mut Results<'tcx, Borrowck<'a, 'tcx>>,
914+
_analysis: &mut Borrowck<'a, 'tcx>,
913915
state: &BorrowckDomain,
914916
term: &Terminator<'tcx>,
915917
loc: Location,

‎compiler/rustc_driver_impl/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,7 @@ fn handle_explain(early_dcx: &EarlyDiagCtxt, registry: Registry, code: &str, col
463463
// Allow "E0123" or "0123" form.
464464
let upper_cased_code = code.to_ascii_uppercase();
465465
if let Ok(code) = upper_cased_code.strip_prefix('E').unwrap_or(&upper_cased_code).parse::<u32>()
466+
&& code <= ErrCode::MAX_AS_U32
466467
&& let Ok(description) = registry.try_find_description(ErrCode::from_u32(code))
467468
{
468469
let mut is_in_code_block = false;

0 commit comments

Comments
 (0)