diff --git a/lua/crates/diagnostic.lua b/lua/crates/diagnostic.lua index 4f1bdbf..05d5393 100644 --- a/lua/crates/diagnostic.lua +++ b/lua/crates/diagnostic.lua @@ -244,7 +244,8 @@ end ---@return CrateInfo function M.process_api_crate(crate, api_crate, diagnostics) local versions = api_crate and api_crate.versions - local newest, newest_pre, newest_yanked = util.get_newest(versions, nil) + local allow_pre = semver.allows_pre(crate:vers_reqs()) + local newest, newest_pre, newest_yanked = util.get_newest(versions, nil, allow_pre) newest = newest or newest_pre or newest_yanked ---@type CrateInfo diff --git a/lua/crates/util.lua b/lua/crates/util.lua index 7b2d8a7..ca9bc4c 100644 --- a/lua/crates/util.lua +++ b/lua/crates/util.lua @@ -111,15 +111,16 @@ end ---@param versions ApiVersion[]? ---@param reqs Requirement[]? +---@param allow_pre boolean? -- fallback to use when `reqs` is nil ---@return ApiVersion? ---@return ApiVersion? ---@return ApiVersion? -function M.get_newest(versions, reqs) +function M.get_newest(versions, reqs, allow_pre) if not versions or not next(versions) then return nil end - local allow_pre = reqs and semver.allows_pre(reqs) or false + allow_pre = reqs and semver.allows_pre(reqs) or allow_pre or false ---@type ApiVersion?, ApiVersion?, ApiVersion? local newest_yanked, newest_pre, newest