Skip to content

Commit 862a300

Browse files
committed
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`
2 parents e5e937a + 588c7d9 commit 862a300

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

crates/base-db/src/input.rs

+1
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ pub trait ProcMacroExpander: fmt::Debug + Send + Sync + RefUnwindSafe {
257257
) -> Result<Subtree, ProcMacroExpansionError>;
258258
}
259259

260+
#[derive(Debug)]
260261
pub enum ProcMacroExpansionError {
261262
Panic(String),
262263
/// Things like "proc macro server was killed by OOM".

crates/ide-db/src/defs.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,8 @@ impl IdentClass {
161161
ast::AwaitExpr(await_expr) => OperatorClass::classify_await(sema, &await_expr).map(IdentClass::Operator),
162162
ast::BinExpr(bin_expr) => OperatorClass::classify_bin(sema, &bin_expr).map(IdentClass::Operator),
163163
ast::IndexExpr(index_expr) => OperatorClass::classify_index(sema, &index_expr).map(IdentClass::Operator),
164-
ast::PrefixExpr(prefix_expr) => OperatorClass::classify_prefix(sema,&prefix_expr).map(IdentClass::Operator),
165-
ast::TryExpr(try_expr) => OperatorClass::classify_try(sema,&try_expr).map(IdentClass::Operator),
164+
ast::PrefixExpr(prefix_expr) => OperatorClass::classify_prefix(sema, &prefix_expr).map(IdentClass::Operator),
165+
ast::TryExpr(try_expr) => OperatorClass::classify_try(sema, &try_expr).map(IdentClass::Operator),
166166
_ => None,
167167
}
168168
}

crates/ide/src/hover.rs

+15-17
Original file line numberDiff line numberDiff line change
@@ -180,26 +180,24 @@ fn hover_simple(
180180
descended()
181181
.filter_map(|token| {
182182
let node = token.parent()?;
183-
let class = IdentClass::classify_token(sema, token)?;
184-
if let IdentClass::Operator(OperatorClass::Await(_)) = class {
183+
match IdentClass::classify_node(sema, &node)? {
185184
// It's better for us to fall back to the keyword hover here,
186185
// rendering poll is very confusing
187-
return None;
186+
IdentClass::Operator(OperatorClass::Await(_)) => None,
187+
188+
IdentClass::NameRefClass(NameRefClass::ExternCrateShorthand {
189+
decl,
190+
..
191+
}) => Some(vec![(Definition::ExternCrateDecl(decl), node)]),
192+
193+
class => Some(
194+
class
195+
.definitions()
196+
.into_iter()
197+
.zip(iter::repeat(node))
198+
.collect::<Vec<_>>(),
199+
),
188200
}
189-
if let IdentClass::NameRefClass(NameRefClass::ExternCrateShorthand {
190-
decl,
191-
..
192-
}) = class
193-
{
194-
return Some(vec![(Definition::ExternCrateDecl(decl), node)]);
195-
}
196-
Some(
197-
class
198-
.definitions()
199-
.into_iter()
200-
.zip(iter::once(node).cycle())
201-
.collect::<Vec<_>>(),
202-
)
203201
})
204202
.flatten()
205203
.unique_by(|&(def, _)| def)

0 commit comments

Comments
 (0)