Unnamed repository; edit this file 'description' to name the repository.
Do not re-query source roots per crate in analysis-stats
| -rw-r--r-- | crates/base-db/src/editioned_file_id.rs | 2 | ||||
| -rw-r--r-- | crates/ide/src/typing.rs | 5 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/cli/analysis_stats.rs | 2 |
3 files changed, 4 insertions, 5 deletions
diff --git a/crates/base-db/src/editioned_file_id.rs b/crates/base-db/src/editioned_file_id.rs index db3730bccd..8721f3a0ff 100644 --- a/crates/base-db/src/editioned_file_id.rs +++ b/crates/base-db/src/editioned_file_id.rs @@ -1,5 +1,5 @@ //! Defines [`EditionedFileId`], an interned wrapper around [`span::EditionedFileId`] that -//! is interned (so queries can take it) and remembers its crate. +//! is interned (so queries can take it) and stores only the underlying `span::EditionedFileId`. use std::hash::Hash; diff --git a/crates/ide/src/typing.rs b/crates/ide/src/typing.rs index 11bfb982cf..e8b0c92dcb 100644 --- a/crates/ide/src/typing.rs +++ b/crates/ide/src/typing.rs @@ -70,12 +70,11 @@ pub(crate) fn on_char_typed( if !TRIGGER_CHARS.contains(&char_typed) { return None; } - let krate = db + let edition = db .relevant_crates(position.file_id) .first() .copied() - .unwrap_or_else(|| *db.all_crates().first().unwrap()); - let edition = krate.data(db).edition; + .map_or(Edition::CURRENT, |krate| krate.data(db).edition); let editioned_file_id_wrapper = EditionedFileId::new(db, position.file_id, edition); let file = &db.parse(editioned_file_id_wrapper); let char_matches_position = diff --git a/crates/rust-analyzer/src/cli/analysis_stats.rs b/crates/rust-analyzer/src/cli/analysis_stats.rs index caa35879aa..82f04aa78e 100644 --- a/crates/rust-analyzer/src/cli/analysis_stats.rs +++ b/crates/rust-analyzer/src/cli/analysis_stats.rs @@ -127,7 +127,7 @@ impl flags::AnalysisStats { .iter() .cloned() .map(|krate| (db.file_source_root(krate.root_file(db)).source_root_id(db), krate)) - .unique(); + .unique_by(|(source_root_id, _)| *source_root_id); let mut dep_loc = 0; let mut workspace_loc = 0; |