1
0
mirror of https://github.com/lua/lua synced 2025-03-31 18:12:51 +03:00

Details in tests

- Added a test for calling 'debug.traceback' after yields inside
hooks. (Lua 5.3 seems to have a bug there.)

- Removed test "repeat test with '__open' metamethod instead of a
function", as the previous test already uses the '__open' metamethod.
(It changed when functions were removed as possible to-be-closed
variables).
This commit is contained in:
Roberto Ierusalimschy 2019-06-21 10:21:07 -03:00
parent e4b02ca8e4
commit 6b9490bd72
2 changed files with 10 additions and 18 deletions

@ -426,6 +426,10 @@ else
while A==0 or B==0 do -- A ~= 0 when 'x' finishes (similar for 'B','y')
if A==0 then turn = "A"; assert(T.resume(x)) end
if B==0 then turn = "B"; assert(T.resume(y)) end
-- check that traceback works correctly after yields inside hooks
debug.traceback(x)
debug.traceback(y)
end
assert(B // A == 7) -- fact(7) // fact(6)

@ -517,27 +517,15 @@ do
end
assert(s == 35 and numopen == 0)
-- repeat test with '__open' metamethod instead of a function
local function open (x)
numopen = numopen + 1
local state = setmetatable({x},
{__close = function () numopen = numopen - 1 end})
return
function (t) -- iteraction function
t[1] = t[1] - 1
if t[1] > 0 then return t[1] end
end,
state,
nil,
state -- to-be-closed
end
local s = 0
for i in open(10) do
if (i < 5) then break end
s = s + i
for j in open(10) do
if i + j < 5 then goto endloop end
s = s + i
end
end
assert(s == 35 and numopen == 0)
::endloop::
assert(s == 375 and numopen == 0)
end
print('OK')