aboutsummaryrefslogtreecommitdiff
path: root/test/functional/treesitter/parser_spec.lua
diff options
context:
space:
mode:
authorAmaan Qureshi <amaanq12@gmail.com>2023-07-19 05:02:49 -0400
committerLewis Russell <me@lewisr.dev>2023-08-31 13:33:40 +0100
commit845d5b8b64190e0e09a6a6dd97bdbc0e6f96eb02 (patch)
tree8c1116e6abe75c456f3a816cb633f76f7676016a /test/functional/treesitter/parser_spec.lua
parent4afd33e69f4c4a061bcb51a5ed437163262f943c (diff)
downloadrneovim-845d5b8b64190e0e09a6a6dd97bdbc0e6f96eb02.tar.gz
rneovim-845d5b8b64190e0e09a6a6dd97bdbc0e6f96eb02.tar.bz2
rneovim-845d5b8b64190e0e09a6a6dd97bdbc0e6f96eb02.zip
feat(treesitter): improve query error message
Diffstat (limited to 'test/functional/treesitter/parser_spec.lua')
-rw-r--r--test/functional/treesitter/parser_spec.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/functional/treesitter/parser_spec.lua b/test/functional/treesitter/parser_spec.lua
index 56af0c8738..37dde37a64 100644
--- a/test/functional/treesitter/parser_spec.lua
+++ b/test/functional/treesitter/parser_spec.lua
@@ -1055,4 +1055,44 @@ int x = INT_MAX;
]])
end)
+ it('fails to load queries', function()
+ local function test(exp, cquery)
+ eq(exp, pcall_err(exec_lua, "vim.treesitter.query.parse('c', ...)", cquery))
+ end
+
+ -- Invalid node type
+ test(
+ '.../query.lua:0: Query error at 1:2. Invalid node type "dentifier":\n'..
+ '(dentifier) @variable\n'..
+ ' ^',
+ '(dentifier) @variable')
+
+ -- Impossible pattern
+ test(
+ '.../query.lua:0: Query error at 1:13. Impossible pattern:\n'..
+ '(identifier (identifier) @variable)\n'..
+ ' ^',
+ '(identifier (identifier) @variable)')
+
+ -- Invalid syntax
+ test(
+ '.../query.lua:0: Query error at 1:13. Invalid syntax:\n'..
+ '(identifier @variable\n'..
+ ' ^',
+ '(identifier @variable')
+
+ -- Invalid field name
+ test(
+ '.../query.lua:0: Query error at 1:15. Invalid field name "invalid_field":\n'..
+ '((identifier) invalid_field: (identifier))\n'..
+ ' ^',
+ '((identifier) invalid_field: (identifier))')
+
+ -- Invalid capture name
+ test(
+ '.../query.lua:0: Query error at 1:30. Invalid capture name "ok.capture":\n'..
+ '((identifier) @id (#eq? @id @ok.capture))\n'..
+ ' ^',
+ '((identifier) @id (#eq? @id @ok.capture))')
+ end)
end)