Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/hover.rs')
-rw-r--r--crates/ide/src/hover.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs
index 5ef6ac9480..40659e6c26 100644
--- a/crates/ide/src/hover.rs
+++ b/crates/ide/src/hover.rs
@@ -9,7 +9,7 @@ use either::Either;
use hir::{db::DefDatabase, HasSource, LangItem, Semantics};
use ide_db::{
base_db::FileRange,
- defs::{Definition, IdentClass, OperatorClass},
+ defs::{Definition, IdentClass, NameRefClass, OperatorClass},
famous_defs::FamousDefs,
helpers::pick_best_token,
FxIndexSet, RootDatabase,
@@ -186,7 +186,20 @@ fn hover_simple(
// rendering poll is very confusing
return None;
}
- Some(class.definitions().into_iter().zip(iter::once(node).cycle()))
+ if let IdentClass::NameRefClass(NameRefClass::ExternCrateShorthand {
+ decl,
+ ..
+ }) = class
+ {
+ return Some(vec![(Definition::ExternCrateDecl(decl), node)]);
+ }
+ Some(
+ class
+ .definitions()
+ .into_iter()
+ .zip(iter::once(node).cycle())
+ .collect::<Vec<_>>(),
+ )
})
.flatten()
.unique_by(|&(def, _)| def)