From: Lukas Wirth Date: Tue, 21 Dec 2021 17:25:50 +0000 (+0100) Subject: Simplify X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=e76e0e843df1293dca40baa3790bfc7db993008d;p=rust.git Simplify --- diff --git a/crates/hir_def/src/import_map.rs b/crates/hir_def/src/import_map.rs index 27a05b87c1d..5e91a3df0a2 100644 --- a/crates/hir_def/src/import_map.rs +++ b/crates/hir_def/src/import_map.rs @@ -72,8 +72,12 @@ pub fn import_map_query(db: &dyn DefDatabase, krate: CrateId) -> Arc { let mut import_map = collect_import_map(db, krate); - let mut importables = import_map.map.iter().collect::>(); - importables.sort_by_cached_key(|(_, import_info)| fst_path(&import_info.path)); + let mut importables = import_map + .map + .iter() + .map(|(item, info)| (item, fst_path(&info.path))) + .collect::>(); + importables.sort_by(|(_, fst_path), (_, fst_path2)| fst_path.cmp(fst_path2)); // Build the FST, taking care not to insert duplicate values. @@ -81,20 +85,20 @@ pub fn import_map_query(db: &dyn DefDatabase, krate: CrateId) -> Arc { let mut last_batch_start = 0; for idx in 0..importables.len() { - let key = fst_path(&importables[last_batch_start].1.path); - if let Some((_, next_import_info)) = importables.get(idx + 1) { - if key == fst_path(&next_import_info.path) { + let key = &importables[last_batch_start].1; + if let Some((_, fst_path)) = importables.get(idx + 1) { + if key == fst_path { continue; } } - builder.insert(key, last_batch_start as u64).unwrap(); + let _ = builder.insert(key, last_batch_start as u64); last_batch_start = idx + 1; } - import_map.fst = fst::Map::new(builder.into_inner().unwrap()).unwrap(); - import_map.importables = importables.iter().map(|(item, _)| **item).collect(); + import_map.fst = builder.into_map(); + import_map.importables = importables.iter().map(|&(&item, _)| item).collect(); Arc::new(import_map) } diff --git a/crates/ide_completion/src/context.rs b/crates/ide_completion/src/context.rs index d0ed9889898..2a1891c76b2 100644 --- a/crates/ide_completion/src/context.rs +++ b/crates/ide_completion/src/context.rs @@ -302,6 +302,7 @@ pub(crate) fn is_immediately_after_macro_bang(&self) -> bool { /// A version of [`SemanticsScope::process_all_names`] that filters out `#[doc(hidden)]` items. pub(crate) fn process_all_names(&self, f: &mut dyn FnMut(Name, ScopeDef)) { + let _p = profile::span("CompletionContext::process_all_names"); self.scope.process_all_names(&mut |name, def| { if self.is_scope_def_hidden(def) { return; @@ -422,6 +423,7 @@ fn expand_and_fill( mut offset: TextSize, mut fake_ident_token: SyntaxToken, ) { + let _p = profile::span("CompletionContext::expand_and_fill"); loop { // Expand attributes if let (Some(actual_item), Some(item_with_fake_ident)) = (