fix(languagetree): remove double recursion in LanguageTree:parse

`LanguageTree:parse` is recursive, and calls
`LanguageTree:for_each_child`, which is also recursive.

That means that, starting from the third level (child of child of root),
nodes will be parsed twice.

Which then means that if the tree is N layers deep, there will be ~2^N
parses even if the branching factor is 1.

Now, why was the tree deepening with each character inserted? And why
did this only regress in #24647? These are mysteries for another time.

Fixes: #25104
This commit is contained in:
L Lllvvuu 2023-09-11 23:15:24 -07:00 committed by Christian Clason
parent 3849cc9c18
commit 6b5f44817e

View File

@ -444,9 +444,9 @@ function LanguageTree:parse(range)
range = range,
})
self:for_each_child(function(child)
for _, child in pairs(self._children) do
child:parse(range)
end)
end
return self._trees
end