Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 0285acc

Browse files
committed
Find next_non_trivia_token of name_ref.
1 parent e1396bd commit 0285acc

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

crates/ide-completion/src/context/analysis.rs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -608,16 +608,8 @@ fn classify_name_ref(
608608

609609
let reciever_is_part_of_indivisible_expression = match &receiver {
610610
Some(ast::Expr::IfExpr(_)) => {
611-
let next_sibling = field.dot_token().and_then(|token| {
612-
let dot_token = original_file.covering_element(token.text_range());
613-
let next_sibling = dot_token.as_token().and_then(|t| t.next_token()).and_then(|t| next_non_trivia_sibling(t.into()));
614-
next_sibling
615-
});
616-
match next_sibling {
617-
Some(syntax::NodeOrToken::Node(n)) => n.first_child_or_token().map(|t| t.kind()) == Some(SyntaxKind::ELSE_KW),
618-
Some(syntax::NodeOrToken::Token(t)) => t.kind() == SyntaxKind::ELSE_KW,
619-
None => false
620-
}
611+
let next_token_kind = next_non_trivia_token(name_ref.syntax().clone()).map(|t| t.kind());
612+
next_token_kind == Some(SyntaxKind::ELSE_KW)
621613
},
622614
_ => false
623615
};
@@ -1337,6 +1329,22 @@ fn previous_non_trivia_token(e: impl Into<SyntaxElement>) -> Option<SyntaxToken>
13371329
None
13381330
}
13391331

1332+
fn next_non_trivia_token(e: impl Into<SyntaxElement>) -> Option<SyntaxToken> {
1333+
let mut token = match e.into() {
1334+
SyntaxElement::Node(n) => n.last_token()?,
1335+
SyntaxElement::Token(t) => t,
1336+
}
1337+
.next_token();
1338+
while let Some(inner) = token {
1339+
if !inner.kind().is_trivia() {
1340+
return Some(inner);
1341+
} else {
1342+
token = inner.next_token();
1343+
}
1344+
}
1345+
None
1346+
}
1347+
13401348
fn next_non_trivia_sibling(ele: SyntaxElement) -> Option<SyntaxElement> {
13411349
let mut e = ele.next_sibling_or_token();
13421350
while let Some(inner) = e {

0 commit comments

Comments
 (0)