about summary refs log tree commit diff
path: root/compiler/rustc_resolve/src
diff options
context:
space:
mode:
authoryukang <moorekang@gmail.com>2024-07-04 09:55:00 +0000
committeryukang <moorekang@gmail.com>2024-07-04 09:55:00 +0000
commitfe5581dd31eb1b86c915e5c3eaae9ebfdea28037 (patch)
tree0f161ace1b9e1062fb369bcf2aac34634bcdf0f4 /compiler/rustc_resolve/src
parentf6fa358a182b2f8e4d5a10faac4dae950493c9bc (diff)
downloadrust-fe5581dd31eb1b86c915e5c3eaae9ebfdea28037.tar.gz
rust-fe5581dd31eb1b86c915e5c3eaae9ebfdea28037.zip
Fix import suggestion ice
Diffstat (limited to 'compiler/rustc_resolve/src')
-rw-r--r--compiler/rustc_resolve/src/diagnostics.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs
index 50a4e03d233..7e1251b3a3a 100644
--- a/compiler/rustc_resolve/src/diagnostics.rs
+++ b/compiler/rustc_resolve/src/diagnostics.rs
@@ -1989,12 +1989,12 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
             if let Some(candidate) = candidates.get(0) {
                 let path = {
                     // remove the possible common prefix of the path
-                    let start_index = (0..failed_segment_idx)
-                        .find(|&i| path[i].ident != candidate.path.segments[i].ident)
+                    let len = candidate.path.segments.len();
+                    let start_index = (0..=failed_segment_idx.min(len - 1))
+                        .find(|&i| path[i].ident.name != candidate.path.segments[i].ident.name)
                         .unwrap_or_default();
-                    let segments = (start_index..=failed_segment_idx)
-                        .map(|s| candidate.path.segments[s].clone())
-                        .collect();
+                    let segments =
+                        (start_index..len).map(|s| candidate.path.segments[s].clone()).collect();
                     Path { segments, span: Span::default(), tokens: None }
                 };
                 (