This change does two main things:
1. Indicate that `(for_expression)`'s introduce a `@scope` (this
is the scope for the enumerators to be used within the loop).
2. Indicate that the `(identifiers)` within the `(enumerators)` are
`@definition.var`s.
---
For the following example snippet:
```scala
val fruits = List("apple", "banana", "avocado", "papaya")
val countsToFruits = fruits.groupBy(fruit => fruit.count(_ == 'a'))
for ((count, fruits) <- countsToFruits) {
println(s"with (fruits) 'a' × $count = $fruits")
}
```
The `count` and `fruits` identifiers are new definitions introduced by
the `for` expressions scope.
Since 0.9, @lang syntax is still available as fallback but will soon be deprecated.
Because of that, new syntax should be adopted once 0.9 becomes the
baseline requirements for nvim-treesitter
- update health check
- update doc
`@scope` included `function_declaration` while is should have included `function_definition` instead. The former one is used to declare abstract functions while the latter one is used to define functions together with their bodies.
This is a small change that comes from the discussion we had in
https://github.com/tree-sitter/tree-sitter-scala/discussions/168#discussioncomment-4718624.
The idea here is that we're sort of making an assumption on what an
uppercase identifier is in Scala and more times than not, it's actually
a `@type`. So this changes the `@constant` capture to a `@type` one. You
can find the full context in the linked discussion.
There has been a lot of changes recently to the Scala grammar and we've
been merging in a handful of things before syncing the actual generated
parser. We are currently at a stage where we're going to sync
everything, but there are some breaking changes that are included in
https://github.com/tree-sitter/tree-sitter-scala/pull/135, so when that
commit gets synced here stuff will break. We've taken the queries that
existed here and have been building off of them in the actual upstream
repo. This will hopefully make the transition smooth and updates the
queries to ensure that there is no breakage. It's recommended to wait
until that pr is merged, synced here, and then merge this in around the
same time.
Co-authored-by: eugene yokota <eed3si9n@gmail.com>
Co-authored-by: Anton Sviridov <keynmol@gmail.com>
* add highlights for imports
* add highlights for type constructors
* add highlights for constants
* add highlights for interpolation string
* add highlights for comments through injection
* add keywords to scala highlights
* special capture for special keywords
* add while to 'repeat' capture
* pr cleanup, exmaples in CONTRIBUTING.md
* add backquotes for consistency in docs
* group @repeat keywords, fix null
* comment-out 'macro' and 'forSome'
* fix 'this' and 'super' keyword
* remove accidental files 🤦
* update revision
* fix "super" and "this"
* godammit these .metals files are killing me
* why did I commit this???
Co-authored-by: Stuart Mashaal <smashaal@hopper.com>