aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/nvim/lua/vim.lua6
-rw-r--r--test/functional/fixtures/lua/syntax_error.lua1
-rw-r--r--test/functional/lua/vim_spec.lua15
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)