summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Seitz <stephan.seitz@fau.de>2022-10-15 02:29:32 +0200
committerStephan Seitz <stephan.seitz@fau.de>2022-10-15 04:02:20 -0700
commit53742779e390d8e0363ac7b253f9a3cf73fc498d (patch)
treec56e4ace92dda0bd5dd2d162c9b932919e036b44
parent9c3a1366bcaa476ee058fac5b75b8f09a590d8af (diff)
highlights(rust): distinguish between "for" in loops and impl_item
Fixes #3641
-rw-r--r--queries/rust/highlights.scm6
-rw-r--r--tests/query/highlights/rust/for.rs15
2 files changed, 19 insertions, 2 deletions
diff --git a/queries/rust/highlights.scm b/queries/rust/highlights.scm
index db5e3982..c08912be 100644
--- a/queries/rust/highlights.scm
+++ b/queries/rust/highlights.scm
@@ -211,13 +211,15 @@
[
"break"
"continue"
- "for"
"in"
"loop"
"while"
] @repeat
-
+(impl_item
+ "for" @keyword)
+(for_expression
+ "for" @repeat)
;;; Operators & Punctuation
diff --git a/tests/query/highlights/rust/for.rs b/tests/query/highlights/rust/for.rs
new file mode 100644
index 00000000..27f07284
--- /dev/null
+++ b/tests/query/highlights/rust/for.rs
@@ -0,0 +1,15 @@
+struct Foo;
+
+// Issue https://github.com/nvim-treesitter/nvim-treesitter/issues/3641
+// Distinguish between for in loop or impl_item
+impl Drop for Foo {
+ // ^ @keyword
+ fn drop(&mut self) {}
+}
+
+fn main() {
+ for i in 0..128 {
+ // <- @repeat
+ println!("{i}");
+ }
+}