Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #15660 - DaniPopes:hover-simple-refactor, r=HKalbasi
minor: hover_simple refactor A minor refactor of `hover_simple` opportunity I noticed while skimming through the code. - `if let`s -> `match` - `iter::once(x).cycle` -> `iter::repeat` - `classify_token` -> `classify_node`
bors 2023-09-25
parent e5e937a · parent 588c7d9 · commit 862a300
-rw-r--r--crates/base-db/src/input.rs1
-rw-r--r--crates/ide-db/src/defs.rs4
-rw-r--r--crates/ide/src/hover.rs32
3 files changed, 18 insertions, 19 deletions
diff --git a/crates/base-db/src/input.rs b/crates/base-db/src/input.rs
index b75c7079be..65db5c0fc7 100644
--- a/crates/base-db/src/input.rs
+++ b/crates/base-db/src/input.rs
@@ -257,6 +257,7 @@ pub trait ProcMacroExpander: fmt::Debug + Send + Sync + RefUnwindSafe {
) -> Result<Subtree, ProcMacroExpansionError>;
}
+#[derive(Debug)]
pub enum ProcMacroExpansionError {
Panic(String),
/// Things like "proc macro server was killed by OOM".
diff --git a/crates/ide-db/src/defs.rs b/crates/ide-db/src/defs.rs
index 4ce80532e8..ef72fc3861 100644
--- a/crates/ide-db/src/defs.rs
+++ b/crates/ide-db/src/defs.rs
@@ -161,8 +161,8 @@ impl IdentClass {
ast::AwaitExpr(await_expr) => OperatorClass::classify_await(sema, &await_expr).map(IdentClass::Operator),
ast::BinExpr(bin_expr) => OperatorClass::classify_bin(sema, &bin_expr).map(IdentClass::Operator),
ast::IndexExpr(index_expr) => OperatorClass::classify_index(sema, &index_expr).map(IdentClass::Operator),
- ast::PrefixExpr(prefix_expr) => OperatorClass::classify_prefix(sema,&prefix_expr).map(IdentClass::Operator),
- ast::TryExpr(try_expr) => OperatorClass::classify_try(sema,&try_expr).map(IdentClass::Operator),
+ ast::PrefixExpr(prefix_expr) => OperatorClass::classify_prefix(sema, &prefix_expr).map(IdentClass::Operator),
+ ast::TryExpr(try_expr) => OperatorClass::classify_try(sema, &try_expr).map(IdentClass::Operator),
_ => None,
}
}
diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs
index 21934b9480..e0b64fe798 100644
--- a/crates/ide/src/hover.rs
+++ b/crates/ide/src/hover.rs
@@ -180,26 +180,24 @@ fn hover_simple(
descended()
.filter_map(|token| {
let node = token.parent()?;
- let class = IdentClass::classify_token(sema, token)?;
- if let IdentClass::Operator(OperatorClass::Await(_)) = class {
+ match IdentClass::classify_node(sema, &node)? {
// It's better for us to fall back to the keyword hover here,
// rendering poll is very confusing
- return None;
+ IdentClass::Operator(OperatorClass::Await(_)) => None,
+
+ IdentClass::NameRefClass(NameRefClass::ExternCrateShorthand {
+ decl,
+ ..
+ }) => Some(vec![(Definition::ExternCrateDecl(decl), node)]),
+
+ class => Some(
+ class
+ .definitions()
+ .into_iter()
+ .zip(iter::repeat(node))
+ .collect::<Vec<_>>(),
+ ),
}
- 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)