Skip to content

Commit

Permalink
tests: Adjust conformance tests to account for array invariant (#1289)
Browse files Browse the repository at this point in the history
These were written before compiler optimizations and array invariant. It
is now impossible for t[1] to be stored in the hash part, as this would
violate the array invariant that says that elements 1..#t are stored in
the array.

For ipairs, it doesn't traverse the hash part anymore now, so we adjust
the code to make sure no elements outside of the 1..#t slice are
covered. For table.find, we can use find-with-offset to still access the
hash part.

Fixes #1283.
  • Loading branch information
zeux authored Jun 7, 2024
1 parent 23b8726 commit 81b2cc7
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 6 deletions.
7 changes: 3 additions & 4 deletions tests/conformance/basic.lua
Original file line number Diff line number Diff line change
Expand Up @@ -726,16 +726,15 @@ assert((function()
return sum
end)() == 15)

-- the reason why this test is interesting is that the table created here has arraysize=0 and a single hash element with key = 1.0
-- ipairs must iterate through that
-- ipairs will not iterate through hash part
assert((function()
local arr = { [1] = 42 }
local arr = { [1] = 1, [42] = 42, x = 10 }
local sum = 0
for i,v in ipairs(arr) do
sum = sum + v
end
return sum
end)() == 42)
end)() == 1)

-- the reason why this test is interesting is it ensures we do correct mutability analysis for locals
local function chainTest(n)
Expand Down
4 changes: 2 additions & 2 deletions tests/conformance/tables.lua
Original file line number Diff line number Diff line change
Expand Up @@ -412,8 +412,8 @@ do

assert(table.find({false, true}, true) == 2)

-- make sure table.find checks the hash portion as well by constructing a table literal that forces the value into the hash part
assert(table.find({[(1)] = true}, true) == 1)
-- make sure table.find checks the hash portion as well
assert(table.find({[(2)] = true}, true, 2) == 2)
end

-- test table.concat
Expand Down

0 comments on commit 81b2cc7

Please sign in to comment.