do --- stack-overflow-test
local
f()
end
local err, s = xpcall(f, debug.traceback)
assert(err == false)
local first = string.match(s, "[^\n]+")
local line = debug.getinfo(f, "S").linedefined+1
assert(string.match(first, ":"..line..": stack overflow$"))
local n = 1
for _ in string.gmatch(s, "\n") do n = n + 1 end
assert(n == 1+1+11+1+10)
local
g(i)
end
local err, s = xpcall(g, debug.traceback, 1)
assert(err == false)
--[[
-- too slow
local function vtail(...)
return vtail(1, ...)
end
local err, s = xpcall(vtail, debug.traceback, 1)
assert(err == false)
--]]
local
vcall(1, ...)
end
local err, s = xpcall(vcall, debug.traceback, 1)
assert(err == false)
end