From 116a3f4683de501228b422f67cf1030bee78759c Mon Sep 17 00:00:00 2001 From: Chinmay Dalal Date: Fri, 22 Apr 2022 19:45:28 +0530 Subject: fix(treesitter): create new parser if language is not the same as cached parser (#18149) --- test/functional/treesitter/language_spec.lua | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'test/functional/treesitter/language_spec.lua') diff --git a/test/functional/treesitter/language_spec.lua b/test/functional/treesitter/language_spec.lua index afb17dd2cf..84e4fa5c49 100644 --- a/test/functional/treesitter/language_spec.lua +++ b/test/functional/treesitter/language_spec.lua @@ -2,6 +2,7 @@ local helpers = require('test.functional.helpers')(after_each) local clear = helpers.clear local eq = helpers.eq +local command = helpers.command local exec_lua = helpers.exec_lua local pcall_err = helpers.pcall_err local matches = helpers.matches @@ -67,5 +68,15 @@ describe('treesitter API', function() end eq({true,true}, {has_named,has_anonymous}) end) + + it('checks if vim.treesitter.get_parser tries to create a new parser on filetype change', function () + command("set filetype=c") + -- Should not throw an error when filetype is c + eq('c', exec_lua("return vim.treesitter.get_parser(0):lang()")) + command("set filetype=borklang") + -- Should throw an error when filetype changes to borklang + eq("Error executing lua: .../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers", + pcall_err(exec_lua, "new_parser = vim.treesitter.get_parser(0)")) + end) end) -- cgit From 6b0595d7ccb9dd212f6363b2b00769c93b61f396 Mon Sep 17 00:00:00 2001 From: James McCoy Date: Wed, 8 Jun 2022 18:04:25 -0400 Subject: test(ts): skip test if C parser is not available --- test/functional/treesitter/language_spec.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'test/functional/treesitter/language_spec.lua') diff --git a/test/functional/treesitter/language_spec.lua b/test/functional/treesitter/language_spec.lua index 84e4fa5c49..30585be328 100644 --- a/test/functional/treesitter/language_spec.lua +++ b/test/functional/treesitter/language_spec.lua @@ -70,6 +70,7 @@ describe('treesitter API', function() end) it('checks if vim.treesitter.get_parser tries to create a new parser on filetype change', function () + if pending_c_parser(pending) then return end command("set filetype=c") -- Should not throw an error when filetype is c eq('c', exec_lua("return vim.treesitter.get_parser(0):lang()")) -- cgit