fix(treesitter): #has-parent? errors on a node with no parent

Problem:
The #has-parent? predicate indexes the result of node:parent() without
checking it, so a capture that matches a tree's root node raises

    query.lua:600: attempt to index a nil value

instead of simply not matching. In a highlights query that breaks
highlighting for the whole buffer. The sibling #has-ancestor? predicate
handles the same situation.

Solution:
Treat a missing parent as "does not match".

AI-assisted
This commit is contained in:
Volodymyr Chernetskyi
2026-09-04 18:20:15 +02:00
committed by Christian Clason
parent e8a0b400d8
commit 2f5df7add7
2 changed files with 22 additions and 1 deletions

View File

@@ -597,7 +597,8 @@ local predicate_handlers = {
end
for _, node in ipairs(nodes) do
if vim.list_contains({ unpack(predicate, 3) }, node:parent():type()) then
local parent = node:parent()
if parent and vim.list_contains({ unpack(predicate, 3) }, parent:type()) then
return true
end
end