mirror of
https://github.com/lua/lua
synced 2025-04-13 08:22: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:
parent
e4b02ca8e4
commit
6b9490bd72
@ -426,6 +426,10 @@ else
|
|||||||
while A==0 or B==0 do -- A ~= 0 when 'x' finishes (similar for 'B','y')
|
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 A==0 then turn = "A"; assert(T.resume(x)) end
|
||||||
if B==0 then turn = "B"; assert(T.resume(y)) 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
|
end
|
||||||
|
|
||||||
assert(B // A == 7) -- fact(7) // fact(6)
|
assert(B // A == 7) -- fact(7) // fact(6)
|
||||||
|
@ -517,27 +517,15 @@ do
|
|||||||
end
|
end
|
||||||
assert(s == 35 and numopen == 0)
|
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
|
local s = 0
|
||||||
for i in open(10) do
|
for i in open(10) do
|
||||||
if (i < 5) then break end
|
for j in open(10) do
|
||||||
s = s + i
|
if i + j < 5 then goto endloop end
|
||||||
|
s = s + i
|
||||||
|
end
|
||||||
end
|
end
|
||||||
assert(s == 35 and numopen == 0)
|
::endloop::
|
||||||
|
assert(s == 375 and numopen == 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
print('OK')
|
print('OK')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user