mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +00:00
Only Highlight Exit Points on async
Token
This ensures that when being on an `await` token, it still only highlights the yield points and not the exit points.
This commit is contained in:
parent
e1961b1078
commit
68c263bdf6
1 changed files with 13 additions and 7 deletions
|
@ -513,16 +513,23 @@ pub(crate) fn highlight_yield_points(
|
||||||
match anc {
|
match anc {
|
||||||
ast::Fn(fn_) => hl(sema, fn_.async_token(), fn_.body().map(ast::Expr::BlockExpr)),
|
ast::Fn(fn_) => hl(sema, fn_.async_token(), fn_.body().map(ast::Expr::BlockExpr)),
|
||||||
ast::BlockExpr(block_expr) => {
|
ast::BlockExpr(block_expr) => {
|
||||||
if block_expr.async_token().is_none() {
|
let Some(async_token) = block_expr.async_token() else {
|
||||||
continue;
|
continue;
|
||||||
}
|
};
|
||||||
|
|
||||||
// Async blocks act similar to closures. So we want to
|
// Async blocks act similar to closures. So we want to
|
||||||
// highlight their exit points too.
|
// highlight their exit points too, but only if we are on
|
||||||
let exit_points = hl_exit_points(sema, block_expr.async_token(), block_expr.clone().into());
|
// the async token.
|
||||||
merge_map(&mut res, exit_points);
|
if async_token == token {
|
||||||
|
let exit_points = hl_exit_points(
|
||||||
|
sema,
|
||||||
|
Some(async_token.clone()),
|
||||||
|
block_expr.clone().into(),
|
||||||
|
);
|
||||||
|
merge_map(&mut res, exit_points);
|
||||||
|
}
|
||||||
|
|
||||||
hl(sema, block_expr.async_token(), Some(block_expr.into()))
|
hl(sema, Some(async_token), Some(block_expr.into()))
|
||||||
},
|
},
|
||||||
ast::ClosureExpr(closure) => hl(sema, closure.async_token(), closure.body()),
|
ast::ClosureExpr(closure) => hl(sema, closure.async_token(), closure.body()),
|
||||||
_ => continue,
|
_ => continue,
|
||||||
|
@ -949,7 +956,6 @@ async fn foo() {
|
||||||
(async {
|
(async {
|
||||||
// ^^^^^
|
// ^^^^^
|
||||||
(async { 0.await }).await$0
|
(async { 0.await }).await$0
|
||||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
// ^^^^^
|
// ^^^^^
|
||||||
}).await;
|
}).await;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue