diff options
author | Thomas Vigouroux <tomvig38@gmail.com> | 2020-08-14 16:01:10 +0200 |
---|---|---|
committer | Thomas Vigouroux <tomvig38@gmail.com> | 2020-09-01 08:57:55 +0200 |
commit | 18217b987f79afa2f389262d7eb155b1c064f97c (patch) | |
tree | 2ed321fefd4c267d0f521e26aaf3ac76aaf3ff66 /test | |
parent | e123fd0a5dfbddc25cc872c6b4cf075a0c222bbe (diff) | |
download | rneovim-18217b987f79afa2f389262d7eb155b1c064f97c.tar.gz rneovim-18217b987f79afa2f389262d7eb155b1c064f97c.tar.bz2 rneovim-18217b987f79afa2f389262d7eb155b1c064f97c.zip |
treesitter: add node:field() to get field children
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/lua/treesitter_spec.lua | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/functional/lua/treesitter_spec.lua b/test/functional/lua/treesitter_spec.lua index f8d7f30261..12b0e6ef9f 100644 --- a/test/functional/lua/treesitter_spec.lua +++ b/test/functional/lua/treesitter_spec.lua @@ -151,6 +151,34 @@ void ui_refresh(void) }, res) end) + it('allows to get a child by field', 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) + + local res = {} + for _, node in ipairs(func_node:field("type")) do + table.insert(res, {node:type(), node:range()}) + end + return res + ]]) + + eq({{ "primitive_type", 0, 0, 0, 4 }}, res) + + local res_fail = exec_lua([[ + parser = vim.treesitter.get_parser(0, "c") + + return #func_node:field("foo") == 0 + ]]) + + assert(res_fail) + end) + local query = [[ ((call_expression function: (identifier) @minfunc (argument_list (identifier) @min_id)) (eq? @minfunc "MIN")) "for" @keyword |