Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/typing.rs')
-rw-r--r--crates/ide/src/typing.rs17
1 files changed, 5 insertions, 12 deletions
diff --git a/crates/ide/src/typing.rs b/crates/ide/src/typing.rs
index f8b0dbfe62..e8b0c92dcb 100644
--- a/crates/ide/src/typing.rs
+++ b/crates/ide/src/typing.rs
@@ -17,10 +17,7 @@ mod on_enter;
use either::Either;
use hir::EditionedFileId;
-use ide_db::{
- FilePosition, RootDatabase,
- base_db::{RootQueryDb, SourceDatabase},
-};
+use ide_db::{FilePosition, RootDatabase, base_db::RootQueryDb};
use span::Edition;
use std::iter;
@@ -74,15 +71,11 @@ pub(crate) fn on_char_typed(
return None;
}
let edition = db
- .source_root_crates(db.file_source_root(position.file_id).source_root_id(db))
+ .relevant_crates(position.file_id)
.first()
- .map_or(Edition::CURRENT, |crates| crates.data(db).edition);
- // FIXME: We are hitting the database here, if we are unlucky this call might block momentarily
- // causing the editor to feel sluggish! We need to make this bail if it would block too long?
- let editioned_file_id_wrapper = EditionedFileId::from_span_guess_origin(
- db,
- span::EditionedFileId::new(position.file_id, edition),
- );
+ .copied()
+ .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 =
file.tree().syntax().text().char_at(position.offset) == Some(char_typed);