diff options
author | dm1try <me@dmitry.it> | 2020-12-08 01:47:28 +0300 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2020-12-10 10:53:28 +0100 |
commit | 3421485253eca065eb9b0a3031228313c278f435 (patch) | |
tree | d13b451545e31dcc3ce1c20f585cff50e45c604b | |
parent | 85bce4d13d405fe009428def4fbead54bb741008 (diff) | |
download | rneovim-3421485253eca065eb9b0a3031228313c278f435.tar.gz rneovim-3421485253eca065eb9b0a3031228313c278f435.tar.bz2 rneovim-3421485253eca065eb9b0a3031228313c278f435.zip |
runtime: propagate lua parsing errors while using "require"
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/nvim/lua/vim.lua | 6 | ||||
-rw-r--r-- | test/functional/fixtures/lua/syntax_error.lua | 1 | ||||
-rw-r--r-- | test/functional/lua/vim_spec.lua | 15 |
4 files changed, 21 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 78588fb3da..0b34639d32 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -659,7 +659,7 @@ endif() if(LUACHECK_PRG) add_custom_target(lualint - COMMAND ${LUACHECK_PRG} -q runtime/ src/ test/ + COMMAND ${LUACHECK_PRG} -q runtime/ src/ test/ --exclude-files test/functional/fixtures/lua/syntax_error.lua WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) else() add_custom_target(lualint false diff --git a/src/nvim/lua/vim.lua b/src/nvim/lua/vim.lua index 2c7ab46ffe..b20fbbf038 100644 --- a/src/nvim/lua/vim.lua +++ b/src/nvim/lua/vim.lua @@ -115,7 +115,8 @@ function vim._load_package(name) for _,path in ipairs(paths) do local found = vim.api.nvim_get_runtime_file(path, false) if #found > 0 then - return loadfile(found[1]) + local f, err = loadfile(found[1]) + return f or error(err) end end @@ -123,7 +124,8 @@ function vim._load_package(name) local path = "lua/"..trail:gsub('?',basename) local found = vim.api.nvim_get_runtime_file(path, false) if #found > 0 then - return package.loadlib(found[1]) + local f, err = package.loadlib(found[1]) + return f or error(err) end end return nil diff --git a/test/functional/fixtures/lua/syntax_error.lua b/test/functional/fixtures/lua/syntax_error.lua new file mode 100644 index 0000000000..8c0cf026ee --- /dev/null +++ b/test/functional/fixtures/lua/syntax_error.lua @@ -0,0 +1 @@ +- <= the syntax error diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua index e9e1f7ec12..e253db5297 100644 --- a/test/functional/lua/vim_spec.lua +++ b/test/functional/lua/vim_spec.lua @@ -1453,3 +1453,18 @@ describe('lua stdlib', function() end) end) end) + +describe('lua: require("mod") from packages', function() + before_each(function() + command('set rtp+=test/functional/fixtures') + end) + + it('propagates syntax error', function() + local syntax_error_msg = exec_lua [[ + local _, err = pcall(require, "syntax_error") + return err + ]] + + matches("unexpected symbol", syntax_error_msg) + end) +end) |