mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
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:
parent
3849cc9c18
commit
6b5f44817e
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user