See attached issue. I don't love the solution, but am not sure how else
to attack the problem. We want to match *almost* every `identifier` in
the scope. We don't want to match scoped identifiers, so the best I
could come up with (without restating large chunks of `highlights.scm`)
was to repeat the negative case. I think this could be another use case
for `#has-ancestor?`, (or `#not-has-ancestor?` technically), but unless
that gets added, I think this is the most straightforward solution.
Closes: #13194
The fix comes from the rewriting of the `closure_parameters` stanza:
it was capturing the entire `closure_parameters` node including
paretheses, whitespace, and commas. Capturing the identifiers within
fixes the tracking.
In order to make sure locals definitions from closure parameters don't
leak out of the body of the closure, though, we should also mark the
closure itself as a locals scope.