aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Vigouroux <tomvig38@gmail.com>2020-10-08 21:31:09 +0200
committerThomas Vigouroux <tomvig38@gmail.com>2020-10-08 21:31:09 +0200
commit6f6c55717a8c15bdcfec01b8cdcb53b0b499d5d9 (patch)
tree6fb3dbafd8935b8fcfb8f8fca2ba77d0246f6daf /src
parentca6815115c79da62b845f479f0cdd765bdbfb700 (diff)
downloadrneovim-6f6c55717a8c15bdcfec01b8cdcb53b0b499d5d9.tar.gz
rneovim-6f6c55717a8c15bdcfec01b8cdcb53b0b499d5d9.tar.bz2
rneovim-6f6c55717a8c15bdcfec01b8cdcb53b0b499d5d9.zip
treesitter: check language ABI version on load
This is will avoid some issues at runtime.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/lua/treesitter.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/nvim/lua/treesitter.c b/src/nvim/lua/treesitter.c
index 44e743e911..33d9772bec 100644
--- a/src/nvim/lua/treesitter.c
+++ b/src/nvim/lua/treesitter.c
@@ -174,6 +174,14 @@ int tslua_add_language(lua_State *L)
return luaL_error(L, "Failed to load parser: internal error");
}
+ uint32_t lang_version = ts_language_version(lang);
+ if (lang_version < TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION) {
+ return luaL_error(
+ L,
+ "ABI version mismatch : expected %" PRIu32 ", found %" PRIu32,
+ TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION, lang_version);
+ }
+
pmap_put(cstr_t)(langs, xstrdup(lang_name), lang);
lua_pushboolean(L, true);