aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/treesitter_spec.lua
diff options
context:
space:
mode:
authorThomas Vigouroux <tomvig38@gmail.com>2020-08-08 23:26:40 +0200
committerThomas Vigouroux <tomvig38@gmail.com>2020-08-31 13:42:30 +0200
commite123fd0a5dfbddc25cc872c6b4cf075a0c222bbe (patch)
tree1daaa005f513667bf056448490c20922872266c9 /test/functional/lua/treesitter_spec.lua
parent24b5f69a4922e53baa46faf4f5e0b05da42cd2d5 (diff)
downloadrneovim-e123fd0a5dfbddc25cc872c6b4cf075a0c222bbe.tar.gz
rneovim-e123fd0a5dfbddc25cc872c6b4cf075a0c222bbe.tar.bz2
rneovim-e123fd0a5dfbddc25cc872c6b4cf075a0c222bbe.zip
treesitter: allow to iterate over node children
Diffstat (limited to 'test/functional/lua/treesitter_spec.lua')
-rw-r--r--test/functional/lua/treesitter_spec.lua24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/functional/lua/treesitter_spec.lua b/test/functional/lua/treesitter_spec.lua
index b0ac9e079a..f8d7f30261 100644
--- a/test/functional/lua/treesitter_spec.lua
+++ b/test/functional/lua/treesitter_spec.lua
@@ -127,6 +127,30 @@ void ui_refresh(void)
}
}]]
+ it('allows to iterate over nodes children', function()
+ if not check_parser() then return end
+
+ insert(test_text);
+
+ local res = exec_lua([[
+ parser = vim.treesitter.get_parser(0, "c")
+
+ func_node = parser:parse():root():child(0)
+
+ res = {}
+ for node, field in func_node:iter_children() do
+ table.insert(res, {node:type(), field})
+ end
+ return res
+ ]])
+
+ eq({
+ {"primitive_type", "type"},
+ {"function_declarator", "declarator"},
+ {"compound_statement", "body"}
+ }, res)
+ end)
+
local query = [[
((call_expression function: (identifier) @minfunc (argument_list (identifier) @min_id)) (eq? @minfunc "MIN"))
"for" @keyword