fix(vim.version): fix metatable for intersections #41615

Problem:
`vim.version.intersect()` returns tables with `VersionRange` (method
table) as their metatable. Although the calculated bounds are correct,
the results do not expose `VersionRange` methods.

Solution:
Construct intersection tables with `range_mt`, matching
`vim.version.range()`. Add assertions covering method access and
repeated intersection.
This commit is contained in:
Volodymyr Chernetskyi
2026-09-02 16:10:18 +02:00
committed by GitHub
parent a41d008666
commit 8321941ff2
2 changed files with 7 additions and 3 deletions

View File

@@ -167,8 +167,12 @@ describe('version', function()
eq(nil, vim.version.intersect(r2, r1))
else
local ref = vim.version.range(output)
eq(ref, vim.version.intersect(r1, r2))
eq(ref, vim.version.intersect(r2, r1))
local result1 = vim.version.intersect(r1, r2)
local result2 = vim.version.intersect(r2, r1)
eq(ref, result1)
eq(ref, result2)
assert(result1:has(result1.from))
eq(result1, vim.version.intersect(result1, r1))
end
end