diff options
| author | bors <bors@rust-lang.org> | 2022-11-07 14:52:05 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-11-07 14:52:05 +0000 |
| commit | 8a633fe9866d198e0cc63f648fe3525b5e83bb88 (patch) | |
| tree | f5ca2b8ff518f35dbd09bb5c26a4fd07cec36140 | |
| parent | b0e56ef5e82791a9d41757d0c6c0067109f1c752 (diff) | |
| parent | b169e1e5decbbda7ad09a8fa07fb32ca83ec7a50 (diff) | |
| download | rust-8a633fe9866d198e0cc63f648fe3525b5e83bb88.tar.gz rust-8a633fe9866d198e0cc63f648fe3525b5e83bb88.zip | |
Auto merge of #13570 - Veykril:dedup-crates-for, r=Veykril
minor: Remove code duplication
| -rw-r--r-- | crates/ide/src/moniker.rs | 20 | ||||
| -rw-r--r-- | crates/ide/src/static_index.rs | 5 |
2 files changed, 7 insertions, 18 deletions
diff --git a/crates/ide/src/moniker.rs b/crates/ide/src/moniker.rs index 07d117aff10..fcbf6d8e58c 100644 --- a/crates/ide/src/moniker.rs +++ b/crates/ide/src/moniker.rs @@ -1,9 +1,9 @@ //! This module generates [moniker](https://microsoft.github.io/language-server-protocol/specifications/lsif/0.6.0/specification/#exportsImports) //! for LSIF and LSP. -use hir::{db::DefDatabase, AsAssocItem, AssocItemContainer, Crate, Name, Semantics}; +use hir::{AsAssocItem, AssocItemContainer, Crate, Name, Semantics}; use ide_db::{ - base_db::{CrateOrigin, FileId, FileLoader, FilePosition, LangCrateOrigin}, + base_db::{CrateOrigin, FilePosition, LangCrateOrigin}, defs::{Definition, IdentClass}, helpers::pick_best_token, RootDatabase, @@ -11,7 +11,7 @@ use ide_db::{ use itertools::Itertools; use syntax::{AstNode, SyntaxKind::*, T}; -use crate::{doc_links::token_as_doc_comment, RangeInfo}; +use crate::{doc_links::token_as_doc_comment, parent_module::crates_for, RangeInfo}; #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum MonikerDescriptorKind { @@ -77,25 +77,13 @@ pub struct PackageInformation { pub version: Option<String>, } -pub(crate) fn crate_for_file(db: &RootDatabase, file_id: FileId) -> Option<Crate> { - for &krate in db.relevant_crates(file_id).iter() { - let crate_def_map = db.crate_def_map(krate); - for (_, data) in crate_def_map.modules() { - if data.origin.file_id() == Some(file_id) { - return Some(krate.into()); - } - } - } - None -} - pub(crate) fn moniker( db: &RootDatabase, FilePosition { file_id, offset }: FilePosition, ) -> Option<RangeInfo<Vec<MonikerResult>>> { let sema = &Semantics::new(db); let file = sema.parse(file_id).syntax().clone(); - let current_crate = crate_for_file(db, file_id)?; + let current_crate: hir::Crate = crates_for(db, file_id).pop()?.into(); let original_token = pick_best_token(file.token_at_offset(offset), |kind| match kind { IDENT | INT_NUMBER diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index 6ebd6f713fb..2380cf7381c 100644 --- a/crates/ide/src/static_index.rs +++ b/crates/ide/src/static_index.rs @@ -13,7 +13,8 @@ use syntax::{AstNode, SyntaxKind::*, SyntaxToken, TextRange, T}; use crate::{ hover::hover_for_definition, - moniker::{crate_for_file, def_to_moniker, MonikerResult}, + moniker::{def_to_moniker, MonikerResult}, + parent_module::crates_for, Analysis, Fold, HoverConfig, HoverDocFormat, HoverResult, InlayHint, InlayHintsConfig, TryToNav, }; @@ -99,7 +100,7 @@ fn all_modules(db: &dyn HirDatabase) -> Vec<Module> { impl StaticIndex<'_> { fn add_file(&mut self, file_id: FileId) { - let current_crate = crate_for_file(self.db, file_id); + let current_crate = crates_for(self.db, file_id).pop().map(Into::into); let folds = self.analysis.folding_ranges(file_id).unwrap(); let inlay_hints = self .analysis |
