aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/loader.lua
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/lua/vim/loader.lua')
-rw-r--r--runtime/lua/vim/loader.lua18
1 files changed, 13 insertions, 5 deletions
diff --git a/runtime/lua/vim/loader.lua b/runtime/lua/vim/loader.lua
index 38b1e9fc0f..7f953adc21 100644
--- a/runtime/lua/vim/loader.lua
+++ b/runtime/lua/vim/loader.lua
@@ -5,7 +5,7 @@ local loaders = package.loaders
local M = {}
----@alias CacheHash {mtime: {sec:number, nsec:number}, size:number, type: string}
+---@alias CacheHash {mtime: {nsec: integer, sec: integer}, size: integer, type?: uv.aliases.fs_stat_types}
---@alias CacheEntry {hash:CacheHash, chunk:string}
---@class ModuleFindOpts
@@ -28,12 +28,11 @@ M.enabled = false
---@field _rtp string[]
---@field _rtp_pure string[]
---@field _rtp_key string
+---@field _hashes? table<string, CacheHash>
local Loader = {
VERSION = 3,
---@type table<string, table<string,ModuleInfo>>
_indexed = {},
- ---@type table<string, CacheHash>
- _hashes = {},
---@type table<string, string[]>
_topmods = {},
_loadfile = loadfile,
@@ -44,9 +43,13 @@ local Loader = {
}
--- @param path string
---- @return uv.fs_stat.result
+--- @return CacheHash
--- @private
function Loader.get_hash(path)
+ if not Loader._hashes then
+ return uv.fs_stat(path) --[[@as CacheHash]]
+ end
+
if not Loader._hashes[path] then
-- Note we must never save a stat for a non-existent path.
-- For non-existent paths fs_stat() will return nil.
@@ -163,13 +166,16 @@ end
---@return string|function
---@private
function Loader.loader(modname)
+ Loader._hashes = {}
local ret = M.find(modname)[1]
if ret then
-- Make sure to call the global loadfile so we respect any augmentations done elsewhere.
-- E.g. profiling
local chunk, err = loadfile(ret.modpath)
+ Loader._hashes = nil
return chunk or error(err)
end
+ Loader._hashes = nil
return '\ncache_loader: module ' .. modname .. ' not found'
end
@@ -373,7 +379,9 @@ function M.reset(path)
end
-- Path could be a directory so just clear all the hashes.
- Loader._hashes = {}
+ if Loader._hashes then
+ Loader._hashes = {}
+ end
end
--- Enables the experimental Lua module loader: