diff options
author | Jongwook Choi <wookayin@gmail.com> | 2024-02-12 21:38:37 -0500 |
---|---|---|
committer | Lewis Russell <me@lewisr.dev> | 2024-02-13 10:29:22 +0000 |
commit | 89135cff030b06f60cd596a9ae81cd9583987517 (patch) | |
tree | 4c7b32f5b90133b7149b24bf121e99b6324b6c6e /test/functional/lua/loader_spec.lua | |
parent | 309c36d3c9f80e2999b8a66c8a2a1ea640e84562 (diff) | |
download | rneovim-89135cff030b06f60cd596a9ae81cd9583987517.tar.gz rneovim-89135cff030b06f60cd596a9ae81cd9583987517.tar.bz2 rneovim-89135cff030b06f60cd596a9ae81cd9583987517.zip |
fix(loader): remove cyclic dependency on vim.fs (when --luamod-dev)
Problem: Loading `vim.fs` via the `vim.loader` Lua package loader will
result in a stack overflow due to a cyclic dependency. This may happen
when the `vim.fs` module isn't byte-compiled, i.e. when `--luamod-dev`
is used (#27413).
Solution: `vim.loader` depends on `vim.fs`. Therefore `vim.fs` should
be loaded in advance.
Diffstat (limited to 'test/functional/lua/loader_spec.lua')
-rw-r--r-- | test/functional/lua/loader_spec.lua | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/test/functional/lua/loader_spec.lua b/test/functional/lua/loader_spec.lua index cdb561330a..4e42a18405 100644 --- a/test/functional/lua/loader_spec.lua +++ b/test/functional/lua/loader_spec.lua @@ -3,10 +3,32 @@ local helpers = require('test.functional.helpers')(after_each) local exec_lua = helpers.exec_lua local command = helpers.command +local clear = helpers.clear local eq = helpers.eq describe('vim.loader', function() - before_each(helpers.clear) + before_each(clear) + + it('can work in compatibility with --luamod-dev #27413', function() + clear({ args = { '--luamod-dev' } }) + exec_lua [[ + vim.loader.enable() + + require("vim.fs") + + -- try to load other vim submodules as well (Nvim Lua stdlib) + for key, _ in pairs(vim._submodules) do + local modname = 'vim.' .. key -- e.g. "vim.fs" + + local lhs = vim[key] + local rhs = require(modname) + assert( + lhs == rhs, + ('%s != require("%s"), %s != %s'):format(modname, modname, tostring(lhs), tostring(rhs)) + ) + end + ]] + end) it('handles changing files (#23027)', function() exec_lua [[ |