diff --git a/crates/ide/src/highlight_related.rs b/crates/ide/src/highlight_related.rs index 357b0d2455..aac23be777 100644 --- a/crates/ide/src/highlight_related.rs +++ b/crates/ide/src/highlight_related.rs @@ -10,7 +10,7 @@ use rustc_hash::FxHashSet; use syntax::{ ast::{self, HasLoopBody}, match_ast, AstNode, - SyntaxKind::IDENT, + SyntaxKind::{IDENT, INT_NUMBER}, SyntaxNode, SyntaxToken, TextRange, T, }; @@ -54,10 +54,9 @@ pub(crate) fn highlight_related( T![?] => 4, // prefer `?` when the cursor is sandwiched like in `await$0?` T![->] => 3, kind if kind.is_keyword() => 2, - IDENT => 1, + IDENT | INT_NUMBER => 1, _ => 0, })?; - match token.kind() { T![?] if config.exit_points && token.parent().and_then(ast::TryExpr::cast).is_some() => { highlight_exit_points(sema, token) @@ -346,6 +345,22 @@ mod tests { assert_eq!(expected, actual); } + #[test] + fn test_hl_tuple_fields() { + check( + r#" +struct Tuple(u32, u32); + +fn foo(t: Tuple) { + t.0$0; + // ^ read + t.0; + // ^ read +} +"#, + ); + } + #[test] fn test_hl_module() { check(